この記事では、VBAを使って指定したフォルダに保存されている、別のエクセルファイルを開いて、編集して、(名前を変更して)保存する、という一連の流れを実行してみようと思います。
データ整理の際などに非常に役にたつはずです。
ぜひ最後までご覧ください。
事前情報の確認
実際にVBAコードを書きはじめる前に、まずは私がどのような状況で実行していくかをご紹介しておきます。
以降で紹介するVBAコードを書き換えていく際、ここがわかっているかどうかが非常に重要になります。
少し面倒かもしれませんが、確認しておきましょう。
今回は以下の画像のようにforderという名前のフォルダに保存されているsample.xlsxというエクセルファイルを開く⇒編集⇒名前を変更して保存という作業を行っていきます。
なお、このfolderという名前のフォルダはデスクトップ直下においてあります。
また、このsample.xlsxはVBA上で編集され、sample_new.xlsxという別ファイルとして保存されます。
事前情報は以上になります。
VBAコードを記述する
先ほどの事前情報をもとにVBAコードを書いていきましょう。
以下が先ほどの解説した内容を実行できるVBAコードです。
Sub edit_file()
Dim base_path As String, base_file_name As String
Dim new_file_name As String
'ファイルが保存されている場所指定
base_path = "C:\Users\Desktop\folder"
'これから編集するファイル名
base_file_name = "sample.xlsx"
'編集後のファイル名
new_file_name = "sample_new.xlsx"
'ファイルを開く
Workbooks.Open base_path & "\" & base_file_name
'ファイルを編集する
Range("A1") = "test"
'ファイルを名前を変更して保存する
ActiveWorkbook.SaveAs Filename:=base_path & "\" & new_file_name
'ファイルを閉じる
Windows(new_file_name).Close
End Sub
ファイル名や保存場所はあなたの状況にあわせて適宜変更しましょう。
また、12行目がファイルの編集内容です。
今回は適当に編集しただけですので、ここも状況に応じて編集しましょう。
VBA実行結果の確認
コードが書けたところで、実際に実行してみましょう。
まずは編集前のsasmple.xlsxの中身を確認しておきましょう。
今回は以下のように何も記入されていない状態でスタートします。
中身が確認できたら、このsample.xlsxを閉じて、先ほどのVBAコードを実行します。
すると最初に紹介したフォルダの中身は以下のようになりました。
VBAコード上で指定した名前のファイルが新たに作成されていますね。
こいつの中身を確認してみましょう。
しっかりとVBAコード上で記述したようにA1セルにtestというデータが記入されていますね。
念のため、もとのファイルの中身も確認してみます。
こららは何も変わっていませんね。
というわけで新旧ファイルが狙い通りになっていることが確認できました。
なお、名前を変更しないで保存したい場合はコードを以下のようにすればOKです。
Sub edit_file()
Dim base_path As String, base_file_name As String
Dim new_file_name As String
'ファイルが保存されている場所指定
base_path = "C:\Users\Desktop\folder"
'これから編集するファイル名
base_file_name = "sample.xlsx"
'編集後のファイル名
new_file_name = "sample_new.xlsx"
'ファイルを開く
Workbooks.Open base_path & "\" & base_file_name
'ファイルを編集する
Range("A1") = "test"
'ファイルを名前を変更して保存する
ActiveWorkbook.Save
'ファイルを閉じる
Windows(base_file_name).Close
End Sub
状況にあわせて使い分けましょう。
おわりに
というわけで今回は別のエクセルファイルを開いて、編集して、名前をつけて保存するという一連の流れを実行するVBAコードをご紹介しました。
データ処理を行うときなどにぜひご活用ください。
なお、今回は単純なエクセルファイルを編集する作業でしたが、以下の記事ではcsvファイルや、テキストファイルを編集する方法もご紹介しています。
興味があればぜひご覧ください。
【VBA】csvファイルを開く⇒編集⇒保存⇒閉じる!一連の流れを実演!
【VBA】テキストファイルの読み込み⇒編集⇒保存までを一括解説!
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント
はじめまして
本件、今現在非常に参考にさせて頂いております。
1件悩んでおりますので、ご相談させて頂きたいと思います。
1件はセルのコピーをする際に元が計算式なのですが、計算式がそのままコピーされるため結果の値だけコピー先に貼り付けたいと思うのですが、
Paste:= xlPasteValues
こちらを使ってもエラーになってしまうので対策があれば教えて頂きたいと思います。
よろしくお願い致します。
ご質問いただきありがとうございます(^^)
なんとなくそれで問題無いとは思いますが、以下を試してみてもらえますか?
Range(“A1”).Copy
Range(“A2”).PasteSpecial xlPasteValues
試してはないので出来なかったらすみません。
おはようございます。
ご回答ありがとうございます。
しかしうまくいきませんでした。
下記のようにしているのですが何が問題かご相談させて頂いてよろしいでしょうか。
Sub SWICH_1()
Dim base_path As String, base_file_name As String
Dim new_file_name As String
‘ファイルが保存されている場所指定
base_path = “フォルダを指定”
‘これから編集するファイル名
base_file_name = “編集する基本ファイル名”
‘編集後のファイル名
new_file_name = “編集後保存する際のファイル名”
‘ファイルを開く
Workbooks.Open base_path & “\” & base_file_name
‘ファイルを編集する
‘セルコピー(計算式がそのままコピーされる値が反映されない)
Workbooks(“セルコピー元(コピー元セルは計算式”).Sheets(“sheet1”).Range(“E3”).Copy _
Workbooks(“編集する基本ファイル名”).Sheets(“Sheet1”).Range(“D21”)
‘セルコピー(エラーが出る)
Workbooks(“セルコピー元(コピー元セルは計算式”).Sheets(“sheet1”).Range(“E3”).Copy _
Workbooks(“編集する基本ファイル名”).Sheets(“Sheet1”).Range(“D21”).PasteSpecial xlPasteValues
‘ファイルを名前を変更して保存する
ActiveWorkbook.SaveAs Filename:=base_path & “\” & new_file_name
‘ファイルを閉じる
Windows(new_file_name).Close
End Sub
なるほど。Copyの後改行せずにスペース&コピー先という書き方をしてたんですね。
以下のようにCopyの後、改行してみてください。
Workbooks(“セルコピー元(コピー元セルは計算式”).Sheets(“sheet1”).Range(“E3”).Copy
Workbooks(“編集する基本ファイル名”).Sheets(“Sheet1”).Range(“D21”).PasteSpecial xlPasteValues