使用VBA替换excel 2007中的现有工作表

时间:2015-05-26 20:13:26

标签: excel vba excel-vba excel-2007

Sub testmac()
'
' testmac Macro
'
'
    ActiveWorkbook.Names.Add Name:="items", RefersToR1C1:= _
        "=Report!R7C8:R486C11"
    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
        "ODBC;DSN=Excel Files;DBQ=path
        ), Array("P;DriverId=1046;MaxBufferSize=2048;PageTimeout=5;")), Destination:= _
        Range("$A$1")).QueryTable
        .CommandText = Array( _
        "TRANSFORM first(`Dimension Value Code`)" & Chr(13) & "" & Chr(10) & "SELECT items.`No#`, items.`Description`" & Chr(13) & "" & Chr(10) & "FROM items" & Chr(13) & "" & Chr(10) & "GROUP BY items.`No#`, items.`Description`" & Chr(13) & "" & Chr(10) & "PIVOT `Dimension Code`" _
        )
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Table_Query_from_Excel_FilesXY"
        .Refresh BackgroundQuery:=False

        End With

End Sub

我正在尝试使用此代码制作数据透视表。第一次尝试进展顺利,因为它没有床单。当我第二次尝试时,它给了我一个错误,因为工作表已经存在,其中的表格与前一个表格相同。

错误是

  

运行时错误'1004':应用程序定义的错误或对象定义的错误

当我删除在上一步中创建的工作表并尝试再次运行宏时,它可以正常工作,但如果不删除它就无效。

1 个答案:

答案 0 :(得分:1)

你可以在顶部试试这个:

on error resume next
ActiveWorkbook.Sheets("your sheet").delete
on error goto 0

如果存在,它将被删除,您的代码将成为新的代码。这有帮助吗?