2017-09-13 62 views
1

我想通过在我的AccessDB应用程序中实现晚期绑定来解决少数用户的一些XLS引用不匹配问题。我解决了一些问题,但创建了一个新问题。访问VBA - XLS晚期绑定,未找到变量

使用延迟绑定和删除XLS引用时,我在术语“LookAt:= xlWhole”(请参阅​​下面的代码段)中获得“Variable Not Defined”。

问题:我是否无法使用Late Binding访问这些变量?然后,我如何解决在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 

让我开始有什么建议吗?

谢谢。

回答

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(默认数据类型),而不是对象。

+0

成功。感谢您的及时回复。 –