[英]Ms-Access to Excel Late Binging VBA
我当前正在使用从MS Access 2016到MS Excel的后期绑定:条件格式代码不会执行所需的工作,但是运行时不会抱怨错误。
我可以创建一个Excel工作表并对其进行编辑,但是目前无法在Excel工作表中创建条件格式。 我试图在下面定义变量,但感觉好像缺少了一些东西。
Option Explicit
Sub SendEmailXLS()
Dim appExcel As Object
Dim objActiveWkb As Object
Dim rng As Object
Const xlConditionValueLowestValue As Long = 1
Const xlConditionValuePercentile As Long = 5
Const xlConditionValueHighestValue As Long = 2
DoCmd.OpenReport "REPORT_XLS", acViewReport, WhereCondition:="EmailAddress='" & Me.User_Login & "'"
DoCmd.OutputTo ObjectType:=acOutputReport, ObjectName:="REPORT_XLS", OutputFormat:=acFormatXLS, Outputfile:="\\XXX\REPORT_XLS.xls"
Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = False
appExcel.Application.Workbooks.Open ("\\XXX\REPORT_XLS.xls")
Set objActiveWkb = appExcel.Application.ActiveWorkbook
With objActiveWkb
.Worksheets(1).Cells.Select
.Worksheets(1).Columns("A:AI").Font.Size = 8
.Worksheets(1).Rows(1).Font.Bold = True
.Worksheets(1).Columns("A:AH").HorizontalAlignment = -4108
.Worksheets(1).Columns("B").ColumnWidth = 8
.Worksheets(1).Columns("AJ").Interior.Color = RGB(0, 0, 0)
.Worksheets(1).Columns("A").ColumnWidth = 0.1
.Worksheets(1).Columns("A").Interior.Color = RGB(0, 0, 0)
.Worksheets(1).Columns("K:L").NumberFormat = "$#,##0"
.Worksheets(1).Columns("N:AF").NumberFormat = "$#,##0"
.Worksheets(1).Columns("AG:AH").NumberFormat = "0.0%"
.Worksheets(1).Rows(1).EntireRow.Insert
.Worksheets(1).Range("B2:AI2").Interior.Color = RGB(50, 100, 20)
.Worksheets(1).Range("O1:Q1").Interior.Color = RGB(50, 100, 20)
.Worksheets(1).Columns("A").Borders.Weight = 2
.Worksheets(1).Columns("O:Q").Borders.Weight = 2
.Worksheets(1).Columns("U:AC").Borders.Weight = 2
.Worksheets(1).Columns("AJ").Borders.Weight = 2
.Worksheets(1).Range("U1:AC1").Interior.Color = RGB(50, 100, 20)
Set rng = .Worksheets(1).Columns("AD:AD")
rng.FormatConditions.AddColorScale ColorScaleType:=3
rng.FormatConditions(rng.FormatConditions.Count).SetFirstPriority
rng.FormatConditions(1).ColorScaleCriteria(1).Type = _
xlConditionValueLowestValue
With rng.FormatConditions(1).ColorScaleCriteria(1).FormatColor
.Color = 7039480
.TintAndShade = 0
End With
rng.FormatConditions(1).ColorScaleCriteria(2).Type = _
xlConditionValuePercentile
rng.FormatConditions(1).ColorScaleCriteria(2).Value = 50
With rng.FormatConditions(1).ColorScaleCriteria(2).FormatColor
.Color = 8711167
.TintAndShade = 0
End With
rng.FormatConditions(1).ColorScaleCriteria(3).Type = _
xlConditionValueHighestValue
With rng.FormatConditions(1).ColorScaleCriteria(3).FormatColor
.Color = 8109667
.TintAndShade = 0
End With
End With
objActiveWkb.Close savechanges:=True
appExcel.Application.Quit
Set objActiveWkb = Nothing: Set appExcel = Nothing
End Sub
使用AppExcel.Selection时不会发生错误,但也不会执行作业。
.Worksheets(1).Range("AD:AD").Select
appExcel.Selection.FormatConditions.AddColorScale ColorScaleType:=3
appExcel.Selection.FormatConditions(appExcel.Selection.FormatConditions.Count).SetFirstPriority
appExcel.Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
1
With appExcel.Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
.Color = 7039480
.TintAndShade = 0
End With
appExcel.Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
5
appExcel.Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
With appExcel.Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
.Color = 8711167
.TintAndShade = 0
End With
appExcel.Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
2
With appExcel.Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
.Color = 8109667
.TintAndShade = 0
End With
您的代码不知道xlConditionValueLowestValue
表示什么(例如, xlConditionValueLowestValue
)-这是一个内置的Excel常量,但是对于您的代码(没有VB项目对Excel的引用),它看起来就像一个未声明的变量。 如果您在每个模块的顶部使用Option Explicit
,则编译器会对此有所帮助。
如果使用的是早期绑定,则编译器将查看Excel对象库以尝试解析这些值中的任何一个。
因此,在使用后期绑定时,通常需要通过在自己的代码中创建匹配的常量来告诉您有关这些Excel常量的代码。 另外,您也可以替换数值,您可以从Excel中的VB编辑器中找到数值,也可以通过Google来找到。
编辑 :尝试此更改
替换为:
.Worksheets(1).Columns("AD:AD").Select
同
Set rng = .Worksheets(1).Columns("AD:AD")
然后将所有以下Selection
实例替换为rng
这是一个方便的excel常量列表,您可以用来创建全局定义模块。 检查这里的内容与您使用的内容。
https://www.dropbox.com/sh/mcxx9byernn67qh/AABmCwBn11_36VqqlsXGtq2Wa?dl=0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.