1

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

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

书籍打开时是否可以删除。当我想删除已打开的书时,如何处理错误?

4

3 回答 3

3

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

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
于 2012-09-25T14:21:26.883 回答
0

Olle Sjögren Idea 应该有效。

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

于 2012-09-26T09:15:43.027 回答
0

您不能删除打开的工作簿。

检查是否使用以下内容打开了同名文件:http ://www.exceltip.com/st/Determine_if_a_workbook_is_already_open_using_VBA_in_Microsoft_Excel/472.html

FilePath如果此类文件已打开,请通过与打开的工作簿(例如)比较来检查它是否与要删除的文件具有相同的路径,Workbooks("CommonReport.xls").FullName如果是,请使用 close 命令将其关闭:

Workbooks("CommonReport.xls").Close SaveChanges:=False
于 2012-09-25T14:08:19.070 回答