0

MS Access VBA コードで奇妙な状況に直面しています。さまざまな Excel ファイルからデータをテーブルにインポートするためのボタンがいくつかあるフォームがあります。

フォームでは、2 つのボタンで同じ Excel ワークブックを別のシートで開く必要があります。これを行うために、ボタンの 1 つで次のサブルーチンを呼び出しました。

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

もう 1 つのサブルーチン (wind_wind) には、Excel ファイルを開くためのまったく同じコードがあります。solar_solar サブルーチンは正常に実行されますが、2 番目のサブルーチンを実行しようとすると、コードの実行が開始されず、「Object library feature not supported」(Fehler beim Kompilieren: Funktionsmerkmal der Objektbibliothek nicht unerstützt) というアラートが表示され、この線:

Set xlApp = CreateObject("Excel.Application")

これは、Windows 7 MS Access 2002 で発生します。このコードがあるサブルーチンでは正常に実行され、別のサブルーチンでは実行されないということが、実際には同じであるにもかかわらず、どのように可能であるかがわかりません。誰かが似たようなことを経験しましたか? 何かアドバイス?

ありがとう。

4

1 に答える 1

1

ライン ラベルのスコープはモジュール レベルであるため、ライン ラベルは各モジュールで 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

行ラベルと goto ステートメントを次のように変更します。

` Sub solar_solar(showNotification As Boolean) On Error GoTo solar_errorHandling '... solar_errorHandling: '... End Sub

Sub wind_wind(showNotification As Boolean)
  On Error GoTo wind_errorHandling
  '...
  wind_errorHandling:
  '...
End Sub

http://support.microsoft.com/kb/78335

于 2013-09-30T18:19:28.810 に答える