VBA:将访问权限导出到 Excel -> 选择所有单元格 -> 格式化表格

我提前为标题道歉。我想要做的是将 Microsoft 访问数据导出到 Excel 电子表格,选择所有单元格并将其格式化为表格。

问题:excel 电子表格中的数据没有按照最后 5 行代码的规定在表格中进行格式化。

代码:

Private Sub button3_Click()
Dim tbl As ListObject
Dim rng As Range

Dim XL As Object
Dim Page As Object
Dim xlrngCell As Object
Dim rs As DAO.Recordset
Dim intF As Integer


On Error Resume Next
Set XL = GetObject(, "Excel.Application")
If XL Is Nothing Then
    Set XL = CreateObject("Excel.Application")
    If XL Is Nothing Then
        MsgBox "Can't find Excel!", vbCritical
        Exit Sub
    End If
    XL.Visible = True
    XL.UserControl = True
End If

Set xlrngCell = XL.Workbooks.Add.Worksheets(1).Range("A1")
Set rs = Me.subformMain.Form.RecordsetClone
For intF = 0 To rs.Fields.Count - 1
    xlrngCell(, intF + 1) = rs.Fields(intF).Name
Next intF
rs.MoveFirst
xlrngCell.Offset(1).CopyFromRecordset rs

xlrngCell.Worksheet.Parent.Saved = True
Set Page = XL.Worksheets("Sheet1").Range("A1:I1")
Page.Font.Bold = True
Page.Font.Size = 16
xlrngCell.Worksheet.Cells.EntireColumn.AutoFit


Set rng = Range(Range("A1"), Range("A1").SpecialCells(xlLastCell))
Set tbl = ActiveSheet.ListObjects.Add(xlSrcRange, rng, , xlYes)
tbl.TableStyle = "TableStyleDark10"
xlrngCell.Worksheet.Parent.Saved = True
XL.Work

End Sub

最后 5 行代码应该是选择所有放置的数据,然后选择所有单元格并对其进行格式化。任何提示/建议将不胜感激。

注意:我知道我应该将此代码模块化为单独的函数并将它们称为方法。

马修·金东

您的代码默默地失败,On Error Resume Next阻止您了解问题所在。千万不要使用On Error Resume Next这样的地毯下推错误。

假设未引用 Excel 类型库(那么您就不会进行后期绑定,对吗?),Range很可能是未定义的标识符。假设Option Explicit没有指定(如果是,代码甚至不会编译/运行),这些不合格的Range标识符就像任何其他错字一样被当场“声明”为一个未分配的Variant/Empty变量,不可能是对象进行成员调用。

所以我打赌你得到实际错误是“需要对象”,在这一行:

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

你知道Worksheet应该是什么

Set Page = XL.Worksheets("Sheet1").Range("A1:I1")

为其声明一个变量:

Dim ws As Object
Set ws = XL.Worksheets("Sheet1")

现在使用该Worksheet对象(我会声明它远高于该对象,并在需要引用该工作表的任何地方使用它)来限定这些Range调用:

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

...可以简化为:

Set rng = ws.Range("A1").SpecialCells(xlLastCell)

...exceptxlLastCell也是一个不存在的标识符。

在 Excel 类型库中,正确的标识符是xlCellTypeLastCell- 但由于您没有引用该库,VBA 也不知道它代表什么。

xlCellTypeLastCell在枚举中定义,值为11

所以你可以这样声明:

Const xlCellTypeLastCell = 11

然后在您的代码中使用它:

Set rng = ws.Range("A1").SpecialCells(xlCellTypeLastCell)

编辑 - 我错过了这两个:

Dim tbl As ListObject
Dim rng As Range

如果您正在引用 Excel 类型库,那么您将通过声明 Excel 的所有内容使您的生活变得更加困难As Object如果您有类型,请使用它们!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用于格式化单元格的 Excel VBA 宏

Excel VBA向下选择所有单元格

如何使用excel vba在单元格中添加“₹”(格式化带有货币符号“₹”的单元格)

读取 Excel 电子表格并格式化单元格中的文本

VBA Excel - 找到一个单元格并格式化下面的单元格

将所有 Excel 单元格转换为文本格式并打印导出 | C# MVC 5

如何将Powerpoint表格单元格中的格式化文本转换为HTML

Excel 格式化单元格中的数字

在Excel中格式化单元格

在php中格式化csv(excel)单元格

如何使Excel 2007停止格式化单元格?

使用XML格式化Excel单元格

格式化Excel单元格中的多个条件

单元格格式化excel

如何使用Excel数据栏格式化带有文本值的单元格?

Scrapy 使用 CSS 提取数据并 excel 将所有内容导出到一个单元格中

重写单元格Excel VBA的格式

VBA脚本使用不同的颜色,缓慢的电子表格格式化单元格

如果单元格不为空,则从R格式化Excel单元格

将访问查询导出到Excel并添加空单元格

如何使用Google App Script将格式化后的文本从Google表格单元格保存到.rtf?

Excel vba 用于将单元格内容导出到 TXT 文件

如何在VBA excel的if函数中选择表格单元格?

将数据从单元格导出到Excel文件

通过 VBA 从 Excel 复制后在 Word 中格式化表格

使用python将excel表格复制并格式化到outlook正文

访问VBA在Excel中拆分所有合并的单元格

使用Jython导出到格式化的Excel文件

在字典中格式化python字典以导出到excel