ExecuteExcel4Macroにてシート内のセルデータを取り出したいのですが、ファイル名を変更直後にマクロを実施すると「型が一致しません」のエラーが出てきます。その後一度エラーをOKで閉じてもう一度実行すると普通に実行されます。
何が原因でしょうか。(使用エクセルは365です)
以下コード
Sub FileSearch(Path As String, Target As String)
Dim FSO As Object, Folder As Variant, File As Variant
Dim pos As Long, pos2 As Long, a As String, Filname As String
Dim buf As String
Dim buf1 As String
Dim SumpleName As String
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each Folder In FSO.GetFolder(Path).SubFolders
Call FileSearch(Folder.Path, Target)
Next Folder
For Each File In FSO.GetFolder(Path).Files
If File.Name Like Target Then
pos = InStrRev(File, "\")
a = Mid(File, pos + 1)
pos2 = InStrRev(a, ".")
filename = Left(a, pos2 - 1)
Path1 = Path
Workbooks.Open File
Workbooks(a).Close
SumpleName = ExecuteExcel4Macro("'" & Path & "\[" & a & "]" & filename & "'!R52C1")
Name File As Path & "\" & SumpleName & ".csv"
No.1ベストアンサー
- 回答日時:
当方にエクセル365の環境がないので、何とも言えませんが、
SumpleName = ExecuteExcel4Macro("'" & Path & "\[" & a & "]" & filename & "'!R52C1")
の行を
SumpleName = CStr(ExecuteExcel4Macro("'" & Path & "\[" & a & "]" & Filename & "'!R52C1"))
に書き換えてみたらどうなりますか?
もし、これで「型が一致しません」のエラーが消えて、結果のファイル名が「エラー 2023」
となるようなら、targetとしているファイルが「.csv」なのではないですか?
「エラー 2023」はセルの値を取得しようとしているシート名が存在しないときに表示されます。
.xls(x)のファイルではシート名という概念がありますが、そもそもcvsは複数シートを保存できず、
シート名という概念はないのではないかと思います。
当方での検証ではtargetとしているファイルが.xls(x)のときは「型が一致しません」のエラーにはなりませんでした。
以下のURLでは、「ExecuteExcel4MacroはCSVファイルは扱えない」という記述も見られます。
https://detail.chiebukuro.yahoo.co.jp/qa/questio …
targetとするファイルが「.csv」とならざるを得ない場合、
上記のURLを参考にしてExecuteExcel4Macroの使用を避けるか、
根本的解決ではありませんが、
Set FSO = CreateObject("Scripting.FileSystemObject")
の次の行に
retry:
を入れて
SumpleName = CStr(ExecuteExcel4Macro("'" & Folder.Path & "\[" & a & "]" & Filename & "'!R52C1"))
の行の次を以下に書き換える方法はどうでしょうか?
On Error Resume Next
If SumpleName = "エラー 2023" Then GoTo retry
Name File As Folder.Path & "\" & SumpleName & ".csv"
If Err.Number <> 0 Then goto retry
On Error GoTo 0
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
VBAでのExecuteExcel4Macroの値取得でエラー
Excel(エクセル)
-
ファイルを閉じたままの外部参照で最終行の行数取得
Visual Basic(VBA)
-
Excel VBA ExecuteExcel4Macroについて
その他(Microsoft Office)
-
-
4
Excel VBA Application.caller エラー2023について
Visual Basic(VBA)
-
5
Excel VBAのApplication.ExecuteExcel4Macro
Access(アクセス)
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
VBScriptによるExecuteExcel4Macroの使い方について
Visual Basic(VBA)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
VBAで文字を反映させると255文字の制限になってしまいます。
Visual Basic(VBA)
-
10
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
11
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
12
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
13
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
14
Excelで数式内の文字色を一部だけ変更したい
Excel(エクセル)
-
15
Excel2000のマクロが2007で型が一致しませんと表示されます
Excel(エクセル)
-
16
エクセルのグラフのデータ系列の順序をVBAで変更する
Excel(エクセル)
-
17
VBAのフォント変更(エクセルからoutlookのメール作成において)
Visual Basic(VBA)
-
18
VBA ブックを開かずにブック内のデータを取得する方法
Visual Basic(VBA)
-
19
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
20
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「パス名が無効です」の発生原因
-
RAR圧縮ファイル(分割)の順番が...
-
PowerShellを使って関連付けら...
-
DisplayAlertsブロパティで ”実...
-
gccを行ってもexeファイルが生...
-
メニューのショートカットキー
-
Microsoft Photo Editorのエラ...
-
DOCUMENT行の書き出しについて-...
-
システムのシャットダウンは既...
-
Adobeのプレミアプロの書き出し...
-
Excel VBAのApplication.Execut...
-
VBA ExecuteExcel4Macro 型が一...
-
兵庫県教員採用試験の願書記入...
-
VBでファイルが開かれているか...
-
構造体をランダムファイルに書...
-
外付けHDDが調子悪い 故障の前...
-
「複数の選択範囲に対して実行...
-
ISOファイルとMDSファイル
-
生鮮MDシステムについて。
-
差し込み印刷の元データファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gccを行ってもexeファイルが生...
-
VBでファイルが開かれているか...
-
「パス名が無効です」の発生原因
-
batファイルでレジストリキーの...
-
VBから参照できないCのDLLを使...
-
FTPの送信結果を検知したい
-
access テキストボックスの値取得
-
PowerShellを使って関連付けら...
-
Returnに対するGoSubがありません
-
アクセスのクエリでコンパイル...
-
OUTLOOK VBA 指定フォルダ内の...
-
Adobeのプレミアプロの書き出し...
-
EXCELのVBAでWORDが開いてある...
-
NAS上のファイルの使用中が解除...
-
すでにファイルが開かれている...
-
VB6 Dir関数で52エラー発生
-
FORTRANの実行エラーについて
-
Excelvbaのマクロのファイル名...
-
Excelファイルのマクロによる排...
-
エクセルマクロでエラーの原因...
おすすめ情報