• ベストアンサー

マクロを使って不特定のファイルからコピー&ペーストしたい(エクセル)

エクセルのデータの必要な列を別のブックに入っているフォーマットにどんどん追加していけるようなマクロを作りたいと思っています。 マクロの自動記録を使ってみたのですが、特定のファイル名が入っているので、使えません。 中を見てみると Windows("A.xls").Activate Columns("b:b").select Selection.copy workbooks.open Filename:="B.xls" Windows("B.xls").Activate Range("D9").select Windows("A.xls").Activate Application.CutCopyMode = False Range("b:b").select Selection.copy Windows("B.xls").Activate Selection.Pastespecial Paste:=xlValues,Operation:=xlNone,SkipBlanks:=False,Transpose:=False . . . となっています。 このファイルAとなっている部分を、どのファイルでも実行できるようにしたいです。 後、ファイルBに貼り付けるときに一番最終行に追加していくにはどのような構文を足せばいいか教えていただきたいです。 初心者で質問の意図が伝わりにくかったらすみません.. よろしくお願いします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

選択されているセルの列をB.XLSの最終列の右にコピーするマクロです。ブックのパスと、シート名は修正して下さい。 Sub Macro1() Dim wb As Workbook, psw As Boolean Selection.EntireColumn.Copy For Each wb In Workbooks If wb.Name = "B.xls" Then psw = True Exit For End If Next wb If Not psw Then Workbooks.Open Filename:="z:\B.xls" 'パス名を修正 End If Windows("B.xls").Activate Worksheets("Sheet1").Activate 'シート名を修正 ActiveSheet.Range("IV1").End(xlToLeft).Offset(0, 1).Select ActiveSheet.Paste Application.CutCopyMode = False End Sub ペーストするシートに全く何も入力されていないときでも2列目に貼りつけます。どうしても1列目に貼りつけたいなら.End(xlToLeft)で取得したセルの値で条件分岐するなどして下さい。

teliot
質問者

お礼

ご回答ありがとうございます。 参考にして、ためしてみます。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 ファイルは、GetOpenFilename で、MultiSelect で複数のファイルを選べても、その後の場所がまちまちのようなので、シートを選んだりとか、セルを選んだりとか、そういうことを対話式にするには、ユーザーフォームで、Modal モードを False にして使うぐらいしかありません。 InputBox メソッドでも、完全に、InputBox と切り離されてはいないので、使いづらいでしょう。 途中で、エラーになると、せっかく選んだブック名が、なくなってしまいます。 せめて、シートとセルの範囲ぐらいは、キメウチできないと、自動化には程遠いです。 記録マクロのレベルですと、少し、荷が重いかもしれませんね

teliot
質問者

お礼

ご回答有難うございます。 やはりマクロを理解して、自分で作らないと無理そうですね。もう少し何か方法を考えてみます。

関連するQ&A