別ファイルのデータをアクティブシートにインポートする
これは、指定したファイルの “Sheet1″からA1:D10の範囲をアクティブワークシートにコピーして貼り付けるエクセルマクロです。必要に応じて、範囲を変更してください。
Sub ImportData()
    '1. データをインポートしたいワークシートをアクティブにします。
    ActiveSheet.Select
    
    '2. インポートするファイルを選択するためのダイアログボックスを表示します。
    Dim fileName As Variant
    fileName = Application.GetOpenFilename("Excel Files (*.xlsx), *.xlsx")
    
    '3. 選択されたファイルを開きます。
    Workbooks.Open fileName
    
    '4. インポートするワークシートを選択します。
    Dim importSheet As Worksheet
    Set importSheet = Workbooks(fileName).Worksheets("Sheet1")
    
    '5. データをコピーし、アクティブワークシートに貼り付けます。
    importSheet.Range("A1:D10").Copy Destination:=ActiveSheet.Range("A1")
    
    '6. インポートが完了したら、開いたファイルを閉じます。
    Workbooks(fileName).Close SaveChanges:=False
MsgBox "完了"
End Sub解説
- データをインポートしたいワークシートをアクティブにします。
- ActiveSheet.Selectによって、現在アクティブなシートを選択します。
 
- インポートするファイルを選択するためのダイアログボックスを表示します。
- Application.GetOpenFilenameを使用して、ダイアログボックスを表示します。
- Excel Files (*.xlsx), *.xlsxは、ファイルの種類を指定するためのフィルターであり、Excelファイルのみを表示するようにフィルタリングされます。
- 選択されたファイル名が、fileName変数に代入されます。
 
- 選択されたファイルを開きます。
- Workbooks.Openを使用して、- fileNameで指定されたファイルを開きます。
 
- インポートするワークシートを選択します。
- Workbooks(fileName).Worksheets("Sheet1")を使用して、インポートするシートを選択します。
 
- データをコピーし、アクティブワークシートに貼り付けます。
- importSheet.Range("A1:D10").Copyを使用して、インポートする範囲をコピーします。
- ActiveSheet.Range("A1").PasteSpecialを使用して、コピーした範囲をアクティブワークシートに貼り付けます。
 
- インポートが完了したら、開いたファイルを閉じます。
- Workbooks(fileName).Closeを使用して、開いたファイルを閉じます。
- SaveChanges:=Falseによって、変更を保存しないように指定されます。
 
- 最後に、MsgBox "完了"を使用して、処理が正常に終了したことをユーザーに通知します。
別の構文1
Sub ImportExcelFile()
    Dim filePath As String
    filePath = "C:\path\to\file.xlsx" ' インポートするファイルのパスを指定
    
    Workbooks.Open filePath ' ファイルを開く
    
    Dim sourceSheet As Worksheet
    Set sourceSheet = ActiveWorkbook.Sheets(1) ' インポート元のシートを選択
    
    Dim targetSheet As Worksheet
    Set targetSheet = ActiveSheet ' インポート先のシートを選択
    
    sourceSheet.UsedRange.Copy ' インポート元の範囲をコピー
    
    targetSheet.Range("A1").PasteSpecial xlPasteValues ' インポート先のセルに貼り付け
    
    Application.CutCopyMode = False ' コピーを解除
    
    ActiveWorkbook.Close SaveChanges:=False ' ファイルを閉じる
MsgBox "完了"
End Sub解説
- 変数 filePathにインポートするExcelファイルのパスを文字列として設定します。
- Workbooks.Openメソッドで、ファイルを開きます。引数には、ファイルのパスを指定します。
- 変数 sourceSheetに、開いたファイルの1つ目のシートをセットします。ActiveWorkbook.Sheets(1)は、開いたファイルの1つ目のシートを選択するためのコードです。
- 変数 targetSheetに、アクティブなシートをセットします。このマクロが実行された時にアクティブなシートがインポート先になります。
- sourceSheet.UsedRange.Copyを使用して、インポート元の範囲をコピーします。- UsedRangeは、データが入力されている範囲を示すプロパティです。
- targetSheet.Range("A1").PasteSpecial xlPasteValuesで、インポート先のセルに貼り付けます。ここでは値だけを貼り付けるために- xlPasteValuesを使用しています。
- Application.CutCopyMode = Falseで、コピーを解除します。
- ActiveWorkbook.Close SaveChanges:=Falseで、開いたファイルを閉じます。- SaveChanges:=Falseを指定することで、保存せずに閉じることができます。
- MsgBox "完了"で、実行完了のメッセージを表示します。
別の構文2
*アクティブシートの右隣に別ブックのシートをインポート
*ハイライトの箇所を変更して活用してください
Sub アクティブシートの右隣に別ブックのシートをインポート()
'このファイル
Dim wb1 As Workbook
    Set wb1 = ThisWorkbook
