▽1
●
きゃづみぃ ●400ポイント ベストアンサー |
まず 「原本_ツール.xls」ですが、ボタンのクリックは プライベートなので そのまま呼べません。
なので
「原本_ツール.xls」に以下のソースを 追加してください。
ボタンのあるシートに
Sub Button1_Click() Call CommandButton1_Click End Sub
標準モジュールに
Sub Button_Click() Sheets("Sheet1").Button1_Click End Sub
あと 実行用のエクセルですが、個人フォルダに入れてください。
つまり「リスト.xls」と「原本_ツール.xls」と同じところということです。
Sub main() s1 = "リスト.xls" s2 = "原本_ツール.xls" Workbooks.Open ThisWorkbook.Path & "\" & s1 For a = 2 To Rows.Count b1 = Workbooks(s1).Sheets("Sheet1").Cells(a, "A") If b1 = "" Then Exit For b2 = Workbooks(s1).Sheets("Sheet1").Cells(a, "B") b3 = Workbooks(s1).Sheets("Sheet1").Cells(a, "C") Workbooks.Open ThisWorkbook.Path & "\" & s2 Workbooks(s2).Sheets("Sheet1").Cells(2, "C") = b1 Workbooks(s2).Sheets("Sheet1").Cells(3, "C") = b2 Workbooks(s2).Sheets("Sheet1").Cells(4, "C") = b3 Application.Run s2 & "!Button_Click" ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & b1 & ".xls" Workbooks(b1 & ".xls").Close Next a Workbooks(s1).Close End Sub
なお シート名は 画像にあるものを用いています。
質問文の動作がよく分からなかったので、勝手に変えさせていただきました。
違かったらすいません。
?ボタンを押すと、同じフォルダにあるリスト.xlsxからリストのデータを読み込む
?読み込んだデータを、原本_ツール.xlsに反映
?反映したら、同じフォルダに「(名前).xls」という名前で保存する
?保存したファイルを閉じる
?「名前」の数だけ繰り返す
※質問文に書いてあるファイル名と、画像のファイル名が違っていたので、画像の方に合わせました。
以下で動作すると思います。※先に「ボタン 1」に「Test_1」を実行するように設定しておいてください。
Sub Test_1() Dim tSht Dim lSht Dim aSht Dim lr Dim lc Dim x Dim y Dim a() Workbooks.Open ("C:\この部分は書き換えてください\個人ファイル\リスト.xlsx") Set tSht = ThisWorkbook.Worksheets("Sheet1") Set lSht = Workbooks("リスト.xlsx").Worksheets("Sheet1") lr = Range("a1").End(xlDown).Row lc = Range("a1").End(xlToRight).Column ReDim a(lc - 1) For x = 2 To lr For y = 0 To lc - 1 a(y) = lSht.Cells(x, y + 1).Value Next Workbooks.Add Set aSht = ActiveWorkbook.Worksheets("Sheet1") tSht.Cells.Copy (aSht.Cells) For y = 0 To lc - 1 aSht.Cells(y + 2, 3).Value = a(y) Next ActiveWorkbook.SaveAs a(0) & ".xls", xlWorkbookNormal ActiveWorkbook.Close Next Workbooks("リスト.xlsx").Close End Sub
このコードは、「リスト.xlsx」にあるリスト(表)が縦にも横にも伸びても、対応できるようになっていると思います。
また、「原本_ツール.xls」の最初からある表をコピーして「(氏名).xls」を作るようになっているので、表やその周りに塗りつぶしなどの書式設定をしている場合、これもコピーできると思います。