• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA シート名をコピー&ペースト)

VBAでシート名をコピー&ペーストする方法

このQ&Aのポイント
  • VBAを使用して、指定のファイルのシートからデータをコピーして別のファイルの指定のシートに貼り付ける方法を教えてください。
  • コピーしたデータの数だけ、担当者名を指定の列に貼り付ける方法も教えてください。
  • 現在のコピー元のファイルのシートのデータと、希望のフォーマットのコピー先のファイルのシートのデータを比較して異なる部分があった場合、どのように処理すればよいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.3

こんにちは、また間違えてしまいました。 .Offset(, -1).Resize(j - 6, 1).Value = ws.Name '←この列 に変更してみて下さい。

plala0220
質問者

お礼

希望通りのものができました。 ありがとうございました。 これからもよろしくお願いします。

その他の回答 (2)

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは 投稿する時にちょっと修正したのですが漏れが有りました。 .Offset(, -1).Value = ws.Name '←この列 を .Offset(, -1).Resize(j - 6, 34).Value = ws.Name '←この列 に変更してみて下さい。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは t = ws2.Range("D" & Rows.Count).End(xlUp).Row n= ws2.Range("B" & Rows.Count).End(xlUp).Row って、同じ数値ですよね? Sub コピー()   Dim ws2 As Worksheet   Dim FP As Variant   Dim i As Long, j As Long, t As Long   Dim wb As Workbook   Dim ws As Worksheet   '選択したフォルダのパス名を取得   FP = Application.GetOpenFilename("Excel ファイル (*.xlsm),*.xlsm", MultiSelect:=True)      For i = LBound(FP) To UBound(FP)     Set ws2 = ThisWorkbook.Worksheets("Sheet2") '書きだすシート     Set wb = Workbooks.Open(FP(i)) 'データーファイル     Set ws = wb.Worksheets(1)          t = ws2.Range("D" & Rows.Count).End(xlUp).Row     j = wb.Worksheets(1).Range("D" & Rows.Count).End(xlUp).Row          With ws2.Range("C" & t + 1)       .Resize(j - 6, 34).Value _         = ws.Range(ws.Cells(7, 2), ws.Cells(j, 35)).Value       .Offset(, -1).Value = ws.Name '←この列     End With   Next i End Sub

plala0220
質問者

補足

ありがとうございます。 tとnは、データーを貼り付けた後は、違うと思っていました。 たとえば、先にB7からE100までコピーして C7に貼り付けると、t=100になるのだと思っていました。 n=6 でも、この考え方が間違っていて、B列の担当者がうまく貼り付かなかったのだと思います。 教えていただいたコードを実行してみると、担当者の1セル(B7)と(B101)にだけ名前が貼りつきました。 上記の例でいうと、B7からB100まで担当者(Aファイルのシート名)が入るようにしたいのです。 (B101からは、Bファイルのシート名がデーターの数だけ) 再度おしえていただけないでしょうか?

関連するQ&A