こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

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

投稿日時 - 2006-09-13 20:38:08

QNo.2404425

すぐに回答ほしいです

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

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

投稿日時 - 2006-09-13 21:20:29

お礼

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

投稿日時 - 2006-09-15 23:03:42

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

こんばんは。

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

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

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

記録マクロのレベルですと、少し、荷が重いかもしれませんね

投稿日時 - 2006-09-14 01:18:06

お礼

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

投稿日時 - 2006-09-15 23:06:04

あなたにオススメの質問