删除并创建同名的新工作簿
Deleting and creating a new workbook with the same name
我想创建一个名为 'Land-DE' 的新工作簿。如果该文件已经存在于目录中,它必须在创建新文件之前自动将其删除。我试过使用以下代码,但它不起作用。
Sub createwb()
Workbooks.add
Dim FSO
Dim path As String
Set FSO = CreateObject("Scripting.FileSystemObject")
set path = "D:\Job\Land-DE.xlsx"
If FSO.FileExists(path) Then
FSO.DeleteFile path, True
else
ActiveWorkbook.SaveAs "D:\Job\Land-DE.xlsX"
End If
End Sub
为什么一定要先删除再保存?够了吗:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs "D:\Job\Land-DE.xlsx"
Application.DisplayAlerts = True
看看下面的内容。这将检查是否存在名称在 path
中定义的文件,如果是,则在再次保存之前将其删除。
Sub Createwb()
Dim path As String
path = "D:\Job\Land-DE.xlsx"
If Dir(path) <> "" Then Kill path
ActiveWorkbook.SaveAs path
End Sub
Sub createwb()
Workbooks.Add
Dim FSO
Dim path As String
Set FSO = CreateObject("Scripting.FileSystemObject")
path = "D:\Job\Land-DE.xlsx"
If FSO.FileExists(path) Then
FSO.DeleteFile path, True
End If
ActiveWorkbook.SaveAs path
End Sub
两件事:Set
用于设置对象。那里的路径只是一个字符串变量。对象是一组函数和变量,就像您在其上方创建的 FSO 对象一样。
接下来,你要确定你删除后是保存的,而且再次循环时,上一版的保存还没有打开。如果是,您将因尝试保存当前打开的文件而获得拒绝权限。
您的代码存在多个问题
set path = "D:\Job\Land-DE.xlsx" 'It is syntax error, you can only set object in VBA , string is not considered as object
FSO.DeleteFile path, True 'USE kill instead, better performance
ActiveWorkbook.SaveAs "D:\Job\Land-DE.xlsX" ' Do not user active keyword, always set the object
代码如下:
Sub createwb()
Dim wbnew As Workbook
Set wbnew = Workbooks.Add
Dim path As String
path = "D:\Job\Land-DE.xlsx"
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(path) Then
On Error Resume Next
Workbooks("Land-DE").Close False ' Close the workbook if open
Kill path
wbnew.SaveAs path
Else
wbnew.SaveAs path
End If
End Sub
我想创建一个名为 'Land-DE' 的新工作簿。如果该文件已经存在于目录中,它必须在创建新文件之前自动将其删除。我试过使用以下代码,但它不起作用。
Sub createwb()
Workbooks.add
Dim FSO
Dim path As String
Set FSO = CreateObject("Scripting.FileSystemObject")
set path = "D:\Job\Land-DE.xlsx"
If FSO.FileExists(path) Then
FSO.DeleteFile path, True
else
ActiveWorkbook.SaveAs "D:\Job\Land-DE.xlsX"
End If
End Sub
为什么一定要先删除再保存?够了吗:
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs "D:\Job\Land-DE.xlsx"
Application.DisplayAlerts = True
看看下面的内容。这将检查是否存在名称在 path
中定义的文件,如果是,则在再次保存之前将其删除。
Sub Createwb()
Dim path As String
path = "D:\Job\Land-DE.xlsx"
If Dir(path) <> "" Then Kill path
ActiveWorkbook.SaveAs path
End Sub
Sub createwb()
Workbooks.Add
Dim FSO
Dim path As String
Set FSO = CreateObject("Scripting.FileSystemObject")
path = "D:\Job\Land-DE.xlsx"
If FSO.FileExists(path) Then
FSO.DeleteFile path, True
End If
ActiveWorkbook.SaveAs path
End Sub
两件事:Set
用于设置对象。那里的路径只是一个字符串变量。对象是一组函数和变量,就像您在其上方创建的 FSO 对象一样。
接下来,你要确定你删除后是保存的,而且再次循环时,上一版的保存还没有打开。如果是,您将因尝试保存当前打开的文件而获得拒绝权限。
您的代码存在多个问题
set path = "D:\Job\Land-DE.xlsx" 'It is syntax error, you can only set object in VBA , string is not considered as object
FSO.DeleteFile path, True 'USE kill instead, better performance
ActiveWorkbook.SaveAs "D:\Job\Land-DE.xlsX" ' Do not user active keyword, always set the object
代码如下:
Sub createwb()
Dim wbnew As Workbook
Set wbnew = Workbooks.Add
Dim path As String
path = "D:\Job\Land-DE.xlsx"
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(path) Then
On Error Resume Next
Workbooks("Land-DE").Close False ' Close the workbook if open
Kill path
wbnew.SaveAs path
Else
wbnew.SaveAs path
End If
End Sub