我在 Access 中有一个模块来格式化 Excel 电子表格中的单元格。
Sub FormatData()
Workbooks.Open FileName:="C:Usersjohn.doeDocumentsscriptsappsallowWeekly_Cash_Trending"
Workbooks("Weekly_Cash_Trending.xlsx").Activate
Columns("C:C").Select
Selection.NumberFormat = "$#,##0"
Range("A1").Select
ActiveWorkbook.SaveAs FileName:="C:Usersjohn.doeDocumentsscriptsappsallowWeekly_Cash_Trending"
End Sub
它可以工作,但它会弹出一个弹出窗口以确认保存文件。
卓越消息
当我更改代码以使用"应用程序.显示警报"时
Sub FormatData()
Application.DisplayAlerts = False
Workbooks.Open FileName:="C:Usersjohn.doeDocumentsscriptsappsallowWeekly_Cash_Trending"
Workbooks("Weekly_Cash_Trending.xlsx").Activate
Columns("C:C").Select
Selection.NumberFormat = "$#,##0"
Range("A1").Select
ActiveWorkbook.SaveAs FileName:="C:Usersjohn.doeDocumentsscriptsappsallowWeekly_Cash_Trending"
Application.DisplayAlerts = True
End Sub
我收到以下错误:找不到方法或数据成员
找不到方法或数据成员错误
我是 VBA 编码的新手(显然(,任何人都可以帮助我解决这个问题吗?谢谢!
- 您正在 Access 中对此进行编码,所以我的理解是,在此上下文中
Application
是Access.Application
(而不是Excel.Application
(——并且Access.Application
没有DisplayAlerts
成员(与 Excel 不同(。 - 您似乎正在调用
Workbook.SaveAs
方法来保存工作簿本身。如果需要,请使用Workbook.Save
(这也意味着您无需切换DisplayAlerts
(。或者,Workbook.Close
有一个SaveChanges
参数,您可以将True
或False
传递给该参数。
我认为下面的代码(我在 Access 中编写和测试(应该可以完成您所追求的。
Option Compare Database
Option Explicit
Sub FormatData()
With New Excel.Application ' Add reference to Excel Object Model for early binding
'.Visible = True ' Uncomment if you want to see it happening
With .Workbooks.Open(FileName:="C:Usersjohn.doeDocumentsscriptsappsallowWeekly_Cash_Trending")
.Worksheets(1).Range("C:C").NumberFormat = "$#,##0"
.Close True ' Passing True here means we want to save changes as we close the workbook
End With
.Quit
End With
End Sub
根据您的代码,我假设您已经在 Access for Excel 的对象库中添加了一个引用。如果没有,请在 Access 中打开 VB 编辑器,然后Tools > References > Scroll down in the list to Microsoft Excel 16.0 Object Library (or something like that) > Tick it > OK
。
我假设您要更改第一个工作表上单元格的数字格式。如果该工作表有名称,最好按名称引用它(而不是像我那样按索引(。