Vba: 別のブックからデータを抽出する方法


VBA で次の構文を使用して、別のブックからデータを抽出できます。

 SubExtractData ()
    
    'turn off screen updates to make this run faster
    Application.ScreenUpdating = False
    
    'specify workbook we want to extract data from
    Set wb = Workbooks.Open(" C:\Users\bobbi\OneDrive\Desktop\my_data.xlsx ")
    
    'extract all data from Sheet1 and paste as new sheet in current workbook
    wb.Sheets(" Sheet1 ").Copy After:=ThisWorkbook.Sheets(1)
    
    'do not save any changes to workbook we extract data from
    wb.Close SaveChanges:=False
    
    'turn screen updating back on
    Application.ScreenUpdating = True
    
End Sub

この特定のマクロは、次の場所にあるmy_data.xlsxというワークブックを開きます。

C:\ユーザー\ボブ\デスクトップ\my_data.xlsx

次に、 Sheet1というシートのすべてのデータをこのブックにコピーし、現在アクティブなブックの最初のシートの直後のシートにコピーします。

: Application.ScreenUpdating = False行は、より高速に実行されるように、このプロセスをバックグラウンドで実行するように VBA に指示します。

次の例は、この構文を実際に使用する方法を示しています。

例: VBA を使用して別のワークブックからデータを抽出する

次の Excel ワークブックを開いて表示しているとします。

次に、別のワークブックが閉じられているが、次のデータが含まれているとします。

次のマクロを使用して、この閉じたブックのシート 1からデータを抽出し、現在開いているブックの最初のシートの直後に新しいシートに貼り付けることができます。

 SubExtractData ()
    
    'turn off screen updates to make this run faster
    Application.ScreenUpdating = False
    
    'specify workbook we want to extract data from
    Set wb = Workbooks.Open(" C:\Users\bobbi\OneDrive\Desktop\my_data.xlsx ")
    
    'extract all data from Sheet1 and paste as new sheet in current workbook
    wb.Sheets(" Sheet1 ").Copy After:=ThisWorkbook.Sheets(1)
    
    'do not save any changes to workbook we extract data from
    wb.Close SaveChanges:=False
    
    'turn screen updating back on
    Application.ScreenUpdating = True
    
End Sub

このマクロを実行すると、次の出力が表示されます。

閉じたワークブックのデータが抽出され、新しいシートとして現在アクティブなワークブックに貼り付けられていることに注意してください。

新しいシートの名前は現在のシートと同じなので、自由に変更してください。

追加リソース

次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。

VBA: ワークブック内のシート数を数える方法
VBA: 複数の列を挿入する方法
VBA: 複数行を挿入する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です