ブラヴィッシモのいろいろな記事

たくさんのファイルに同じ処理をしたい時のExcelマクロ

2016/9/21

こんにちは。開発チームのNDK(日本酒大好きK)です。

 

お仕事でパソコンを使っている方ですと、Excelはおなじみだと思いますが、そんなExcelの機能の一つであるマクロとなると、なんだか難しそうだな~と避けてしまう方もいらっしゃるのではないでしょうか。
実は、使えるようになるととても便利な機能なんです。

 

例えば、うっかり異動前の部署名で資料をたくさん作ってしまった!なんてとき。

修正前のファイル

この、「開発Aチーム NDK」となっている部分を、「開発Bチーム NDK」にしたい場合、下記のようなコードになります。

Public Sub setName()
  Application.ScreenUpdating = False
  Application.DisplayAlerts = FalseDim inputDir As String
  Dim saveDir As String

  inputDir = "C:\input"
  saveDir = "C:\output"
 Call searchFile(inputDir, saveDir)MsgBox "処理が終了しました。", vbInformation

  Application.ScreenUpdating = True
  Application.DisplayAlerts = True
End Sub


'ファイル検索と処理実行
Sub searchFile(ByVal strInputDir As String, ByVal strSaveDir As String)

  Dim objFSO As Object
  Dim varFolder As Variant
  Dim varFile As Variant
  Dim wkBook As Workbook
  Dim strPath As String

  '出力用のフォルダがない場合は作成する
  If Dir(strSaveDir, vbDirectory) = "" Then
    MkDir strSaveDir
  End If

  Set objFSO = CreateObject("Scripting.FileSystemObject")

  '指定したフォルダの下のファイルをすべて処理
  For Each varFile In objFSO.GetFolder(strInputDir).Files

    strPath = strInputDir & "\" & varFile.Name
    Set wkBook = Workbooks.Open(strPath)
    wkBook.Sheets(1).Range("A1") = "開発Bチーム NDK"
    wkBook.SaveAs fileName:=strSaveDir & "\" & varFile.Name
    wkBook.Close

  Next varFile

  '更にサブフォルダも処理
  For Each varFolder In objFSO.GetFolder(strInputDir).SubFolders

    strSaveDir = Replace(varFolder.Path, "input", "output")
    Call searchFile(varFolder.Path, strSaveDir)

  Next varFolder

End Sub

 

修正したファイルが入ったフォルダ(C:\input)にある全てのファイルのA1セルに「開発Bチーム NDK」と入力し、修正したファイルを格納するフォルダ(C:\output)に同じファイル名で保存するというものです。
フォルダの中に更にサブフォルダがある場合も、全部処理します。

 

修正後のファイルはこちら。

修正後のファイル

「開発Aチーム NDK」となっていた部分が、「開発Bチーム NDK」に変更されました。

 

やっていることは単純でも、手でやろうとするとかなり手間がかかってしまうので、それを一気に実行できるのは、時間短縮に便利です。
事務所が移転になって、移転後に発送する資料は全部住所を変更しなくちゃ!といった際にも、同じフォーマットのファイルでしたら、同様の方法で、一括で住所の部分を変換することができますね。

 

今回は、A1セルに特定の文字を設定しましたが、特定の列を一律削除したり、入れ替えたり・・・といった使い方もできます。
会社のシステムで出力していたものを少しだけ変えたいけれど、システムを変えるのも大変だな・・・なんて時にも、システム自体を直すのではなく、マクロを使って出力結果を少し編集することで対応することができたりもします。

 

もう、少し複雑な処理をしたいけれどご自身で作るのはちょっと自信がないなという場合は、ぜひブラヴィッシモにご相談ください。
ブラヴィッシモでは、Webシステムの開発だけではなく、マクロを使った集計処理の開発なども行っています。
システムって大きな開発だけでしょ?などと思わず、お仕事の中のちょっとした「これが出来たら便利!」についても、お気軽にご相談いただき、みなさまのBravissimoのお手伝いができたら幸いです。

※弊社の社名「ブラヴィッシモ」は、ブラボー!の最上級。「サイコー!」とか「すげえ!」といった意味のイタリア語なんですよ。

Pocket

カテゴリ:ブラヴィッシモのいろいろな記事

お問合せフォームへ
ブラヴィッシモTOP