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

開いているブックを削除することはできません。

次のようなものを使用して、同じ名前のファイルが開いているかどうかを確認します: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 に答える
0

OlleSjögrenIdeaはうまくいくはずです。

ただし、worksheet.usedrange.clearメソッドを使用して、既存のワークシートを空にする方が簡単な場合があります。次に、新しいデータを挿入できます。これは、削除アプローチよりもはるかに高速である必要があります。

于 2012-09-26T09:15:43.027 に答える