ファイル操作2

ページ名:ファイル操作2

 

《 ファイル操作について 》

 

  • 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

 

シェアボタン: このページをSNSに投稿するのに便利です。

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する
mayu

最初に主な作業を提示してから各作業の説明があるので、見ていて今どこの作業をしているのかが分かりやすかった。

返信
2018-11-06 14:09:54

かける

よかった点
ひとつひとつ丁寧に説明されているのでわかりやすかった。
また、エラーしやすい操作も書かれているので気をつける箇所もわかりやすかった。
改善点
応用編の説明をもう少しつけてくれればもっとよくなると思います。

返信
2018-11-06 14:02:58

せいな

文章の始まりの部分が、このページを読んでいる人にもっと読みたいと感じさせるような簡単な入りで良いと思った。ファイル操作の意味などをだらだらと説明するのではなく、読んでいる人が本当に求めているものが書かれているといった感じで、プログラミング初心者の方にはとてもわかりやすい説明だと思った。
fornextループの応用編の説明をもう少ししてくれたらもっとわかりやすいと思った。

返信
2018-11-06 13:57:22

春奈

良い点 どのように使えて便利なのか始めに説明されているので、自分がどの状況で使えるのかイメージが湧きやすい。また、手順を最初に挙げてから、それに沿って順に説明に入っているのもきちんと流れが出来ていて理解しやすくなっていると思う。太字や色分けされていて、ビジュアル的にも読み易い。

改善できる点 手順の数字で、4が対応できていないところ。③が二つ存在しているので混乱を招きやすい。

返信
2018-11-06 13:54:37

トーストマスター

よかった点
エラーになりやすいケースをしっかり示してくれているので何に気をつければよいかなどがよくわかる
またコードがまとまっていてわかりやすい。
改善点
各作業のやり方に③が二つ出ている。

返信
2018-11-06 13:53:22

NG表示方式

NGID一覧