[英]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.