質問: VBAを書けないのでどなたか教えてください。 同じフォルダ(フォルダ名:sample)にある100個のvCalendarファイルをエクセル形式で統合したいです。 以下の流れでVBAを書いていきたいのです。 1フォルダの中のvCalendarファイルを1つエクセルで開く。 2開いたファイルのファイル名を取得して、最終列にペーストする(最終列と最終行はファイルによって異なり、最初の行から最初の列まで同一のファイル名をペーストしたい。) 3編集した全てのセルを選択して、新規のエクセルファイルに貼り付ける(エクセルファイル名を仮にエクセル1とします) 4vCalendarファイルを閉じて次のvCalendarファイルに対して同じ操作を行う。 どなたかお力をかしていただけないでしょうか。 よろしくお願いいたします。
回答: 一つのマクロであれこれ出来るようにすると言う考えから離れてください。 可変的な要件が多すぎます。 そもそも、マクロが組めない人にそれを提示できたとしても その保守管理等は無理で、その中身の微調整の改修や説明すらもできずに結果的に業者に投げるしかなくなります。 結局最初から業者に投げるべきで、その後の保守等の維持管理費やその後の改修費も必要です。 所詮マクロです。 単純操作の繰り返しを自動化するのが使い方です。 業務で以下のように考えてみてはいかがでしょうか? >1フォルダの中のvCalendarファイルを1つエクセルで開く。 ファイル名がシート1の列Aに列挙出来るコードを依頼する。 これぐらいなら知恵袋でも簡単に出てくる回答です。 >2開いたファイルのファイル名を取得して、最終列にペースト >3編集した全てのセルを選択して、新規のエクセルファイルに貼り付ける 1で取得したファイル名をマニュアル化して手作業にしてください。 1の作業が自動化されていれば容易な筈です。 1で表示された文字列をコピペするだけです。 ある手作業が入る事で作業の柔軟性が増します。 全自動化が最善では無いのです。 とりあえず、ファイル名が列挙出来るコードは作成してみました。 このコードを埋め込んだファイルを取得したいフォルダに置き実行してみてください。(実行ボタンなどは作ってください) 実行するとこのファイルが置かれているフォルダーにあるファイル名がシート1のA列にマクロに列挙されます。 Private Sub GetFileList() Dim objFso As Object Dim objFld As Object Dim wkFile As Object Dim intRow As Integer Dim sh As Worksheet Set sh = Worksheets("Sheet1") Set objFso = CreateObject("Scripting.FileSystemObject") Set objFld = objFso.GetFolder(CurDir) intRow = 0 '初期化 For Each wkFile In objFld.Files If ThisWorkbook.Name <> wkFile.Name Then intRow = intRow + 1 sh.Cells(intRow, "A") = wkFile.Name End If Next End Sub それと >ファイルを1つエクセルで開く。 ファイル名の列挙が目的と判断しましたので特に開く必要性が無いのでファイル名だけが取得できるようにしてみました。