2017-06-19 125 views
0

请参阅此question。它显示了一个将Excel数据格式化为Excel表格的解决方案。使用ExceL VBA以Excel格式化数据的访问表

的代码是

Sub A_SelectAllMakeTable() 
    Dim tbl As ListObject 
    Dim rng As Range 

    Set rng = Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)) 
    Set tbl = ActiveSheet.ListObjects.Add(xlSrcRange, rng, , xlYes) 
    tbl.TableStyle = "TableStyleMedium15" 
End Sub 

我想,我创建访问数据的Excel输出文件,然后我想类似的格式,它可以利用VBA访问该代码。这是我的代码。

Dim objXL As Object 
Dim objWorkbook As Object 
Dim objWorkSheet As Object 
Dim sourcefilepath As String 
Dim tbl As ListObject 
Dim rng As Range 

Set objXL = New Excel.Application 
objXL.Application.Visible = False 

sourcefilepath = Application.CurrentProject.Path & "\CF Break Report " & Format(Date, "mm-dd-yy") & ".xls" 
Set objWorkbook = objXL.Application.Workbooks.Open(FileName:=sourcefilepath) 
Set objWorkSheet = objWorkbook.Worksheets("_400_CF_BREAK_LOG") 

Set rng = objWorkSheet.Range(Range("A1"), ActiveCell.SpecialCells(xlLastCell)) 
Set tbl = objWorkSheet.ListObjects.Add(xlSrcRange, rng, , xlYes) 
tbl.TableStyle = "TableStyleMedium2" 

更新:发生故障的线路是

Set rng = objWorkSheet.Range(Range("A1"), ActiveCell.SpecialCells(xlLastCell)) 

随着错误“应用程序定义或对象定义的错误

+0

关闭“尝试 –

+0

被关闭。复制到此网站不起作用。对不起,将更新 – FamousFrik

+0

在行之前插入一个断点并查看tablestyle是什么。它不会被跳过,如果它不存在,所以它可能会出错,但你可能有错误陷阱跳过它 –

回答

0

尝试:

Set rng = objWorkSheet.Range(objWorkSheet.Range("A1"), ActiveCell.SpecialCells(xlLastCell))

曾为对我来说

0

找到了答案隐藏起来here

With xlWB.Sheets("Summary") 
Set rng = .Cells(1, 1).CurrentRegion 
End With 
Set tbl = xlWS.ListObjects.Add(xlSrcRange, rng, , xlYes) 
tbl.TableStyle = "TableStyleMedium2" 
tbl.ShowTotals = True