MENU

【マクロVBA】新しいワークブックを作成し、そこにデータを張り付ける方法

【マクロVBA】新しいワークブックを作成し、そこにデータを張り付ける方法

エクセルでは、新しいワークブックを作成する時があります。

今回はVBAを使用して、新しいワークブックを作成する方法を解説します。

       

目次

【マクロVBA】新しいワークブックを作成し、そこにデータを張り付ける方法

       

エクセルのVBAを使用して、新しいワークブックを作成し、名前を「test」とします。

そして、元のワークブックの範囲(“A1”)にあるデータを新しい「test」ワークブックの範囲(“A1”)に貼り付けるコードを作ってみました。

      

Sub CreateWorkbookAndCopyData()
    Dim originalWorkbook As Workbook
    Dim newWorkbook As Workbook
    Dim originalRange As Range
    Dim newRange As Range
    Dim desktopPath As String

    ' 元のワークブックと範囲を設定
    Set originalWorkbook = ThisWorkbook
    Set originalRange = originalWorkbook.Worksheets(1).Range("A1")

    ' 新しいワークブックを作成
    Set newWorkbook = Workbooks.Add

    ' デスクトップのパスを取得
    desktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")

    ' 新しいワークブックの名前を変更し、デスクトップに保存
    newWorkbook.SaveAs desktopPath & "\test.xlsx"

    ' 新しいワークブックの範囲を設定
    Set newRange = newWorkbook.Worksheets(1).Range("A1")

    ' 元のワークブックのデータを新しいワークブックにコピー
    originalRange.Copy Destination:=newRange

    ' 新しいワークブックを保存して閉じる
    newWorkbook.Save
    newWorkbook.Close

End Sub

      

このコードは、新しいワークブックをデスクトップに保存し、その後ワークブックを閉じています。

詳しく解説します。

     

元のワークブックと範囲を設定

    ' 元のワークブックと範囲を設定
    Set originalWorkbook = ThisWorkbook
    Set originalRange = originalWorkbook.Worksheets(1).Range("A1")

      

この部分のコードは、元のワークブックと範囲を設定するためのものです。

それぞれの行の詳細を以下に説明します。

      

説明
  1. Set originalWorkbook = ThisWorkbook: この行は、originalWorkbook という変数に現在実行中のワークブック(コードが実行されているワークブック)を代入しています。ThisWorkbook は、VBA コードが含まれている現在のワークブックを参照するためのキーワードです。

  2. Set originalRange = originalWorkbook.Worksheets(1).Range("A1"): この行は、originalRange という変数に、元のワークブックの最初のワークシート(Worksheets(1))のセル A1 の範囲を代入しています。originalWorkbook.Worksheets(1) は、元のワークブックの最初のワークシートを参照しており、.Range("A1") はそのワークシートの A1 セルを指定しています。

     

この2行のコードにより、元のワークブックおよびそのワークシートのセル A1 が適切に参照され、後続のコードでこれらのオブジェクトを使用して操作を実行することができます。

      

新しいワークブックを作成

    ' 新しいワークブックを作成
    Set newWorkbook = Workbooks.Add

      

こコードは、新しいワークブックを作成するためのものです。

Workbooks.Add は、新しいワークブックを作成するExcel VBAメソッドです。

このメソッドを実行すると、新しい空白のワークブックが作成されます。そして、Set newWorkbook でこの新しいワークブックを newWorkbook という変数に代入しています。

     

この結果、newWorkbook 変数を使って新しく作成されたワークブックに対して操作を行うことができます。

後続のコードでは、この新しいワークブックの名前を変更したり、データをコピーしたり、保存して閉じたりするために、newWorkbook 変数が使用されています。

      

setステートメントについては、以下の記事をご覧下さい。

    

       

デスクトップのパスを取得

    ' デスクトップのパスを取得
    desktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")

      

この行のコードは、デスクトップのファイルパスを取得するためのものです。

      

説明
  1. CreateObject("WScript.Shell"): CreateObject 関数は、指定されたオブジェクトタイプの新しいインスタンスを作成するために使用されます。この場合、"WScript.Shell" オブジェクトが作成されます。WScript.Shell オブジェクトは、Windows スクリプトホスト環境でのシェル操作を提供します。これにより、特殊なフォルダへのアクセスやシステム設定の取得などが可能になります。

  2. .SpecialFolders("Desktop"): SpecialFolders プロパティは、シェルの特殊フォルダへのパスを取得するために使用されます。この場合、"Desktop" を引数として渡しているため、デスクトップのファイルパスが取得されます。

      

このコードの実行結果として、desktopPath という変数にデスクトップのファイルパスが格納されます。

後続のコードでは、このファイルパスを使用して新しいワークブックをデスクトップに保存しています。

      

新しいワークブックの名前を変更し、デスクトップに保存

    ' 新しいワークブックの名前を変更し、デスクトップに保存
    newWorkbook.SaveAs desktopPath & "\test.xlsx"

     

この行のコードは、新しいワークブックの名前を変更してデスクトップに保存するためのものです。

      

説明
  1. newWorkbook.SaveAs: SaveAs メソッドは、ワークブックを新しいファイルとして保存するために使用されます。引数として、新しいファイルのフルパスを指定することで、その場所にファイルが保存されます。

  2. desktopPath & "\test.xlsx": desktopPath は前述のコードで取得したデスクトップのファイルパスで、& "\test.xlsx" はそのパスに「test.xlsx」というファイル名を追加しています。これにより、新しいワークブックがデスクトップに「test.xlsx」という名前で保存されるようになります。

      

ワークブックのデータを新しいワークブックへコピー

    ' 新しいワークブックの範囲を設定
    Set newRange = newWorkbook.Worksheets(1).Range("A1")

    ' 元のワークブックのデータを新しいワークブックにコピー
    originalRange.Copy Destination:=newRange

       

この部分のコードは、新しいワークブックの範囲を設定し、元のワークブックのデータを新しいワークブックにコピーするためのものです。

      

説明
  1. Set newRange = newWorkbook.Worksheets(1).Range("A1"): この行は、newRange という変数に新しいワークブックの最初のワークシート(Worksheets(1))のセル A1 の範囲を代入しています。newWorkbook.Worksheets(1) は、新しいワークブックの最初のワークシートを参照しており、.Range("A1") はそのワークシートの A1 セルを指定しています。

  2. originalRange.Copy Destination:=newRange: この行は、originalRange に格納されている元のワークブックのセル A1 のデータを、newRange に格納されている新しいワークブックのセル A1 にコピーしています。Copy メソッドは、範囲内のデータをコピーするために使用され、Destination 引数にコピー先の範囲を指定します。

      

この2行のコードにより、新しいワークブックの A1 セルに元のワークブックの A1 セルのデータがコピーされます。

      

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次