当サイトにご訪問ありがとうございます。
このページでは、VBAで他のブックを開いてデータをコピーする方法を解説しています。
毎日「Excelを開いてコピーするだけ」の業務があるなら、これだけで時間短縮です。
それほど難しくないので、ぜひ試してください。
サンプルコーディング
Sub sample()
Dim Wpath As String
'-- Pathを取得
Wpath = ThisWorkbook.Path
'-- データが保存されているブックを開く
Workbooks.Open Wpath & "\data"
'-- コピー元をコピー指定する
Workbooks("data").Sheets("sheet1").UsedRange.Copy
'-- コピー先に貼り付けを行う
Workbooks("sample").Sheets("sheet1").Cells(1, 1).PasteSpecial Paste:=xlPasteAll
'-- 他のブックを閉じる
Workbooks("data").Close
End Sub
前提条件
- VBAマクロを実行して、他のEXCELファイルを開きデータをコピーします。
- マクロが保存されているEXCELファイル名は「sample」です。
- マクロにより自動で開くファイル名は「data」です。
- コピー操作は「data」→「sample」となります。
- ふたつのファイルは同じフォルダに保存されています。
- ワークブックの内のワークシート名は「sheet1」です。
解説
pathの取得
Wpath = ThisWorkbook.Path
ブックを開くにはpathが必要です。
保存場所のpathを記述しても良いのですが、同じフォルダに保存するという前提条件なので、「ThisWorkbook」の「path」メソッドで取得できます。
このように記述しておけばファイルの保存場所が変わっても、コーディングを変える必要はありません。
取得したpathは変数「Wpath」に格納しておきます。
データが保存されているワークブックを開く
Workbooks.Open Wpath & “\data”
Openメソッドでワークブックを開きます。
ファイル名はフルパスで指定するので、上で格納した変数「Wpath」と”\data”を連結させて指定します。
拡張子は省略しています。
クリップボードにコピーする
Workbooks(“data”).Sheets(“sheet1”).UsedRange.Copy
Copyメソッドでクリップボードにコピーします。
コピー元ファイルは上で開いた「data」ファイルです。
UsedRangeプロパティを使うことでデータがある部分だけをコピーできます。
貼り付けを行う
Workbooks(“sample”).Sheets(“sheet1”).Cells(1, 1).PasteSpecial Paste:=xlPasteAll
PasteSpecialメソッドを使用してコピー先に貼り付けます。
コピー先ファイルはVBAが記述してある「sample」ファイルです、「ThisWorkbook」でも問題ありません。
貼り付けを行うには「Paste」メソッドもありますが、エラーが出るので「PasteSpecial」メソッドを使います。
「PastSpecial」は、「形式を指定して貼り付け」と同じ操作が可能です。
xlPasteAllは「全てを貼り付け」です。
値貼り付け( xlPasteValues)、書式貼り付け(xlPasteFormats)などの他の操作も可能です。
開いたブックを閉じる
Workbooks(“data”).Close
最後に、VBAマクロで開いたワークブックを閉じておきます。
VBAで閉じずに手作業で閉じても問題ありません。
VBAを学習するなら
<VBA書籍なら以下のページです>
入門から中級、上級までレベル別に紹介しています、よろしければ参考にしてください。
<udemyをご存知ですか?>
Udemy(ユーデミー)とは、210,000以上の講座があるオンライン学習プラットフォーム。おもに社会人が対象で、教えたい人が講座を開き、学びたい人が学べるサイトです。
自分に合った講座を試してみるのも楽しいですね。
<基礎から学ぶならスクールで>
VBAは一般的には簡単な言語だと言えますが、プログラミングの経験がない人には難しいかもしれないですね。
書籍などの独学でなかなか覚えられないのであれば、学習サイトスクールで基礎から習うのも手段です。