《 ファイル操作について 》
VBAを用いて、Excel上の特定のファイルを開いて、それらを別のワークシートへコピーし貼り付けることができます。
VBAでのワークブックの操作は、同時に複数のワークブックを開いてワークシートへデータの入力をする場合やワークブックを次から次へと移動して処理をする場合に用います。
◎ここが便利
ひとつひとつ入力しなくて良くなるので作業効率アップできます!
主な作業内容としては
- ファイルを開く
- ファイルの内容をコピーして貼り付ける
- ファイルを実行する
- ファイルを閉じる
という事が挙げられます。
《 各作業のやり方 》
①ファイルを開く
Sub fileopen()
Dim filelocation
filelocation = "E:\中田ゼミ\files\"
Workbooks.Open filelocation & "sample1.xlsx" ’「中田ゼミ」というFILEを開く
End Sub
※最もエラーになりやすい操作のひとつ
・対象のファイル"E:\中田ゼミ\files\"が存在するかどうかを確認
・同名のブックを開いていないかを確認
②FILEを実行し、コピーして貼り付けする
Workbooks("sample1.xlsx").Activate ’sample1を実行する
data = Cells(2, 2) ’sample1のCells(2, 2)の内容をコピーする
Workbooks("ファイル取り込み配布用.xlsm").Activate
’ファイル取り込み配布用.xlsmを実行する
Cells(3, 3) = data
’ファイル取り込み配布用.xlsmのCells(3, 3)に貼り付ける
③ファイルを閉じる
Sub fileclose() 'FILEを閉じる
Workbooks("sample1.xlsx").Activate
ActiveWorkbook.Close (savechanges = True) '変更を保存しないで閉じる
Workbooks("sample1.xlsx").Close (savechanges = False) ’変更を保存して閉じる
End Sub
《応用編 》
行ごとコピーしたい場合は、For~nextステートメントを用いると簡単に操作を行うことができます。
Sub filetorikomi()
Dim filelocation
Dim data(51), a
For a = 2 To 51
filelocation = "E:\中田ゼミ\files\"
Workbooks.Open filelocation & "sample1.xlsx"
Workbooks("sample1.xlsx").Activate
data(a) = Cells(a, 2)
Workbooks("ファイル取り込み配布用.xlsm").Activate
Cells(a + 3, 3) = data(a)
3sa
Next a
End Sub
《 ファイルの新規保存について 》
ファイルに名前をつけて保存をする場合は、ActiveSheet.Copyというコードを使用します。
Sub Copy()
Dim Name
ActiveSheet.Copy '新しいブックへコピー
Name = "sample_new" ’保存名を設定
ActiveWorkbook.SaveAs FileName:=Name, FileFormat:=xlWorkbookDefault
'現在のファイルをNameという名前の別のファイルとして保存する
End Sub
《 練習問題 》
①以下のコードをfor~ nextループを用いて表しなさい
Sub fileopen()
Dim filelocation
filelocation = "E:\中田ゼミ\files\"
Workbooks.Open filelocation & "sample1.xlsx"
Workbooks.Open filelocation & "sample2.xlsx"
Workbooks.Open filelocation & "sample3.xlsx"
Workbooks.Open filelocation & "sample4.xlsx"
Workbooks.Open filelocation & "sample5.xlsx"
Workbooks("sample1.xlsx").Activate
ActiveWorkbook.Close (savechanges = False)
Workbooks("sample2.xlsx").Activate
ActiveWorkbook.Close (savechanges = False)
Workbooks("sample3.xlsx").Activate
ActiveWorkbook.Close (savechanges = False)
Workbooks("sample4.xlsx").Activate
ActiveWorkbook.Close (savechanges = False)
Workbooks("sample5.xlsx").Activate
ActiveWorkbook.Close (savechanges = False)
End Sub
《 解答 》
Sub fileopen()
Dim filelocation, a
filelocation = "E:\中田ゼミ\files\"
for a = 1 to 5
Workbooks.Open filelocation & "sample” + a + “.xlsx"
Next a
For a = 1 To 5
Workbooks("sample”+ a + ”.xlsx").Activate
ActiveWorkbook.Close (savechanges = False)
Next a
End Sub
参考文献
近田順一郎、しっかり学ぶExcelVBA標準テキスト、技術評論会
Office TANAKA
http://officetanaka.net/excel/vba/file/file01.htm
コメント
最新を表示する
「ファイル取り込み配布用.xlsmのCells(3, 3)に貼り付ける」
→ 「ファイル取り込み配布用.xlsmのCells(3, 3)に、変数dataの中身を貼り付ける」
「sample1を実行する」、「ファイル取り込み配布用.xlsmを実行する」ですが、「sample1をアクティブ化する」、「ファイル取り込み配布用.xlsmをアクティブ化する」に修正してください
「対象のファイル"E:\中田ゼミ\files\"が存在するかどうかを確認」とありますが、"E:\中田ゼミ\files\"はファイルの名前ではなくて、ファイルが入っているフォルダの名前ですね
「「中田ゼミ」というFILEを開く」ではなくて、「"E:\中田ゼミ\files\"という場所にある"sample1.xlsx"というファイルを開く」に修正お願いします
NG表示方式
NGID一覧