Dim ws1 As Worksheet
    Set ws1 = wb1.ActiveSheet   
   
'相手ファイル(インポートファイル)
Dim FName As String
MsgBox "「インポートファイル」選択"
FName = Application.GetOpenFilename("Microsoft Excelブック,*.xls*") 
If FName <> "False" Then
    Dim wb2 As Workbook
        Set wb2 = Workbooks.Open(FName)
    Dim ws2 As Worksheet
        Set ws2 = wb2.Worksheets(1)
        
    Else
        GoTo Skip
    End If
ActiveWindow.SelectedSheets.Copy After:=ws1
ActiveSheet.Name = "Import" & "_" & VBA.Format(Now(), "h時mm分ss秒")
    
Skip:
    
'相手ファイル閉じる
Application.CutCopyMode = False  
wb2.Close savechanges:=False
MsgBox "完了"
End Sub解説
- 前提)別ファイルのエクセルシートを取り込むエクセルファイルを開く
- 6~7行目:特定シートを選択してアクティブにする
 *アクティブシートの右隣のシートに取り込みます。(24行目表記)
 補足)シートを指定する場合は、以下の”Sheet1”の箇所を変更
Set ws1 = wb1.Worksheets("Sheet1")- 12行目:取り込むファイルはダイアログを開いて選択
 *開くファイルはエクセルのみ指定(“Microsoft Excelブック,.xls“)
- 18行目:取り込むファイルのシートはWorksheets(1)と指定
 参考)異なるシートを取り込む場合は、上記 Worksheets(1) を変更
- 21行目:ダイアログ表示時のエラー処理(ファイルを選択しないで閉じた場合など)
 GoTo Skip~Skip(30行目):で完了のメッセージを表示
- 24行目:選択しているシートの右隣り(After)に取り込み
 参考1)左隣りを指定する場合は以下の通り
 ActiveWindow.SelectedSheets.Copy Before:=ws1
 参考2)文末にコピーする場合
 ActiveWindow.SelectedSheets.Copy After:ThisWorkbook.ActiveSheet(ThisWorkbook.ActiveSheet.Worksheets.Count)
- 26行目:シートの名前をつける
 *ここでは Import+日付 で名前をつけています
 *任意のシート名の変更は、この箇所 ” シート名” (カンマの中) を変更
- 28行目:任意のセルを選択
 *ここでは Range(“A1”) を選択
- 33行目:コピーモード解除
- 34行目:取り込み済みの相手ファイルを閉じる
- 35行目:メッセージボックスに完了と表示
別のエクセルファイルからシートをアクティブシートに貼り付ける方法
Sub PasteSheetFromAnotherWorkbook()
    'コピー元のファイルを指定する
    Dim sourceWorkbook As Workbook
    Set sourceWorkbook = Workbooks.Open("C:\path\to\source\file.xlsx")
    
    'コピー元のシートを指定する
    Dim sourceSheet As Worksheet
    Set sourceSheet = sourceWorkbook.Worksheets("Sheet1")
    
    'コピー元のシートをコピーする
    sourceSheet.Copy Before:=ThisWorkbook.Sheets(1)
    
    'コピー元のファイルを閉じる
    sourceWorkbook.Close SaveChanges:=False
End Sub解説
上記のコードでは、という変数にコピー元のエクセルファイルを、という変数にコピー元のシートを指定しています。次に、メソッドを使用して、コピー元のシートをアクティブシートの前にコピーしています。最後に、メソッドを使用して、コピー元のファイルを閉じています。sourceWorkbooksourceSheetsourceSheet.CopysourceWorkbook.Close
このコードを実行する前に、コピー元のエクセルファイルのパスと、コピー元のシートの名前を適宜変更してください。また、アクティブシートの前にコピーしたい場所が異なる場合には、の部分を適宜変更してください。

 
  
  
  
  

コメント