見出し画像

10-複数ファイルの値を書き換える(エクセルマクロ)

同じフォーマットのファイルが複数あり、その全てのファイルに同じ処理をしたいことってありますよね。2, 3ファイルならマニュアル作業で終わらせられますが、10ファイル、20ファイルとなると時間もかかるし、書き間違えなどのミスをしてしまう可能性だってあります。そんな時はマクロを書いて素早く作業を終わらせましょう!

指定した複数のファイルにマクロを実行させる

皆さんこんにちは。今回は「ファイルを開いて処理を行い保存して閉じる」という動作を複数の指定ファイルに対して行うマクロをつくります。

画像1

◆実行内容
上図左のファイル「マクロファイル」の「リスト」シートに記入してある全てのファイルに対して、「C2」の値を書き換える。
但し、書き換えるファイルは全て同じフォルダに入っていることが必要です。

◆書くマクロ
今回は「リスト」シートがある「マクロファイル」にマクロを書きます。

画像3


<テキスト>
①mypath = "C:¥~~~¥Desktop¥取引先ファイル"
For i = 1 To 10
  ③myfile = ThisWorkbook.Worksheets("リスト").Range("A" & i).Value
  ④Workbooks.Open mypath & "¥" & myfile
  ⑤ActiveWorkbook.Worksheets("商品").Range("C2").Value = 100000
  ⑥ActiveWorkbook.Close True
Next

◆解説
①フォルダパスを指定する
書き換え対象のファイルが入っているフォルダのパスを適当な変数(mypath)にいれます。

③ファイル名を指定する
対象ファイル名が1行目から10行目まで記入があるので、行番号を変数「i」として、セル「Ai」に書かれているファイル名を「myfile」という」変数にいれます。今回は「リスト」シートがあるファイルにマクロを書いていますので、指定ファイルのところはThisWorkbookとなります。

②繰り返すように指定する
For Next構文でiが1から10のときまで繰り返すようにします。

④ファイルを開く
最初に設定したフォルダパスとファイル名を「¥」でつなげて、ファイルを開くOpenメソッドの引数にします。

⑤共通処理のコードを書く
開いたファイルの「商品」シートのセル「C2」の値を100000にする。
ファイルを開いた直後はそのファイルがアクティブになっていますので、指定ファイルの書き方はActiveWorkbookで大丈夫です。

⑥開いたファイルを保存して閉じる
closeメソッドの引数名もきちんと書くと以下のようになります。
ActiveWorkbook.Close SaveChanges:=True
SaveChanges:=を省略して書いています。


画像3

⑤共通処理のコードを書く
のところを、必要な処理に書き換えれば応用できます。
ただし、全てのファイルでフォーマットが同じである場合に有効な方法です。


今回はここまでです。

この記事が気に入ったらサポートをしてみませんか?