《 ファイル操作について 》
-
VBAを用いて、Excel上の特定のファイルを開いて、それらを別のワークシートへコピーし貼り付けることができます。
-
VBAでのワークブックの操作は、同時に複数のワークブックを開いてワークシートへデータの入力をする場合やワークブックを次から次へと移動して処理をする場合に用います。
◎ここが便利
ひとつひとつ入力しなくて良くなるので作業効率アップできます!
主な作業内容としては
①ファイルを開く
②ファイルをアクティブ化する
③ファイルの内容をコピーして貼り付ける
④ファイルを閉じる
という事が挙げられます。
《 各作業のやり方 》
①ファイルを開く
Sub fileopen()
Dim filelocation
filelocation = "E:\中田ゼミ\files\"
Workbooks.Open filelocation & "sample1.xlsx"
’「中田ゼミfiles」という名前のフォルダにある"sample1"というファイルを開く
End Sub
※最もエラーになりやすい操作のひとつ
・対象のファイルが存在するかどうかを確認
・同名のブックを開いていないかを確認
②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)に変数dataの中身を貼り付ける
④ファイルを閉じる
Sub fileclose() 'FILEを閉じる
Workbooks("sample1.xlsx").Activate
ActiveWorkbook.Close (savechanges = True) '変更を保存しないで閉じる
Workbooks("sample1.xlsx").Close (savechanges = False) ’変更を保存して閉じる
End Sub
《 応用編 》
基本操作ではセル1つを別のワークシートに貼り付ける方法を紹介しましたが、行ごとコピーしたい場合は、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)
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
コメント
最新を表示する
最初に主な作業を提示してから各作業の説明があるので、見ていて今どこの作業をしているのかが分かりやすかった。
よかった点
ひとつひとつ丁寧に説明されているのでわかりやすかった。
また、エラーしやすい操作も書かれているので気をつける箇所もわかりやすかった。
改善点
応用編の説明をもう少しつけてくれればもっとよくなると思います。
文章の始まりの部分が、このページを読んでいる人にもっと読みたいと感じさせるような簡単な入りで良いと思った。ファイル操作の意味などをだらだらと説明するのではなく、読んでいる人が本当に求めているものが書かれているといった感じで、プログラミング初心者の方にはとてもわかりやすい説明だと思った。
fornextループの応用編の説明をもう少ししてくれたらもっとわかりやすいと思った。
良い点 どのように使えて便利なのか始めに説明されているので、自分がどの状況で使えるのかイメージが湧きやすい。また、手順を最初に挙げてから、それに沿って順に説明に入っているのもきちんと流れが出来ていて理解しやすくなっていると思う。太字や色分けされていて、ビジュアル的にも読み易い。
改善できる点 手順の数字で、4が対応できていないところ。③が二つ存在しているので混乱を招きやすい。
よかった点
エラーになりやすいケースをしっかり示してくれているので何に気をつければよいかなどがよくわかる
またコードがまとまっていてわかりやすい。
改善点
各作業のやり方に③が二つ出ている。
NG表示方式
NGID一覧