我的MS Access VBA代码遇到了一个奇怪的情况。我有一个带有几个按钮的表单,用于将数据导入来自不同Excel文件的表。
在表单中,2个按钮必须打开相同的Excel工作簿但不同的工作表。为此,我在其中一个按钮中调用了以下子程序:
Sub solar_solar(showNotification As Boolean)
Dim xlApp As Excel.Application
Dim eexWB As Workbook
Dim updatedDates As String
Dim insertedDates As String
On Error GoTo errorHandling
' open excel application and source file
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.DisplayAlerts = False
Set eexWB = xlApp.Workbooks.Open(c_sourceFile_solar, False, True)
' update records
updatedDates = updateWindOrSolarRecords(eexWB, cWindSheet, cStartRowWind, cStartColWind, c_sql_WindTable)
' more code ...
End Sub
其他子例程(wind_wind)与打开excel文件的代码完全相同。 solar_solar子例程运行得很好,但是当我尝试运行第二个时,代码没有开始执行,我收到警告:“不支持对象库功能”(Fehler beim Kompilieren:Funktionsmerkmal der Objektbibliotheknichtunerstützt)并指出这一行:
Set xlApp = CreateObject("Excel.Application")
这种情况发生在Windows 7 MS Access 2002中。我不明白这个代码如何在一个子程序中运行良好而在另一个子程序中运行良好,而它实际上是相同的。有没有人经历类似的事情?有什么建议吗?
感谢。
答案 0 :(得分:1)
线条标签可能只在每个模块中出现一次,因为线条标签范围是模块级别。您需要确保每个单行标签在任何给定模块中都是唯一的。
目前你有类似的东西:
Sub solar_solar(showNotification As Boolean)
On Error GoTo errorHandling
'...
errorHandling:
'...
End Sub
Sub wind_wind(showNotification As Boolean)
On Error GoTo errorHandling
'...
errorHandling: 'This is bad!
'...
End Sub
将行标签和转到语句更改为如下所示:
` Sub solar_solar(showNotification As Boolean) On Error GoTo solar_errorHandling ” ... solar_errorHandling: ” ... 结束子
Sub wind_wind(showNotification As Boolean)
On Error GoTo wind_errorHandling
'...
wind_errorHandling:
'...
End Sub