0

奇妙な問題があります。背景は次のとおりです。別のアプリケーションから Excel を自動化しています。「WorkbookSelection」という名前のユーザー フォームを作成し、そのフォームに「WorkbookList」という名前の Listbox コントロールと、「SelectionComplete」という名前のコマンド ボタンを配置しました。

フォームが表示される前に、Excel が開いていることを既に確認しており、リストボックスの目的は、開いているブックを Excel で表示して、ユーザーがデータのインポート元と新しいデータのエクスポート先を選択できるようにすることです。

リストボックスにデータを入力するために使用しようとしているコードは次のとおりです。

Private Sub WorkbookSelection_Initialize()

Dim ExcelAp                 As Excel.Application
Dim FedExWkbk               As Excel.Workbook
Dim OpenedWorkbooks         As Excel.Workbooks
Dim i                       As Integer

Set ExcelAp = Excel.Application
Set OpenedWorkbooks = ExcelAp.Workbooks

For Each FedExWkbk In OpenedWorkbooks
    WorkbookList.AddItem FedExWkbk.Name
Next FedExWkbk

End Sub

私も試してみました

Private Sub WorkbookSelection_Activate()

Private Sub UserForm_Initialize()

しかし、運はありません。誰かに提案があれば、私はすべて耳にします。

4

1 に答える 1

0

わかりました、ここで解決策を見つけました。サブをステップ実行した後、開いているワークブックを循環していないことに気付きました。そのため、Excel の適切なインスタンスを取得していないにもかかわらず、独自のインスタンスを作成していないという問題がありました。そのため、次の 1 行を遅延バインディングに変更しました。

Set ExcelAp = Excel.Application

Set ExcelAp = GetObject(, "Excel.Application")

そして見よ、それはうまくいく。将来、この状況に対する答えを探す可能性のある人のために、これをここに残しておくと思いました.

于 2013-09-13T17:23:45.523 に答える