越简单越强大,记录学习心得。
需要个与EXCLE交互的方法,哪里都没有找到,把手册翻了个遍,锁定api调用VBA,Typt:=4 2 8 都是返回数字,没办法得到需要的range,然后手动加了个“”,居然成功了,需要的可以用一下。
app=xw.apps.active
re=app.api.InputBox(prompt:="请选择图片存放格式单元格", Title:="图片单元格", Type:=8)
re=app.api.InputBox(prompt:="请选择图片存放格式单元格", Title:="图片单元格", Type:=2)
print(re)
英文""手动输入,然后就可以返回需要的了。
再换了台电脑测试了一下,好像引用的是这个原型,和使用的版本有关,返回值都是字符串。
public static string InputBox (string Prompt, string Title = “”, string DefaultResponse = “”, int XPos = -1, int YPos = -1);
所以点选单元格后,手动去掉等号就返回地址字符串了。比加“”简单。
rn=app.api.InputBox("请输入需求的位数", "前置补零", 8)
type(rn)#<class 'str'>'$E$17'
#最新更新,现在了解到了,xlwings原来也是用win32com接口的,看了接口的原档文件
def InputBox(self, Prompt=defaultNamedNotOptArg, Title=defaultNamedOptArg, Default=defaultNamedOptArg, Left=defaultNamedOptArg
, Top=defaultNamedOptArg, HelpFile=defaultNamedOptArg, HelpContextID=defaultNamedOptArg, Type=defaultNamedOptArg):
return self._ApplyTypes_(357, 1, (12, 0), ((8, 1), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17), (12, 17)), 'InputBox', None,Prompt
, Title, Default, Left, Top, HelpFile
, HelpContextID, Type)
所以问题的正确使用方式是:
app=xw.apps.active
re=app.api.InputBox(prompt:="请选择图片存放格式单元格", Title:="图片单元格", Type=8)
re=app.api.InputBox(prompt:="请选择图片存放格式单元格", Title:="图片单元格", Type=2)
print(re)
只要这样就和VBA一样了。所以学习还是看原档容易理解一些,不然真不知道参数怎么使用。
补充:
rns=wt.book.app.api.InputBox("请选择筛选列位置", "高级筛选", Type=8)
col=wt.range(rns.GetAddress()).column
返回的是Win32com接口类型的,不是xw的数据类型了,通过GetAddress()函数返回需要的地址字符串
再更新一下吧,把这个问题搞透,这次换了电脑,重装了系统和python xlwings wps,然后之前写的代码又运行不了了,搞不懂原理只有多动手实验了
re=xw.apps.active.api.InputBox("请选择图片存放格式单元格", "图片单元格", None,None,None,None,None,8)
re.GetAddress()
re.Value
不解释了,解释不了,拿着用吧
再不行就先在位于python的site-packages/win32com/client/makepy.py 下面运行python makepy.py
查注册表HKEY_CLASSES_ROOT\TypeLib{00020813-0000-0000-C000-000000000046}看WPS是哪个版本的库,然后选择这个同名的库文件
我的是Microsoft Excel 12.0 Object Library ,仅作参考 然后再运行上面的程序试试.