我創建了一個xlam
(Excel 2007加載項)文件來處理各種文件的操作。我試圖在xlam
文件中編寫一個程序,該文件從已打開的xlsm
文件中刪除一些工作表,並將其保存爲xlsx
(即不含宏)。調用.SaveAs崩潰Excel
到目前爲止,我唯一能做的就是在遇到.SaveAs
調用時崩潰Excel。崩潰來作爲Windows對話框說明:
Microsoft Office Excel已停止工作,Windows可以嘗試恢復您的信息並重新啓動程序。 [重新啓動程序] [調試程序]
在,我保存到文件夾,我離開每次崩潰之後我用一個臨時文件(如文件名:7A275000與大小:0)的它試圖保存到的文件夾。
爲後人這裏有些東西我都試過了,等一切都導致死機一樣:
- 硬編碼的文件名值( 「C:\用戶\ MyUserName輸入\桌面\ temp.xlsx」) 從用戶
- 提示文件名(顯示在下面的代碼)
- 文件名沒有路徑( 「temp.xlsx」)
- 文件名不包括擴展名( 「C:\ Users \用戶名爲myUsername \桌面\ TEMP」)
- 文件名作爲現有文件名無擴展名
- 文件名作爲現有的文件名與擴展的.xlsx
- 代替使用
wb.SaveAs
,我用隨後ActiveWorkbook.SaveAs
wb.Activate
我試圖FileFormat:=xlOpenXMLWorkbook
FileFormat:=xlWorkbookNormal
和- 保存到不同長度
- 加入的幾個不同的目錄錯誤捕獲語句圍繞
.SaveAs
調用(它不捕獲任何錯誤,並使Excel崩潰)
最後一個奇怪的位是當我嘗試在文件上執行手動Save-As(即在調用ws.delete
之後,我自己導航到「另存爲」菜單),Excel以同樣的方式崩潰。如果我自己手動刪除工作表,然後執行手動另存爲,它可以節省很多。
這裏是有問題的代碼:
Public Sub ConvertToStagingFile(ByRef wb As Workbook)
Dim reWS As Object, reFILE As Object
Dim ws As Worksheet
Set reWS = CreateObject("VBScript.regexp")
reWS.IgnoreCase = True: reWS.Global = False: reWS.MultiLine = False
Set reFILE = CreateObject("VBScript.regexp")
reFILE.IgnoreCase = True: reFILE.Global = False: reFILE.MultiLine = False
reWS.Pattern = "^(home|location settings|date reference|[\w\s]{1,8} (rating|inquire) data|pkl data - \w{1,8}|verbs - \w{1,8})"
reFILE.Pattern = "\.xlsm$"
For Each ws In wb.Worksheets
If (ws.Visible = xlSheetHidden) Or (ws.Visible = xlSheetVeryHidden) Then
ws.Visible = xlSheetVisible
End If
Select Case True
Case reWS.test(ws.name)
'// Do Nothing
Case Else
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End Select
Next ws
ActiveWindow.TabRatio = 0.75
If (reFILE.test(Cached.getAdhocReportFull)) Then
Dim newName As Variant
newName = Application.GetSaveAsFilename(reFILE.Replace(Cached.getAdhocReportFull, ""), "*.xlsx")
If newName = False Then Exit Sub
wb.Activate
Application.EnableEvents = False
'// CODE RELIABLY CRASHES HERE
wb.SaveAs _
FileName:=newName, _
FileFormat:=xlOpenXMLWorkbook, _
CreateBackup:=False
Application.EnableEvents = True
End If
End Sub
在這個問題上的任何幫助,將不勝感激。
是excel的大小巨大嗎? – Vasim
是的......對於excel文件來說,這是一個很大的麻煩。它可以是2-4mb的大小。大文件保存需要考慮什麼? –
嘗試減小大小,如果已經使用範圍(vlookup,index)嘗試縮小大小,請使用命名公式 - 減少範圍...否則您的文件可能已損壞嘗試創建新版本並嘗試.. 。 – Vasim