1

これは簡単なはずですが、行き詰まっています。

Excel で 40 ページ以上のレポートを作成する VBA スクリプトを Access で実行しています。

アーリー バインディングを使用して Excel アプリケーション オブジェクトを作成しています。

Public obj_xl As New Excel.Application

オブジェクトを参照する方法の例を次に示します。

With obj_xl
  .Workbooks.Add
  .Visible = True
  .Sheets.Add
  .blahblahblah
End With

問題は、プロシージャが大きくなりすぎたため、コードを個別のモジュールに分割する必要があることです。

作成されたモジュールとは異なるモジュールから Excel アプリケーション オブジェクトを参照しようとすると、エラー ("あいまいな名前") がスローされます。

Win APIで何かできると確信していますが、それはやり過ぎのようです。

何かご意見は?ありがとう

4

2 に答える 2

1

これは、エラー「あいまいな名前」を引き起こす可能性のある状況です。

Function Split(s As String) 
    MsgBox s 
End Function 
Function Split(s As String) 
    MsgBox s 
End Function 

例が些細なものであることはわかっていますが、探しているのは、同じ名前の関数、オブジェクト、および/またはフォーム コントロールです。

于 2012-08-01T21:16:46.753 に答える
0

宣言をグローバルに変換すると、すべてのモジュールでそれを参照できます。たとえば、1つのモジュールで、これを一番上に配置します。

Global obj_xl As Excel.Application

次に、別のモジュールで、

Sub xx()
     Set obj_xl = New Excel.Application
     Debug.Print obj_xl.Name
End Sub
于 2012-08-01T21:27:07.100 に答える