
会社の部署で個人で記入する勤怠管理表から、ボタンを押せば各個人の表を読み込み自動で転記されるマクロを組みました。
下記に個人の一例でコードを記載します。
VBA
1Set yamamoto = Workbooks.Open(path & "山本.xlsx")→個人のエクセルを指定しています。 2 With Workbooks("集計").Worksheets("2021年")→集計のエクセルを指定しています。 3 4 .Range("C10:T10").Value = yamamoto.Sheets(i).Range("C40:T40").Value '1?? 5 .Range("C30:T30").Value = yamamoto.Sheets(i).Range("C80:T80").Value '2?? 6 .Range("C50:T50").Value = yamamoto.Sheets(i).Range("C120:T120").Value '3?? 7 .Range("C70:T70").Value = yamamoto.Sheets(i).Range("C160:T160").Value '4?? 8 .Range("C90:T90").Value = yamamoto.Sheets(i).Range("C200:T200").Value '5?? 9 .Range("C110:T110").Value = yamamoto.Sheets(i).Range("C240:T240").Value '6?? 10 .Range("C130:T130").Value = yamamoto.Sheets(i).Range("C280:T280").Value '7?? 11 .Range("C150:T150").Value = yamamoto.Sheets(i).Range("C320:T320").Value '8?? 12 .Range("C170:T170").Value = yamamoto.Sheets(i).Range("C360:T360").Value '9?? 13 .Range("C190:T190").Value = yamamoto.Sheets(i).Range("C400:T400").Value '10?? 14 .Range("C210:T210").Value = yamamoto.Sheets(i).Range("C440:T440").Value '11?? 15 .Range("C230:T230").Value = yamamoto.Sheets(i).Range("C480:T480").Value '12?? 16 17 ActiveWorkbook.Close savechanges:=False 18 19 End With 20※各文の端の12??は12月など、「月」と書いています。
for構文は使用していません。書式が決まっているので、指定した箇所を読み込む形にしました。
作成時は問題なく動き、実際1月分は各個人の記入内容が反映されたものが転記されます。
2月以降から読み込まなくなりました。
誤ってる箇所など、御教授頂けると幸いです。
よろしくお願いいたします。

1月と2月はsheetを分けているのですか?
yamamoto.Sheets(i)とsheets(i)を指定していますがこの変数iには何を入れているのですか?
確認ありがとうございます。
・1月と2月は分けていません。
・具体的には「2021年」が入っています。
記入漏れていましたが、転記エクセル内でセルの値を読み取るように指定しています。
よろしくお願いいたします。

一見したところプログラムに問題なさそうなんですよね。
転記したい指定セルの位置を正確に選択出来ているか確認したいのですが、下記のコードを参照してF8のステップインで実際にどのセルを触っているか確認できますか?
selectで範囲指定すればエクセルの画面上で表示されるのでわかりやすいと思います。
これで問題ない場合は他の方にお任せする形になりそうです。
yamamoto.Sheets(i).Range("C80:T80").select
.Range("C30:T30").select
.Range("C30:T30").Value = yamamoto.Sheets(i).Range("C80:T80").Value '2??
yamamoto.Sheets(i).Range("C120:T120").select
.Range("C50:T50").select
.Range("C50:T50").Value = yamamoto.Sheets(i).Range("C120:T120").Value '3??
msuguru様
コメントありがとうございます。
頂いたコードを追記し、ステップインで実施しました。そこで判明したのですが、
With Workbooks("集計").Worksheets("2021年")→集計のエクセルを指定しています。
インデックス範囲が有効ではないと出ます。そのため該当箇所の指定で「xlsm」を指定していなかったので、それに変更した結果作動できるようになりました。
色々とご確認頂きありがとうございました!

解決してよかったです。
自己解決で詳細の記載をお願いします。
あなたがどのように解決したかを書き残しておくことで、あなたの質問は貴重なコンテンツ資産となります。
承知しました。同じことで困った方の為にも、文字として残しておきます。

回答1件
あなたの回答
tips
プレビュー