关于WPS的Excel区域操作模块使用问题

使用问题 · 1079 次浏览
湘喑 创建于 2021-10-18 15:05

因本人习惯了WPS,电脑未装Excel,不知道这是否只是WPS的问题,还是我个人电脑的问题

Excel区域操作,第一个参数,区域,只能为空,即对当前选择的区域进行操作,如果填地址或者used就会出错,具体情况如下:

如果只打开了一个工作簿则没有问题,可以正常运行,但如果打开了多个工作簿,填写了区域参数,一运行就跑到别的工作簿上运行去了,比如我想在当前工作表的A1单元格输入1,区域填写了A1,一运行后就跑到了其他工作簿的A1单元格输入了1。就算是我用QUICKER创建的工作簿,也会出现这样的问题。

其实还试过用区域变量做为参数,如果通过获取区域信息这个方法返回一个区域变量,然后将这个区域变量作为区域的参数就正常运行,然后我试过直接赋值A1给一个动态变量,然后用这个变量去做区域参数,结果还是一样运行不了,求解是否有方法正确设置一个区域变量

还有个问题就是QUICKER好像只可以获取工作表对象和工作表名称列表,怎么获取活动工作表的名称呢?

 

 


回复内容
CL 2021-10-18 15:12
#1

如果为空,取ActiveWindow.RangeSelection;

如果为used,取ActiveSheet的UsedRange对象;

目前这个模块因为权限的原因使用也不是很多。 可以考虑直接用powershell脚本来实现控制。

湘喑 2021-10-18 15:15 :

大佬,有相关子程序吗,我不会编程- -

CL 回复 湘喑 2021-10-18 15:21 :

不是子程序,其实和quicker也没多大关系。可以百度一下 “Powershell 控制 excel” 。Excel每个窗口是独立的,WPS很多子窗口共享一个父窗口,可能也是带来问题的一个原因。

湘喑 2021-10-18 16:10 :

大佬,怎么获取当前活动工作表的名称

湘喑 2021-10-19 08:58 :

大佬,我试了下,先获取当前工作表对象,然后区域参数填写$={工作表对象}.usedrange,结果能够正常运行。所以想试下能不能将区域参数设置为{工作表对象}.range这样子的,但不知道语法,尝试用{工作表}.range("a1")这样结果提示语法错误,想请教下该怎么写格式。

另外请教个问题,我试着写了个VBS脚本,获取当前工作表选择区域的数据求和后写入剪贴板,单独测试运行VBS文件是正常的,但是选择用QUICKER运行脚本,然后再用获取剪贴板文本这个模块去获取结果,每次获取的都是上一次剪贴板的内容,要再运行一遍动作才能获取成功,这是什么情况


CL 回复 湘喑 2021-10-19 09:04 :

这些都是对象的属性,是不是支持具体需要查询微软官方的文档。这里可以作为一个起点:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/interop/how-to-access-office-onterop-objects

Worksheet的文档:https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.excel.worksheet?view=excel-pia

读取剪贴板里没有得到内容,可以用剪贴板工具看一下剪贴板是不是变化了。

湘喑 2021-10-19 10:44 :

剪贴板内容确实变化了,我直接粘贴也是正确的数值,就是QUICKER读取不到,只能取消获取剪贴板内容这个步骤了,大佬能帮我看下是什么情况吗:

https://getquicker.net/Sharedaction?code=26aaa4b2-535a-4435-f4de-08d941edde8b

CL 回复 湘喑 2021-10-19 10:46 :

加一些延迟之后再读取剪贴板试下。

湘喑 2021-10-19 10:52 :

加了延迟正常了,谢谢大佬

CL 回复 湘喑 2021-10-19 10:54 :

嗯,剪贴板的更新需要一定的时间才能完成。

回复主贴