フォルダ内に同一フォームで行数が異なる複数のファイルがあります。(20個)データがあるのは、sheet1だけです。それぞれのファイルのシートのタイトル行以下を新規ブックの1シートにまとめるため、同じ事をしたい方の質問の答えにあった以下のマクロを実行しましたが、RR.Copy Dst の部分で、次のようなエラーになってしまいます。エラーになったあとは、エクセルが固まりタスクの終了にしなければいけない状態です。新規ブックに一つ目のファイルのシートのデータはペイストされていますが、そこでディバックになります。VBAは初心者なので、解決策をどなたか教えていただけないでしょうか?
実行時エラー '-2147417848 (80010108)':
copyメソッドが失敗しました。rangeクラス.
Sub test()
'このブックと同一フォルダ内のブックの、1シート目の3行目以下を、 '新規ブックの1シートにまとめる
Dim Book As Workbook
Dim Fpath As String
Dim Fname As String
Dim RR As Range
Dim Dst As Range Fpath = ThisWorkbook.Path & "\" Fname = Dir(Fpath & "*.xls")
Application.ScreenUpdating = False
Do Until
Fname = "" If LCase(Fname) = LCase(ThisWorkbook.Name) Then
Else
If Dst Is Nothing Then
Set Dst = Workbooks.Add.Worksheets(1).Range("A1")
End If
Set Book = Workbooks.Open(Fpath & Fname) Set RR = Book.Worksheets(1).UsedRange
Set RR = Intersect(RR, RR.Offset(2))
RR.Copy Dst
Set Dst = Dst.Offset(RR.Rows.Count) Book.
Close False
End If
Fname = Dir()
Loop
Application.ScreenUpdating = True
MsgBox "完了!" End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは。
初心者? これを書いた人は、相当に頭の良い方だろうけれども、私のような、何年も同じようなレールに則った書き方しか出来ない人間(その上、劣化していっています)には、そのちょっとの所が、VBAの標準の軌道から外れているように思います。
むろん、試してみましたが、特にエラーは発生しませんでした。
私が気になる部分:
Set Dst = Workbooks.Add.Worksheets(1).Range("A1")
こういう書き方はあるものの、新規作成の場合は、ブック・シート・セルのオブジェクトは、分けたほうがよいし、そもそもRange型で保有する必要はないように思います。
Set RR = Book.Worksheets(1).UsedRange
Set RR = Intersect(RR, RR.Offset(2))
ここは、確実かどうかです。データの取得に、UsedRangeというのは、かなり無茶です。
それに、そこから、Intersect で、二行下からのデータを取得というところにも、多少の不安を感じます。
Set Dst = Dst.Offset(RR.Rows.Count)
そして、上記のRRの生成と連動してくると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ワイルドカード「*」を使うとう...
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
別ブックをダイアログボックス...
-
【ExcelVBA】インデックスが有...
-
VBA シート名が一致した場合の...
-
VBA コードを実行すると画面が...
-
Excel にて、 リストボックスの...
-
VBS Bookを閉じるコード
-
エクセル VBA 他シートの行を選...
-
[Excel]ADODBでNull変換されて...
-
任意のブックのシートをコピー
-
【VBA】全シートの計算式を全て...
-
VBA 実行時エラー 2147024893
-
VBA 別ブックからコピペしたい...
-
【マクロ】アクティブセルにブ...
-
【ExcelVBA】zip圧縮されたCSV...
-
EXCEL2013 シート内容を別ブッ...
-
vbaで他のブックに転記したい。...
-
複数のエクセルブックをひとつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
VBA 別ブックからコピペしたい...
-
別ブックをダイアログボックス...
-
ワイルドカード「*」を使うとう...
-
【マクロ】AブックからBブック...
-
【ExcelVBA】インデックスが有...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBA コードを実行すると画面が...
-
VBA シート名が一致した場合の...
-
VBA 実行時エラー 2147024893
-
VBS Bookを閉じるコード
-
VBAで別のブックにシートをコピ...
-
VBAで別ブックのシートを指定し...
-
【マクロ】違うフォルダにある...
-
[Excel]ADODBでNull変換されて...
-
VBAで複数のブックを開かずに処...
-
【Excel VBA】書き込み先ブック...
-
Excelマクロ 該当する値の行番...
-
vbaでvbaProjectのパスワード解...
おすすめ情報