Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在名为窗体访问宏的Excel宏中调用Excel加载项_Excel_Ms Access_Vba_Excel Addins - Fatal编程技术网

无法在名为窗体访问宏的Excel宏中调用Excel加载项

无法在名为窗体访问宏的Excel宏中调用Excel加载项,excel,ms-access,vba,excel-addins,Excel,Ms Access,Vba,Excel Addins,我正在创建一个Access数据库,不同的客户端稍后应该存储在其中,目前它们存储在Excel工作簿中 我可以访问SQL数据库的数据(我不能在那里更改任何内容),当前Excel工作表从中获取客户机名称和其他信息,我也希望在我的access数据库中获得这些信息。问题是Excel只有一个接口可以连接到数据库。这是一个带有宏的Excel加载项,我无权访问其代码 我的解决方案是在Access中运行代码,在Excel工作表中调用宏,然后调用Addin宏。但它不起作用 它会成功地运行Excel宏,但当它尝试运行

我正在创建一个Access数据库,不同的客户端稍后应该存储在其中,目前它们存储在Excel工作簿中

我可以访问SQL数据库的数据(我不能在那里更改任何内容),当前Excel工作表从中获取客户机名称和其他信息,我也希望在我的access数据库中获得这些信息。问题是Excel只有一个接口可以连接到数据库。这是一个带有宏的Excel加载项,我无权访问其代码

我的解决方案是在Access中运行代码,在Excel工作表中调用宏,然后调用Addin宏。但它不起作用

它会成功地运行Excel宏,但当它尝试运行另一个Excel宏时失败。有时(当我更改Excel宏代码时情况有所不同),我在Access VBA编辑器中会出现以下错误:

运行时错误“-2147417851(80010105)”
对象“\u应用程序”的方法“运行”失败

注意:我已将文本从德语翻译成英语,因此可能不是准确的错误文本

有时我从Excel中得到一个错误,这意味着无法找到包含加载项宏的工作表,但加载项已安装,当我通过宏调试时,它工作正常

加载项已安装,我已使用for循环中的
Application.Addins(5).Name
进行检查

我已经搜索了2天了,我没有进一步的了解,我甚至还没有找到有同样问题的人

以下是我的访问VBA代码:

Public Sub getData(portfolioNumber As String)

Dim xlApp As Object

Dim sFile As String
Dim sClientName As String
Dim sOtherData As String

sFile = CurrentProject.Path & "\ImportSheet.xlsm"
Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open sFile
xlApp.Cells(5, 6).Value = portfolioNumber
xlApp.Cells(6, 6).Value = portfolioNumber

xlApp.Run "importAMSData"
sClientName = xlApp.Cells(8, 8).Value
sOtherData = xlApp.Cells(8, 9).Value
xlApp.Workbooks.Close

MsgBox (sClientName & " " & sOtherData)

Set xlApp = Nothing

End Sub
下面是我的Excel VBA代码,它应该调用另一个宏:

Public Sub importAMSData()

Dim iLastRow As Double
Dim iLastCol As Double
Dim dErrNo As Double

Dim ws As Worksheet
Dim wb As Workbook

Dim aAddin As AddIn

Dim wbOpen As Boolean

Set ws = ThisWorkbook.Sheets(1)

ws.Activate

iLastRow = ws.Cells(ws.Rows.Count, 2).End(xlUp).Row
iLastCol = ws.Cells(7, ws.Columns.Count).End(xlToLeft).Column

If iLastRow > 7 And iLastCol > 1 Then
ws.Range(ws.Cells(8, 1), ws.Cells(iLastRow, iLastCol)).ClearContents
End If

wbOpen = False

ws.Cells(1, 2).Select
默认情况下应该安装加载项,但在它不起作用后,我尝试重新安装它

Set aAddin = Application.AddIns.Add("C:\Program Files\Microsoft Office\Office14\XLSTART\SPEZM.xlam")

aAddin.Installed = True

Application.Run "SPEZM.xls!import"
我也尝试过:

aAddin.Application.Run "import"
通常(意味着如果没有发生其他错误,则始终如此)这里会出现一个错误,表示Excel没有找到Sheetname.xls,但已安装加载项。我已对此进行检查


感谢您的帮助,很抱歉问了这么长的问题。

哪一行出现故障?此处:应用程序。运行“SPEZM.xls!import”有时我会收到错误消息:“G:\SPEZM.xls”找不到。SPEZ.xls甚至不在我的G:硬盘上。我也尝试过按路径调用它,但效果并不好。请尝试完全限定宏的路径。所以(从内存中)完整的工作簿路径用单引号括起来,然后是解释标记,然后是宏名感叹号!上面的所有内容都用双引号括起来,如下所示:Application.Run“'C:\Program Files\Microsoft Office\Office14\XLSTART\SPEZM.xls'!import”