2016-11-14 36 views
0

我的Access Access導出到.csv模塊有問題。一切工作正常,在其他部分,如導入一個列表,導入第二列表,進行查詢和導出IF我不改變我的輸出文件名,我迷路了,不知道爲什麼改變輸出文件名原因訪問顯示錯誤:訪問VBA - 導出.csv模塊,自定義文件名

運行時錯誤:3027: 無法更新。數據庫或對象是隻讀的。

一切工作正常如果輸出文件保持默認。

模塊下面的代碼:

Public Sub exportQuery(exportSQL As String) 
Dim db As DAO.Database, qd As DAO.QueryDef 
Dim fd As FileDialog 
Set fd = Application.FileDialog(msoFileDialogSaveAs) 

Set db = CurrentDb 

'Check to see if querydef exists 
For i = 0 To (db.QueryDefs.Count - 1) 
    If db.QueryDefs(i).Name = "tmpExport" Then 
     db.QueryDefs.Delete ("tmpExport") 
     Exit For 
End If 
Next i 

Set qd = db.CreateQueryDef("tmpExport", exportSQL) 

'Set intial filename 
fd.InitialFileName = "Deduplicated list_" & Format(Date, "mmddyyy") & ".csv" 

If fd.Show = True Then 
    If Format(fd.SelectedItems(1)) <> vbNullString Then 
     DoCmd.TransferText acExportDelim, , "tmpExport", fd.SelectedItems(1), True 
    End If 
End If 

'Cleanup 
db.QueryDefs.Delete "tmpExport" 
db.Close 
Set db = Nothing 
Set qd = Nothing 
Set fd = Nothing 

End Sub 
+1

你改變從.csv文件擴展名不同的東西?看看這裏:http://stackoverflow.com/questions/40548303/error-when-sql-querying-flatfiles-with-custom-file-extenstion – Andre

+0

謝謝你提供的解決方案。我用附加了.csv擴展名的文件名的函數來回答。 – jadupl

回答

1

SORRY:沒有注意到@Andre在上面的評論中爲我提供了一個解決方案。非常感謝你

好的,我找到了解決辦法。問題是,當你輸入自定義名稱時,它必須有.csv擴展名。我實現了功能,與追加的.csv

Function getCSVName(fileName As String) As String 
Dim pos As Long 
pos = InStrRev(fileName, ".") 
If (pos > 0) Then 
fileName = Left$(fileName, pos - 1) 
End If 
getCSVName = fileName & ".CSV" 

End Function 

而且使用它的文件名中導出模塊:

DoCmd.TransferText acExportDelim, , "tmpExport", getCSVName(fd.SelectedItems(1)), True 
+0

np,這只是我身邊的猜測。 :) – Andre

0

看起來很好,和當地適合我,當我在代碼中輸入一個簡單的SQL命令以上。 我會建議檢查您嘗試執行的SQL命令。

+0

謝謝。問題在於輸出文件的擴展。我提交答案,現在所有作品都像魅力一樣。 – jadupl