对不起,如果代码很脏,我很新。我正在尝试编写一个复制工作表的宏,删除一些不必要的部分,然后将工作表导出到vba中 它第一次工作正常,但如果我尝试在同一个excel实例中运行代码两次,整个事情就会冻结。如果csv文件存在并不重要,我注意到当文件保存为csv时会发生错误。
Option Explicit
Sub Create_CSV()
Dim WbPath As String
Application.ScreenUpdating = False
Dim fso As New Scripting.FileSystemObject
WbPath = ThisWorkbook.Path & "\" & fso.GetBaseName(ActiveWorkbook.Name) & " GRID UPLOAD.csv"
If FileExist(WbPath) Then
SetAttr WbPath, vbNormal
Kill WbPath
End If
Sheets("GRID UPLOAD").Copy after:=Worksheets("GRID UPLOAD")
ActiveSheet.Name = "GRID EXPORT"
With Sheets("GRID Export")
.Rows("1:3").Delete Shift:=xlUp
.Cells.ClearFormats
.Shapes("GRIDBUTTON").Delete
.UsedRange.Value = .UsedRange.Value
.Move
End With
' Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=WbPath, _
FileFormat:=xlCSV, CreateBackup:=False
' Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Function FileExist(FilePath As String) As Boolean
Dim TestStr As String
On Error Resume Next
TestStr = Dir(FilePath)
On Error GoTo 0
'Determine if File exists
If TestStr = "" Then
FileExist = False
Else
FileExist = True
End If
答案 0 :(得分:0)
好的,我想我有一个答案。你有两个选择。第一个是程序化的,并保证让你的代码工作,虽然它不会“解决”未来尝试的问题。做:
If FileExist(WbPath) Then
ActiveWorkbook.Save
Else
ActiveWorkbook.SaveAs Filename:=WbPath, _
FileFormat:=xlCSV, CreateBackup:=False
Application.ScreenUpdating = True
End If
这样,它将保证您不会为给定的工作簿多次调用SaveAs。
另一方面,您可以尝试修复Excel 2013版本。由于某种原因,Office 2013套件中记录了崩溃的详细信息,您可以通过一些资源寻求帮助:
我希望我的回答能满足你的问题。如果您需要其他帮助,请与我们联系。