我目前正在重写一些在Excel工作簿中定义命名范围的旧Access代码。 旧代码如下:
oWorkbook.Names.Add "NameOfRange", "='Sheet1'!$A$1:$L2000"
使用oWorkbook
从Access打开工作簿。
由于范围(行数)可以改变,我计划使用Offset和CountA函数使用动态命名范围,并编写以下代码来替换前一个:
oWorkbook.Names.Add "NameOfRange", "=OFFSET('Sheet1'!$A$1,0,0,COUNTA('Sheet1'!$A:$A),12)"
但是excel发送错误1004 There is a problem with this formula
。
从Excel工作簿执行的同一行代码工作正常,并给出预期的结果。
在我的电脑上,我使用混合的英语/法语国际设置,我的Office 2016是英语,所以我有一个ListSeparator ;
。
将,
替换为;
时,下面的新公式有效:
oWorkbook.Names.Add "NameOfRange", "=OFFSET('Sheet1'!$A$1;0;0;COUNTA('Sheet1'!$A:$A);12)"
但是我需要我的功能来处理每个配置,而不仅仅是法语/英语的奇形怪状设置。
我尝试指定命名参数(Name:= ...
和RefersTo:=...
),但它没有更正问题。从Access调用时,代码仍然需要本地分隔符(也许本地函数名称?不知道)。
所以我可以检索计算机excel列表分隔符(使用oWorkbook.Application.International(xlListSeparator)
并用公式替换公式中的所有,
,但也许我做错了,有更好的方法吗? / p>