実行時エラー '52'が表示されています。 VBAはエラーを強調表示します:vFile = Dir(ThisWorkbook.Path & "C:\ Users \ user_id \ Desktop \ ml \ testdirectory \")。実行時エラー '52'不正なファイル名または番号
このディレクトリが存在し、ここに.csvファイルがあります。このディレクトリのファイル名は次のとおりです。12345678-111111.forecast.csv; 12345-222.forecast.csv。
'fixing:run time error '-2147467259 automation error unspecified error
Sub Unprotect_WorkSheet_With_Password()
Sheets("Sheet1").Unprotect "YourPassword"
End Sub
Sub Consolidate()
Dim sSQL As String 'SQL String
Dim oCn As Object 'Connection
Dim oRs As Object 'Recordset
Dim vFile As Variant 'File Name
Dim sCustomer As String 'Customer ID
Dim sItem As String 'Inventory Item ID
' Get filenames
vFile = Dir(ThisWorkbook.Path & "C:\Users\user_id\Desktop\ml\testdirectory\*.csv")
' Create SQL
While vFile <> vbNullString
If sSQL <> vbNullString Then sSQL = sSQL & vbCr & "Union " & vbCr
sCustomer = Split(vFile, "-")(0)
sItem = Split(Split(vFile, "-")(1), ".")(0)
sSQL = sSQL & "Select '" & sCustomer & "' as Customer, '" & sItem & "' as Item, * from [" & vFile & "]"
vFile = Dir
DoEvents
Wend
' Create Connection Objects
Set oCn = CreateObject("ADODB.Connection")
Set oRs = CreateObject("ADODB.Recordset")
oCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.Path & ";" & _
"Extended Properties=""Text;HDR=YES;FMT = CSVDelimited"";"
oRs.Open sSQL, oCn
Debug.Print sSQL
If Sheet1.ListObjects.Count > 0 Then Sheet1.ListObjects(1).Delete
Sheet1.ListObjects.Add(_
SourceType:=xlSrcQuery, _
Source:=oRs, _
Destination:=Sheet1.Range("C6")).QueryTable.Refresh
oRs.Close
oCn.Close
Set oRs = Nothing
Set oCn = Nothing
End Sub
インターネットで調査した結果、.forecast.csvが原因で発生している可能性があります。私は.forecastを削除してVBAコードを実行しましたが、問題は解決しませんでした。
別のテスト:(私は別のエラーが発生します) パス= "C:\ Users \ユーザーのuser_id \デスクトップ\ミリリットル\ testdirectory \" VFILE = DIR(パス& "* .CSV")
Path = "C:\Users\user_id\Desktop\ml\testdirectory\"
vFile = Dir(Path & "*.forecast.csv")
'C:\ Users \ User \ Desktop \ ml \ testdirectory \ *。csv'で連結された' ThisWorkbook.Path'(C:\ Users \ User_Id \ Desktop \)はどのように機能すると思いますか? 「C:¥Users¥User¥Desktop¥C:¥Users¥User_Id¥Desktop¥ml¥testdirectory」というフォルダはありません。不確かな場合は、文字列に割り当てる簡単なテストを行い、 'Temp = ThisWorkBook.Path &&" C:¥Users¥User_id¥Desktop¥ml¥testdirectory¥*。csv'という文字列を表示し、それをaメッセージボックス。それは有効ですか? –