6

VBAで他のスプレッドシートを開いて、一時的にアクティブに設定するスプレッドシートがありworksheetます。

ただし、ループがあり、最初の反復の最後に、アクティブなワークシートをVBAモジュールを開始した元のワークシートに設定する必要があります。Workbookオリジナルはまだバックグラウンドで開いていて、すでに開いていると表示されているため、新しいオブジェクトを設定してオリジナルを開くことができません。

私の問題は、Workbookそれを参照するためのブックオブジェクトがなかったときに、アクティブを元のアクティブに変更する必要があることです。

'Original workbook is active implicitly

'loop begins

'change active workbook to something else


'Need to change back to original workbook here- but don't have a VBA workbook object

'end of loop
4

1 に答える 1

19

ThisWorkbookコードを保持する元のワークブックを参照するを使用します。

または、コード開始時

Dim Wb As Workbook
Set Wb = ActiveWorkbook

に戻る前に開いているすべての本をアクティブ化するサンプルコードThisWorkbook

Sub Test()
Dim Wb As Workbook
Dim Wb2 As Workbook
Set Wb = ThisWorkbook
For Each Wb2 In Application.Workbooks
    Wb2.Activate
Next
Wb.Activate
End Sub
于 2012-09-12T11:15:29.713 に答える