同一のフォルダにあるエクセルファイルの一部分を1つのファイルに

まとめるマクロを作成しました。

---
Sub 貼付先作成()
Dim 集計FM As Workbook
Dim 参照元 As Worksheet
Dim 貼付先 As Worksheet
Dim 行$, 名$, 頂$, 自$
Dim LastRow As Long
Set 貼付先 = ThisWorkbook.Worksheets(1)
貼付先.Cells.Delete
貼付先.Cells(1, 1) = "集計"

行 = 1
自 = ThisWorkbook.Name
頂 = "C:\AAA" & "\店舗実績表\"
名 = Dir(頂 & "*.xls")
Do Until 名 = ""
If 名 <> 自 Then

Set 集計FM = Workbooks.Open(頂 & 名)
Set 参照元 = 集計FM.Worksheets("スタッフチェック売上 ")

LastRow = 参照元.Range("A65000").End(xlUp).Row
行 = LastRow + 1

参照元.Range(Cells(3, 1), Cells(LastRow, 7)).Select
Selection.Copy
貼付先.Cells(行, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

集計FM.Close
End If
名 = Dir$()
Loop
End Sub
---

しかし、"貼付先.Cells(行, 1).Select"の部分でエラーが発生し、先に進みません。
正しいマクロの構成を教えてもらえますでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/05/12 21:30:09
  • 終了:2010/05/17 21:39:15

回答(2件)

id:SALINGER No.1

SALINGER回答回数3454ベストアンサー獲得回数9692010/05/12 21:57:36

ポイント40pt

Selectするときにそのシートがアクティブになっていないので選択できないわけです。

それでその前に、そのシートをアクティブにするコードを入れます。


それと、気になったのは行が1ずつしか増えないので複数行をコピーしても

1行ずつしかコピーされないということ。

行 = 行 + LastRow - 2

としてコピーした分増やすようにします。


たぶん作りたいのはこんな感じだと思います。

Sub 貼付先作成()
    Dim 集計FM As Workbook
    Dim 参照元 As Worksheet
    Dim 貼付先 As Worksheet
    Dim 行$, 名$, 頂$, 自$
    Dim LastRow As Long
    Set 貼付先 = ThisWorkbook.Worksheets(1)
    
    貼付先.Cells.Delete
    貼付先.Cells(1, 1) = "集計"= 2= ThisWorkbook.Name= "C:\AAA" & "\店舗実績表\"= Dir(& "*.xls")
    Do Until= ""
        If<>Then
            Set 集計FM = Workbooks.Open(&)
            Set 参照元 = 集計FM.Worksheets("スタッフチェック売上 ")
            
            LastRow = 参照元.Range("A65000").End(xlUp).Row
            
            参照元.Range(Cells(3, 1), Cells(LastRow, 7)).Select
            Selection.Copy
            貼付先.Activate
            貼付先.Cells(, 1).Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False=+ LastRow - 2
            集計FM.Close
        End If= Dir$()
    Loop
End Sub

http://q.hatena.ne.jp/

id:qazu

ありがとうございます!!

ただ、参照元のデータに複数シートがあったので、うまく動かなかったのですが

Sheets("スタッフチェック売上 ").Select

を挿入することで解決いたしました。

2010/05/17 21:37:37
id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982010/05/12 22:01:15

ポイント30pt

貼付先.Cells(行, 1).Select

の前に 以下の二行を入れて

ThisWorkbook.Activate

貼付先.Activate

貼付先.Cells(行, 1).Select

となるようにしてみたらいかがでしょうか?

http://q.hatena.ne.jp/1273667407

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません