
xmlファイルを開いて順にコピペする記述です。
処理は一応できているのですが、処理が終わった後に、タイトルにある実行時エラー7がいつも出てしまい、気持ち悪いです。どのように記述を訂正すればいいか、アドバイスいただけないでしょうか。
Sub OpenFilesInFolder()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim path, fso, file, files
Dim target As Long
path = ThisWorkbook.path & "\"
'xmlファイルを開く処理
Set fso = CreateObject("Scripting.FileSystemObject")
Set files = fso.GetFolder(path).files
'フォルダ内の全ファイルについて処理
For Each file In files
'ファイルを開いてブック、シートとして取得
Dim wb As Workbook
Dim ws As Worksheet
'xmlファイルを開く処理
Workbooks.OpenXML _
Filename:=file.path, LoadOption:=xlXmlLoadImportToList
Set wb = ActiveWorkbook
Set ws = ActiveSheet
'開いたxmlファイルを順にコピペ処理
With ThisWorkbook.Worksheets(1)
target = .Cells(Rows.Count, 1).End(xlUp).Row + 1
ws.Range(ws.Cells(2, 25), ws.Cells(49, 25)).Copy
.Range(.Cells(target, 1), .Cells(target + 47, 1)).PasteSpecial Paste:=xlPasteValues
ws.Range(ws.Cells(2, 27), ws.Cells(49, 27)).Copy
.Range(.Cells(target, 2), .Cells(target + 47, 2)).PasteSpecial Paste:=xlPasteValues
ws.Range(ws.Cells(2, 28), ws.Cells(49, 28)).Copy
.Range(.Cells(target, 3), .Cells(target + 47, 3)).PasteSpecial Paste:=xlPasteValues
End With
'保存せずに閉じる
wb.Close SaveChanges:=False
Next file
DoEvents
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

No.4ベストアンサー
- 回答日時:
こんにちは
何かの改造で使われているのでしょうか・・・
原因はすでに回答にあるところかなと思いますが
"Scripting.FileSystemObject"を使用しなければスッキリすると思うのと処理も速くなるのではないかと思います
一例です
Sub XmlDataToSheet()
Dim path As String
Dim file As String
Dim target As Long
Dim wb As Workbook
Dim ws As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
path = ThisWorkbook.path & "\"
file = Dir(path & "*.xml") 'パス配下拡張子「.xml」の最初のファイル名を返す
Do While file <> "" 'Dir関数がファイル名を返さなくなるまで繰り返す
'xmlファイルを開く処理
Set wb = Workbooks.OpenXML _
(Filename:=path & file, LoadOption:=xlXmlLoadImportToList)
Set ws = wb.ActiveSheet
With ThisWorkbook.Worksheets(1)
target = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(target, 1).Resize(48, 1).Value = ws.Range("Y2:Y49").Value
.Cells(target, 2).Resize(48, 2).Value = ws.Range("AA2:AB49").Value
End With
'保存せずに閉じる
wb.Close SaveChanges:=False
file = Dir '次のファイル名を返す
Loop
ThisWorkbook.Worksheets(1).Columns("A:C").AutoFit
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
No.3
- 回答日時:
提示されたマクロの場合、自分自身のファイル(マクロを格納したexcelブック)もオープンしてしまいます。
あなたが開こうとしているxmlファイルの拡張子が".xml"であるという前提になりますが、以下のようにしてはいかがでしょうか。
拡張子が".xml"のファイルのみを開くように変えました。
こちらに投稿するとエラーになるので、下記にアップしました。
https://ideone.com/rMuP9l
No.2
- 回答日時:
値だけならコピペより代入の方が良いのかもですけど、コピー元のデータを溜め込まないよう
https://www.sejuku.net/blog/79196
にて
'保存せずに閉じる
wb.Close SaveChanges:=False
'クリップボードにコピーした内容をクリアする
Application.CutCopyMode = False '★ 追加
Next file
1処理毎にクリアしてしまうとか?
No.1
- 回答日時:
開くファイルが多すぎるのでは
そんだけコピペする必要があるのでしょうか。。。
インポートでは出来ないんでしたっけ
https://support.microsoft.com/ja-jp/office/xml-% …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) vba 転記するときの最終行について 2 2022/09/03 09:31
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
このQ&Aを見た人はこんなQ&Aも見ています
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。
-
ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
ゴリラ向け動画配信サイト「ウホウホ動画」にありがちなことを教えて下さい。
-
最速怪談選手権
できるだけ短い文章で怖がらせてください。
-
一番好きなみそ汁の具材は?
みんなで大好きなみそ汁の具材について語り合おうよっ!
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
メモリが不足しています(VBA)
Visual Basic(VBA)
-
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
-
EXCELのVBAで作業ファイルを閉じてもメモリの解放をしなくて困っています
Excel(エクセル)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
DoEventsが必要な理由について
Visual Basic(VBA)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
配列をEraseしてもメモリが開放されていない?
Visual Basic(VBA)
-
8
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
9
DoEventsがやはり分からない
Visual Basic(VBA)
-
10
VBAで「メモリが不足しています」
Visual Basic(VBA)
-
11
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
12
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
13
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
14
エクセルで別シートの同じ位置にオブジェクトをコピーしたい
その他(Microsoft Office)
-
15
Excelのメモリ(配列)の上限は2Gではないのか
Excel(エクセル)
-
16
array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
17
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
18
仮想メモリを増やしても「メモリが不足しています」と表示されソフトが実行できない
Windows 10
-
19
読み込みで一行おきに配列に格納
Visual Basic(VBA)
-
20
メモリ不足
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メモリ不足になった後の処理
-
vbaのエラー対応(実行時エラー...
-
どうやってもFor文を抜けてしま...
-
特定のファイルを他のプロセス...
-
private subモジュールを他のモ...
-
Windows APIのメソッドをPInvok...
-
IF文に時間(何時から何時ま...
-
シグナル 6(SIGABRT)とは?
-
VB6 カウントアップ処理について
-
マクロで、次のコードへ行く前...
-
【C#/Java?】try-catchでcatch...
-
Word VBA。各マクロの間に待ち...
-
VB6のロストフォーカス時の処理...
-
アクセスからエクセルファイル...
-
【VBA】エラー処理で別プロシー...
-
VCでビープ音を鳴らし続ける
-
エクセル VBAで複数セル選択時...
-
“try/catch”と“if/else”
-
エクセルVBAでロックをかけたい
-
UWSCでの例外処理について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
どう増強すべきか
-
private subモジュールを他のモ...
-
vbaのエラー対応(実行時エラー...
-
シグナル 6(SIGABRT)とは?
-
IF文に時間(何時から何時ま...
-
マクロで、次のコードへ行く前...
-
特定の名前のオートシェイプの...
-
ExcelのVBAで、選択したファイ...
-
Excel VBA セルの名前があるか...
-
どうやってもFor文を抜けてしま...
-
【VBA】エラー処理で別プロシー...
-
順番に処理させたい
-
VBAでBook読み込み時の非表示方...
-
特定のファイルを他のプロセス...
-
【C#】Page_Loadさせない方法に...
-
途中で処理を中断させたい (ア...
-
シェルスクリプトでファイル内...
-
エクセルVBAでロックをかけたい
-
VBA 複数の行を高速で削除する...
おすすめ情報