プロが教えるわが家の防犯対策術!

エクセルのデータの必要な列を別のブックに入っているフォーマットにどんどん追加していけるようなマクロを作りたいと思っています。
マクロの自動記録を使ってみたのですが、特定のファイル名が入っているので、使えません。
中を見てみると

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に貼り付けるときに一番最終行に追加していくにはどのような構文を足せばいいか教えていただきたいです。
初心者で質問の意図が伝わりにくかったらすみません..
よろしくお願いします。

A 回答 (2件)

選択されているセルの列を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)で取得したセルの値で条件分岐するなどして下さい。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/15 23:03

こんばんは。



ファイルは、GetOpenFilename で、MultiSelect で複数のファイルを選べても、その後の場所がまちまちのようなので、シートを選んだりとか、セルを選んだりとか、そういうことを対話式にするには、ユーザーフォームで、Modal モードを False にして使うぐらいしかありません。

InputBox メソッドでも、完全に、InputBox と切り離されてはいないので、使いづらいでしょう。
途中で、エラーになると、せっかく選んだブック名が、なくなってしまいます。

せめて、シートとセルの範囲ぐらいは、キメウチできないと、自動化には程遠いです。

記録マクロのレベルですと、少し、荷が重いかもしれませんね
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/15 23:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています