ファイル操作(こちらは見ないでください)

ページ名:ファイル操作

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


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

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

コメント

返信元返信をやめる

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

最新を表示する
ンゴ

「ファイル取り込み配布用.xlsmのCells(3, 3)に貼り付ける」
→ 「ファイル取り込み配布用.xlsmのCells(3, 3)に、変数dataの中身を貼り付ける」

返信
2018-11-06 13:23:43

ンゴ

「sample1を実行する」、「ファイル取り込み配布用.xlsmを実行する」ですが、「sample1をアクティブ化する」、「ファイル取り込み配布用.xlsmをアクティブ化する」に修正してください

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

ンゴ

「対象のファイル"E:\中田ゼミ\files\"が存在するかどうかを確認」とありますが、"E:\中田ゼミ\files\"はファイルの名前ではなくて、ファイルが入っているフォルダの名前ですね

返信
2018-11-06 13:19:11

ンゴ

「「中田ゼミ」というFILEを開く」ではなくて、「"E:\中田ゼミ\files\"という場所にある"sample1.xlsx"というファイルを開く」に修正お願いします

返信
2018-11-06 13:18:00

NG表示方式

NGID一覧