Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 删除打开的书本_Vba_Excel_Excel 2003 - Fatal编程技术网

Vba 删除打开的书本

Vba 删除打开的书本,vba,excel,excel-2003,Vba,Excel,Excel 2003,我想创建一本新的工作手册,在其中添加一个列表,然后保存这本书。如果存在,我需要删除以前的变量,然后保存当前变量。这是我的密码: Private Sub GenerateReport_Click() Dim wb As Workbook Dim FilePath As String FilePath = ThisWorkbook.Path + "\CommonReport.xls" Set wb = Workbooks.Add ActiveCell.F

我想创建一本新的工作手册,在其中添加一个列表,然后保存这本书。如果存在,我需要删除以前的变量,然后保存当前变量。这是我的密码:

Private Sub GenerateReport_Click()

    Dim wb As Workbook
    Dim FilePath As String


    FilePath = ThisWorkbook.Path + "\CommonReport.xls"
    Set wb = Workbooks.Add
    ActiveCell.FormulaR1C1 = "a1"
    wb.ActiveSheet.Range("B1").Select
    ActiveCell.FormulaR1C1 = "b1b"
    wb.ActiveSheet.Range("C1").Select
    ActiveCell.FormulaR1C1 = "3"
    wb.ActiveSheet.Range("D1").Select
    ActiveCell.FormulaR1C1 = "4"
    wb.ActiveSheet.Range("E1").Select
    ActiveCell.FormulaR1C1 = "5"
    wb.ActiveSheet.Range("F1").Select
    ActiveCell.FormulaR1C1 = "6"
    wb.ActiveSheet.Range("G1").Select
    ActiveCell.FormulaR1C1 = "7"
    wb.ActiveSheet.Range("A1:G1").Select
    wb.ActiveSheet.ListObjects.Add(xlSrcRange, wb.ActiveSheet.Range("$A$1:$G$1"), , xlYes).Name = "Ñïèñîê1"
    wb.ActiveSheet.Range("A1:G2").Select

    Application.DisplayAlerts = False

        If Dir(FilePath) = vbNullString Then
           wb.SaveAs Filename:=FilePath
        Else
        SetAttr FilePath, vbNormal
           Kill FilePath
        End If



End Sub

书打开时是否可以删除。当我要删除打开的书本时,如何处理错误

无法删除打开的工作簿

检查是否使用以下方式打开了同名文件:

如果此文件已打开,请通过将
文件路径
与打开的工作簿(例如
工作簿(“CommonReport.xls”).FullName
)进行比较,检查其路径是否与要删除的文件相同,如果是,请使用close命令将其关闭:

Workbooks("CommonReport.xls").Close SaveChanges:=False

我认为没有必要删除工作簿,只需覆盖它即可。如果已打开,请先将其关闭。例如:

Option Explicit

Private Const NEW_BOOK_NAME As String = "CommonReport"

Public Sub Test()
    Dim newWorkbook As Workbook

    Set newWorkbook = Workbooks.Add
    With newWorkbook.ActiveSheet
        [a1] = "a1"
        [b1] = "b1"
        [c1] = "c1"
    End With

    Dim filePath As String
    filePath = ThisWorkbook.Path & "\" & NEW_BOOK_NAME

    On Error Resume Next
    Workbooks(NEW_BOOK_NAME).Close

    On Error GoTo 0
    Application.DisplayAlerts = False
    newWorkbook.SaveAs filePath
End Sub

Olle Sjögren的想法是可行的

但是简单地使用sheet.usedrange.clear方法清空现有工作表可能会更容易。然后你可以插入你的新数据。
这应该比删除方法快得多。

作为旁注。可能最好使用符号AND进行字符串连接
thiswook.Path+“\CommonReport.xls”
-->
thiswook.Path&“\CommonReport.xls”
请参阅: