3箇所確認してください。
・If文
> If name = "" Then
> id = ThisWorkbook.Worksheets("集計").Cells(8, 10).Value '▲"集計"に変更
ここの[If name = "" Then]は不要です。
[If name = "" Then]は「もし名前が空白なら」なので
名前が空白のときしかidを取得しないことになってしまい不都合です。
[If<条件式>Then]の後に必要な処理を入れたら最後は[End If]が必要です。
[End If]がないとどこまでがその場合にするべき処理なのか判りません。
字下げしているのは[If~End If]の塊りが解りやすいようにです。
[For ]の行と[Next ]の行、[Sub ]と[End Sub]の行頭を揃えているのもそのためです。
・Cells
> id = ThisWorkbook.Worksheets("集計").Cells(8, 10).Value
Cellsの()内は(行,列)なので(8,10)だと
マクロが定義されているブックの"集計"シートのJ8を示します。
参照する行を名前と同じく1行づつずらしていくには[i]を指定します。
([i]は[For ]と[Next i]の作用で2,3,4,・・・と変化します。)
もしidがJ列ならCells(i,10)、C列ならCells(i,3)にします。
(もしidが他のブックに書かれているなら別の処理が必要です。)
・文字列結合
[Dim id As String]の[String]は「文字列型」で、
[id]と[name]は同じ型なので[+]で結合できます。
fname = name + id + ".xls" でOKです。
(「整数型」+「整数型」は算数と同じ加算になります。
「文字列型」+「整数型」など型が違う場合はエラーになります。)
・不要な[If name = "" Then]を削除
・idの記載されているセルを確認
・[fname = name + id + ".xls"]とする
これで試してみて下さい。
お礼
できました!! ありがとうございます。 iに変更していなかったところを修正し、IDをnameのまえにもって行ったらできました。 何日も何日も本当にありがとうございました。感激です。 今後も教わりたいくらいなので授業料を支払いくらいです。 どの様にお礼すればいいいでしょうか? 本当にありがとうございました。
補足
本当にすみません。 言われた箇所を直して下記のようにしてみましたが、集計表の名前のC列からIDを読み込みコピーされたファイルにIDも反映させたいんですがどうしてもできません。 やはりまだどこかおかしいでしょうか? 本当に申し訳なく思います。 Sub Macro1() 'マクロ名※解りやすい名前に修正してください Dim name As String '名前 Dim fname As String 'ファイル名 Dim directory As String '作成先ディレクトリ Dim fullpath As String 'フルパス Dim orgfile As String '雛形のファイル名 Dim editbook As Workbook '個人データブック Dim id As String '社員番号 directory = "C:\test\" 'フォルダー名※修正してください orgfile = "C:\test\マスター.xls" '※修正してください▲ For i = 2 To 100 '開始行と終了行です※修正▲2行目からに変更 'Sheet1のA列を取得※シート名は必要なら修正 name = ThisWorkbook.Worksheets("集計").Cells(i, 1).Value '▲"集計"に変更 If name = "" Then id = ThisWorkbook.Worksheets("集計").Cells(1, 3).Value 'C列から読み込む Exit For '空白なら終了 End If 'コピーしたファイルを作成する fname = name + id + ".xls" 'ファイル名合成 fullpath = directory + fname 'フルパス合成 Call MakeCopyFile(fullpath, orgfile) 'ファイル作成 '作成したブックを開く '既に開いているブックと同名の場合の処理は省略 Workbooks.Open Filename:=fullpath 'ファイルを開いて Set editbook = Workbooks(fname) '個人データブックとして認識 'シート"Hinagata1"のB5にnameをセット※シート名は修正してください editbook.Worksheets("Sheet1").Cells(8, 14).Value = name '▲"Sheet1"に変更 editbook.Worksheets("Sheet1").Cells(8, 10).Value = id 'j8にID番号を自動で反映させる '※(その他必要な処理があれば追加してください) 'ブックを上書きして閉じる※開きっぱなしが良ければ消してください editbook.Close (True) Next i End Sub