访问VBA - XLS后期绑定,找不到变量

时间:2017-09-13 18:09:38

标签: excel-vba access-vba vba excel

我试图通过在我的AccessDB应用程序中实现Late Binding来解决一些用户的一些XLS引用不匹配问题。我已经解决了一些问题,但创建了一个新问题。

使用Late Binding并删除了XLS Reference,我在术语“LookAt:= xlWhole”中得到一个“Variable Not Defined”(参见下面的代码片段)。

问题:使用Late Binding,我是否会失去对这些变量的访问权限?然后,我如何在后期绑定方案中保留所需的功能?

投诉模块的片段:

Dim appXLS As Object
Dim wbk As Object
Dim wks1, wks2, wks3, wks4, wks5 As Object
'...other unrelated declarations

'...unrelated code

'Create the Excel Application, Workbook and Worksheet

Set appXLS = CreateObject("Excel.Application")
Set wbk = appXLS.Workbooks.Add(1)

appXLS.Visible = True
wbk.Activate

'...more unrelated code

'...first offending line:
wks1.Range("E1:E" & intRows).Replace What:="0", Replacement:="", 
LookAt:=xlWhole, _
    SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

有什么建议让我开始吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

是的,通过删除对Excel库的引用,您将丢失这些常量。

解决方案:将他们的定义从对象浏览器复制到标准模块中:

Const xlWhole = 1
Const xlByColumns = 2

或(可读性较差)在调用Excel方法时直接使用数字。

LookAt:=1, _       ' xlWhole
SearchOrder:=2, _  ' xlByColumns
MatchCase:=False, _
SearchFormat:=False, _
ReplaceFormat:=False

对你来说可能是可以接受的。

顺便说一句,无关:

Dim wks1, wks2, wks3, wks4, wks5 As Object

将wks1 ... wks4声明为Variant(默认数据类型),而不是Object。