プロが教える店舗&オフィスのセキュリティ対策術

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"

A 回答 (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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています