
下記、xmlファイルを開いてコピペするというvbaの記述です。しかし、
ThisWorkbook.Worksheets(1).Range(Cells(target, 1), Cells(target + 287, 1)) = wb.Range(Cells(2, 25), Cells(289, 25))
の行で、実行時エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。とエラーが出てしまいます。どのように修正したらいいかおしえていただけないでしょうか。
Sub OpenFilesInFolder()
Dim path, fso, file, files
Dim target As Long
path = ThisWorkbook.path & "\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set files = fso.GetFolder(path).files
'フォルダ内の全ファイルについて処理
For Each file In files
'ファイルを開いてブックとして取得
Dim wb As Workbook
Workbooks.OpenXML _
Filename:=file.path, LoadOption:=xlXmlLoadImportToList
Set wb = ActiveWorkbook
' MsgBox wb.Name
'ブックに対する処理
target = ThisWorkbook.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
ThisWorkbook.Worksheets(1).Range(Cells(target, 1), Cells(target + 287, 1)) = wb.Range(Cells(2, 25), Cells(289, 25))
ThisWorkbook.Worksheets(1).Range(Cells(target, 2), Cells(target + 287, 2)) = wb.Range(Cells(2, 27), Cells(289, 27))
ThisWorkbook.Worksheets(1).Range(Cells(target, 3), Cells(target + 287, 3)) = wb.Range(Cells(2, 28), Cells(289, 28))
'保存せずに閉じる
Call wb.Close(SaveChanges:=False)
Next file
End Sub

No.2
- 回答日時:
wb.Range(Cells(2, 25), Cells(289, 25)
この指定の場合、wbはシートで無いとイケナイのに、実際はwbにはSet wb = ActiveWorkbookでブックを指定してる。
Set wb = ActiveSheet じゃ無いのですか??
No.1
- 回答日時:
こんにちは
違う原因の場合もあるかも知れませんが、ひとまず気付いた点を・・・
>ThisWorkbook.Worksheets(1).Range(Cells(target, 1), Cells(target + 287, 1)) = _
>wb.Range(Cells(2, 25), Cells(289, 25))
Rangeの指定がそれぞれ、Worksheet(1)、wbとなっていますが、範囲指定をしているCells()は無指定なので、デフォルトのActivesheet.Cells()として解釈されます。
他シートのセルを参照するわけにはいかないので、それが原因ではないでしょうか?
ThisWorkbook.Worksheets(1).Cells(target, 1).Resize(288)
等としておけば、矛盾は生じないと思います。
あるいは、targetの値(=既存最終行)が大きすぎて、シートの列内に納まらないとか・・
(多分、この場合は違うエラーメッセージになりそう)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
実行時エラー 438 の解決策をおしえてください。
Visual Basic(VBA)
-
エクセルの実行時エラー 438"に困っています"
Excel(エクセル)
-
-
4
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
5
実行時エラー438 オブジェクトはこのプロパティまたはメソッドをサポートしていません について
Visual Basic(VBA)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
8
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
9
【Excel VBA】書き込み先ブックが既に開かれてた場合の処理
Visual Basic(VBA)
-
10
【Excel VBA】Worksheets().Active でエラーが出る原因を教えてください
Visual Basic(VBA)
-
11
オブジェクトは、このプロパティまたはメソッドをサポートしていません。Rangeが原因?
Visual Basic(VBA)
-
12
access2021 VBA メソッドまたはデータメンバーが見つかりません エラー発生
Access(アクセス)
-
13
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
14
VBAコード記述に際して、コード全体を自動的にインデント付ける方法
Access(アクセス)
-
15
VBA ファイルを開くダイアログでの初期表示にファイルサーバーを指定
Excel(エクセル)
-
16
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
17
【VBA】ワークブックを開く時にエラーが出る場合と出ない場合の違いは?
Excel(エクセル)
-
18
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
19
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
20
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのListBoxで複数選択して...
-
エクセルVBA(実行時エラー438...
-
エクセルテキストボックスの文...
-
ハイパーリンクされているファ...
-
メッセージを1度だけ表示したい。
-
エクセルVBA セル選択後にカレ...
-
【VBA】参照値を1ずつ増やして...
-
EXCELマクロ 保護されているシ...
-
JTableでのCELLの複数選択
-
エクセル:マクロ「Application...
-
Excel 行の連続データを列に参...
-
Excelに入力した個々の日付の数...
-
エクセル逆三角マークで選択項...
-
エクセルの画面で十字マークが...
-
31:30:00が1900/1/1 7:30:0
-
エクセルのセル内に全角数字を...
-
IF関数で空欄("")の時、Null...
-
Excel2010の指マークと白十字マ...
-
エクセルで表示形式の時刻の「0...
-
マウスポインターが白十字のまま
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA(実行時エラー438...
-
EXCELマクロ 保護されているシ...
-
VBAのListBoxで複数選択して...
-
データが入力されている隣のセ...
-
VBAで、貼り付け禁止命令を実現...
-
メッセージを1度だけ表示したい。
-
エクセルテキストボックスの文...
-
ダブルクリックすると現在の時...
-
VBA セルに合わせて移動するが...
-
Swing 編集不可でも選択可能なJ...
-
Jtableの特定のセルの背景色や...
-
ハイパーリンクされているファ...
-
セル色を5秒間隔で変える
-
Excel VBA ダブルクリックで入...
-
VBAで丸をつけたいです。
-
セルに数値が入力されたら別の...
-
Windowsで動くVBAがmacOSで動か...
-
FileSearch2007に変わる構文に...
-
GrapeCityのSpreadの複数セルの...
-
現在 target.value = format(ta...
おすすめ情報