2016-10-27 116 views
0

実行時エラー '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") 
+1

'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メッセージボックス。それは有効ですか? –

答えて

0

ThisWorkbook.PathC:\Documents and Settings\myprofile\Desktopのようなものを返します。

あなたのDIRの行は、"C:\Documents and Settings\myprofile\DesktopC:\Users\user_id\Desktop\ml\testdirectory\*.csv"となります。

確かにそれは正しいことはできません - あなたは....二回そこに

をドライブ文字を持っている多分それはThisWorkbook.Path & "\ml\testdirectory\*.csv"mlを提供するようなものである必要があり、そのワークブック同じフォルダ内にサブフォルダにあります

関連する問題