2013-11-20 31 views
-1

我有一個數據庫鏈接到其他幾個人。有問題的數據庫有一些腳本,用於將表格導出到Excel「.xlsx」,其名稱鏈接到其他數據庫。基本上數據錄入是在一個數據庫中完成的,然後另一個數據庫將現場信息提取出來,以便實時更新。代碼殺死當前Excel文件,然後導出到新的Excel文件,而不打開輸出文件

但是,kill序列完成並導出新文件後,Excel文件打開。這會導致第二個數據庫無法看到實時更新的問題,因爲新的導出文件實際上並沒有覆蓋前一個自動打開的前一個數據庫。我需要幫助,告訴Excel導出文件不要打開。

我知道我應該昏暗的文件名,但我沒有:-)。

下面是代碼,非常感謝任何幫助。

Private Sub Form_Activate() 

'Delete Existing File First; then create new 
On Error Resume Next 
Kill "\\ct13nt003\MFG\SMT_Schedule_Files\SMT Line Progress Files\SMT2Updated.xlsx" 
On Error GoTo 0 
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "SMT2Export", "\\ct13nt003\MFG\SMT_Schedule_Files\SMT Line Progress Files\SMT2Updated.xlsx", True 
+0

有以下任何解決您的問題的答案?如果是這樣,請將其中一個標記爲已接受... –

回答

-1

該代碼在Kill xlFileName之前有On Error Resume Next。這意味着如果Kill出於任何原因失敗,它將無聲無息地失敗。

我不知道這個問題是否有助於解決您的問題,但建議您以此方式嘗試。

'Delete Existing File First; then create new 
'On Error Resume Next 
If Len(Dir(xlFileName)) > 0 Then 
    Kill xlFileName 
Else 
    ' xlFileName does not exist; no Kill required 
End If 
'On Error GoTo 0 
+0

我在那裏有'On Error Resume Next'這一行,以便在文件不存在的情況下(可能會不時出現這種情況)跳過這一步。 – ackdaddy

+0

聽起來像問題不是'kill',而是'DoCmd.TransferSpreadsheet'方法*打開*文件的事實。沒有oprion /參數來阻止文件打開,所以我認爲它有必要立即強制文件關閉,根據我上面的建議。 –

+0

@DavidZemens這正是我的想法。非常感謝您的幫助。 – ackdaddy

1

的肢體,走出去在這裏,因爲我真的不中訪問做VBA,但我做了很多與Excel,以便你可以試試:

Private Sub Form_Activate() 
Const xlFileName as String = "\\ct13nt003\MFG\SMT_Schedule_Files\SMT Line Progress Files\SMT2Updated.xlsx" 
Const shortFileName as String = "SMT2Updated.xlsx" 
Dim xlApp As Object 'Excel.Application 
Dim xlWb as Object 'Excel.Workbook 

'Delete Existing File First; then create new 
On Error Resume Next 
Kill xlFileName 
On Error GoTo 0 

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "SMT2Export", xlFileName, True 

'Get the Excel Application 
Set xlApp = GetObject(,"Excel.Application") 
'Get the specific workbook 
Set xlWb = xlApp.Workbooks(shortFileName) 
'Close the workbook 
xlWb.Close 
'Quit Excel (if needed) 
'xlApp.Quit 

'Clean up 
Set xlWb = Nothing 
Set xlApp = Nothing 
End Sub 

下標超出範圍錯誤

使用文件的名稱,而不是上面每個版本的xlApp.Workbooks方法的完整路徑。

這個錯誤還有另一個可能的原因,但這是最可能的。

+0

感謝您的反饋David。我一直在「Set xlWb = xlApp.Workbooks(xlFileName)」 – ackdaddy

+0

@ user2887400行上拋出運行時錯誤9請參閱上面的修訂。讓我知道這是否適合你。 –

0

通讀您的場景,我很難過,因爲我從來沒有遇到過「殺死」文件這樣的問題。也許像其他用戶所建議的那樣,您應該關閉「On Error Resume Next」,至少在您找出發生此錯誤的原因之前。

另一個建議是嘗試不同的刪除方法,像

myFSO.DeleteFile "\\ct13nt003\MFG\SMT_Schedule_Files\SMT Line Progress Files\SMT2Updated.xlsx"