2017-04-14 43 views
1

我有一個導出文件的按鈕,但首先會檢查該文件是否存在。如果確實如此,則刪除該文件並在其位置上寫入新文件。問題是單擊此按鈕會立即崩潰數據庫。任何想法爲什麼?這個問題最近纔出現 - 在Acess 2013和Access 2016之前工作正常。環境是一種商業環境(公司筆記本電腦,而不是私人環境),我們所做的大部分工作都由I.T管理。管理員。MS Access:嘗試刪除電子表格時數據庫崩潰

代碼:

Private Sub Command370_Click() 

    Dim myQueryName As String 
    Dim myExportFileName As String 

    myQueryName = "qry_SAP_FGCheck" 
    myExportFileName = "J:\2017\SAP\SAPExports\DailyFGCheck_Export.xlsx" 
    If Len(myExportFileName) > 0 Then 
     On Error GoTo Err_Msg 
     Kill myExportFileName 
    End If 
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, myQueryName, myExportFileName 
    Application.FollowHyperlink myExportFileName 

Err_Msg: If (Err.Number = 70) Then MsgBox "Error: (" & Err.Number & ")" & Err.description & ". You must close the spreadsheet in order to export.", vbOKOnly Else Resume Next 


End Sub 

回答

2

可能有一個名爲按鈕點擊事件的機器上沒有這樣的目錄。您使用驅動器號J:\建議用戶定義的映射驅動器路徑到網絡目錄。用戶可能已映射到不同的驅動器號。嘗試完整的UNC可在CMD線net use發現:

myExportFileName = "\\SomeNetwork\Path\2017\SAP\SAPExports\DailyFGCheck_Export.xlsx" 

事實上,現在的文件始終刪除,因爲你正在檢查VBA字符串的長度(始終爲零)爲您分配它只是之前而不是實際的文件系統對象。

If Len(Dir(myExportFileName, vbDirectory)) > 0 Then 
    On Error GoTo Err_Msg 
    Kill myExportFileName 

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _ 
           myQueryName, myExportFileName 
    Application.FollowHyperlink myExportFileName 
End If 

即使考慮保存到數據庫的當前路徑,也無所謂什麼目錄是提供給用戶,甚至可以避免覆蓋:

如果這樣的目錄文件路徑刪除或導出之前存在考慮調理其他用戶的出口。

myExportFileName = Application.CurrentProject.Path & "\DailyFGCheck_Export.xlsx" 

If Len(Dir(myExportFileName, vbDirectory)) > 0 Then 
    On Error GoTo Err_Msg 
    Kill myExportFileName 

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _ 
           myQueryName, myExportFileName 
    Application.FollowHyperlink myExportFileName 
End If 

,理想的每個用戶使用的是當地的CPU(即,C:\驅動器),他/她自己的前端。