
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も見ています
-
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
Excel VBAのApplication.ExecuteExcel4Macro
Access(アクセス)
-
VBAでのExecuteExcel4Macroの値取得でエラー
Excel(エクセル)
-
-
4
Excel VBA Application.caller エラー2023について
Visual Basic(VBA)
-
5
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
6
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
7
ExecuteExcel4Macroを使って他のブックを開かずにセルを
Excel(エクセル)
-
8
vbaで指定したセルより下の行を指定する方法について vbaの質問です。 例えば、「C6」セルより下
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】同じ関数なのに、エラ...
-
「パス名が無効です」の発生原因
-
batファイルでレジストリキーの...
-
PowerShellを使って関連付けら...
-
この EXCEL VBA の意味を教えて...
-
access テキストボックスの値取得
-
gccを行ってもexeファイルが生...
-
VBでファイルが開かれているか...
-
VBから参照できないCのDLLを使...
-
エクセルマクロでエラーの原因...
-
FORTRANの実行エラーについて
-
ADOを使用してExcelファイルを...
-
ExcelVBAで既に開いてるwordを...
-
fgets関数のEOFの扱い方について
-
アクセスのクエリでコンパイル...
-
メディアプレイヤーが動かない?
-
VBScriptでエクセル VBProject
-
排他ロックが掛かっているファ...
-
EXCELのVBAでの保存方法
-
兵庫県教員採用試験の願書記入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【関数】同じ関数なのに、エラ...
-
access テキストボックスの値取得
-
「パス名が無効です」の発生原因
-
ExcelVBAで既に開いてるwordを...
-
NAS上のファイルの使用中が解除...
-
Returnに対するGoSubがありません
-
gccを行ってもexeファイルが生...
-
PowerShellを使って関連付けら...
-
batファイルでレジストリキーの...
-
アクセスのクエリでコンパイル...
-
VB6 Dir関数で52エラー発生
-
エクセルマクロでエラーの原因...
-
VBでファイルが開かれているか...
-
【COBOL】read文でエラー
-
FTPの送信結果を検知したい
-
VBから参照できないCのDLLを使...
-
fgets関数のEOFの扱い方について
-
ACCESS VBAでのインポート
-
データベースソフトのアクセス2...
-
DisplayAlertsブロパティで ”実...
おすすめ情報