
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で「メモリが不足しています」
Visual Basic(VBA)
-
5
配列をEraseしてもメモリが開放されていない?
Visual Basic(VBA)
-
6
DoEventsが必要な理由について
Visual Basic(VBA)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
9
仮想メモリを増やしても「メモリが不足しています」と表示されソフトが実行できない
Windows 10
-
10
DoEventsがやはり分からない
Visual Basic(VBA)
-
11
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
12
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
13
Excelのメモリ(配列)の上限は2Gではないのか
Excel(エクセル)
-
14
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
15
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
16
array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
17
Rangeメソッドは失敗しました。globalオブジェクトについて
Excel(エクセル)
-
18
2画面表示でのVBAのボタン押下後のform表示の位置
Excel(エクセル)
-
19
メモリの消費量について
Visual Basic(VBA)
-
20
もしセルが#N/A"なら~をする・・・には?"
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataSetの更新時のエラーについ...
-
マクロで、次のコードへ行く前...
-
変数を使用したFunctionから戻...
-
VBA ユーザーフォーム上にテロ...
-
VBAでエラー処理を行いたいです
-
For ~ Next の使い方
-
エクセル VBAで複数セル選択時...
-
StatusStripの表示が更新されな...
-
特定の名前のオートシェイプの...
-
VBA For Each 〜 複数条件について
-
IF文に時間(何時から何時ま...
-
VBA 複数の行を高速で削除する...
-
private subモジュールを他のモ...
-
ASP.netにて質問です。
-
LoadPicture のオートメーショ...
-
VC++でPostgreSQLのバックアッ...
-
エクセルVBAのChangeイベント時...
-
ドリブン??
-
エクセルVBAでプロシージャ名を...
-
Functionで戻り値を複数返す方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
vbaのエラー対応(実行時エラー...
-
シグナル 6(SIGABRT)とは?
-
どう増強すべきか
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
特定の名前のオートシェイプの...
-
Excel VBA セルの名前があるか...
-
マクロで、次のコードへ行く前...
-
ExcelのVBAで、選択したファイ...
-
特定のファイルを他のプロセス...
-
VB6にてネットワーク上にある共...
-
どうやってもFor文を抜けてしま...
-
Word VBA。各マクロの間に待ち...
-
エクセル VBAで複数セル選択時...
-
【VBA】エラー処理で別プロシー...
-
フォルダのアクセス権確認について
-
VBA For Each 〜 複数条件について
-
StatusStripの表示が更新されな...
-
【C#】Page_Loadさせない方法に...
おすすめ情報