プロが教える店舗&オフィスのセキュリティ対策術

画像をアップしたので、こちらを見ていただくと分かりやすいと思いますが、同一フォルダの中に、あるアンケートに対する回答のエクセルファイル(全く同じ形式でだが、ブックの名前に規則性はない)があり、別の場所にその回答を一覧に並べるための"集計用ファイル"がります。このアンケートの回答ファイルは日々数が追加されて行くので、毎日"集計用ファイル"に回答を得た分を転記し日付の名前でもつけて保存して行きたいのです。エクセルマクロを使用して、この"Book1"~"BookXXX"の特定の部分に入力された内容を一人一列となるように"集計用ファイル"のB列から右へ右へと転記したいと考えています。

下記、内容を簡単にしたサンプルを作り、VBAを書いてはみたものの、やはり動きませんでした。(セルは例として3つのみ転記しようとしています)

関連する質問もこちらにさせて頂いたのですが、まだ独力で解決できず再度投稿させて頂きました。よろしくお願いいたします。

Sub 転記()

Dim WorkPath As String
Dim Target As String
Dim MaxRow As Long

Application.ScreenUpdating = False

WorkPath = "C:\Documents and Settings\Zawa\デスクトップ\Test"
Target = Dir(WorkPath & "\*.xls", vbNormal)
MaxRow = 1

Do While Target <> ""
Workbooks.Open WorkPath & "\" & Target

Workbooks(Target).Sheets("Sum").Select
Range("C7").Select
Selection.Copy
ThisWorkbook.Sheets("Sheet1").Select
Range("B3").Select
ActiveSheet.Paste

Workbooks(Target).Sheets("Sum").Select
Range("C10").Select
Application.CutCopyMode = False
Selection.Copy
ThisWorkbook.Sheets("Sheet1").Select
Range("B4").Select
ActiveSheet.Paste

Workbooks(Target).Sheets("Sum").Select
Range("D10").Select
Application.CutCopyMode = False
Selection.Copy
ThisWorkbook.Sheets("Sheet1").Select
Range("B5").Select
ActiveSheet.Paste

Workbooks(Target).Close SaveChanges:=False
Target = Dir()
Loop

MsgBox "転記が終了しました。"
End Sub

※添付画像が削除されました。

A 回答 (2件)

集計用BOOKが同じフォルダーにおいてもいいように書いてみました。



Dim WorkPath As String
Dim Target As String
Dim i As Long

Application.ScreenUpdating = False
WorkPath = "C:\Documents and Settings\Zawa\デスクトップ\Test"

Target = Dir(WorkPath & "\*.xls", vbNormal)

i = 1
Do While Target <> ""
If Target <> ThisWorkbook.Name Then
Workbooks.Open WorkPath & "\" & Target
i = i + 1 '列番号右にを増やす
With Workbooks(Target)
.Sheets("Sum").Range("C7").Copy ThisWorkbook.Sheets("Sheet1").Cells(3, i)
.Sheets("Sum").Range("C10").Copy ThisWorkbook.Sheets("Sheet1").Cells(4, i)
.Sheets("Sum").Range("D10").Copy ThisWorkbook.Sheets("Sheet1").Cells(5, i)
.Close SaveChanges:=False
End With
End If
Target = Dir()
Loop

MsgBox i - 1 & "件のBOOKの転記が終了しました。"
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます!

特に
With Workbooks(Target)
.Sheets
.Sheets
.Sheets

と書ける事は始めて知りました。
非常に勉強になりました。

お礼日時:2009/02/18 21:56

No1 merlionXXです。



Application.ScreenUpdating = True  を
MsgBox i - 1 & "件のBOOKの転記が終了しました。" の前に一行入れてください。
    • good
    • 0

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