人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

同一のフォルダにあるエクセルファイルの一部分を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"の部分でエラーが発生し、先に進みません。
正しいマクロの構成を教えてもらえますでしょうか?


●質問者: qazu
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:AAA as DELETE Dir FM
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● SALINGER
●40ポイント

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/

◎質問者からの返答

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

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

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

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


2 ● きゃづみぃ
●30ポイント

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

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

ThisWorkbook.Activate

貼付先.Activate

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