wps office 二次开发帮助
1二次开发的兼容性FAQ
11WPSOffice2012的二次开发开发和微软的office二次开发有什么异同
1.11模块对象的区别
WPSOffice2012的二次开发接口体系和微软Office的二次开发接口体系基本俣持
一致。包括:对狼树,即对象的组织构成、各对象代表的含义和微软Office对象均保
持一致;接口函数,即各对象的方法属性的名称和含义均与微软Office保持一致。不
同之处主要表现在两个方面:模块程序的对象名称和枚举常量的名称。
微软Officc和WPSOfficc各模块的对象名称对应关系如下
文字模块:word.Application
wps.Application
表格模块:ExcelApplication
etapplication
演示模块:PowerPoint.Application
wpp.Application
具体使用时,只需要替换对应的对象名称即可,如下代码:
下面的代码可以创建一个微软word进程
Setapp=createObject("Word.Application")
下面的代码可以创建一个WPS文字进程
Setapp=createObject("wpsApplication")
1.12枚举常量的区别
枚举常量通常山现在API方法的参数或API属性的赋值上,微软Office和WPS
Office各模块的对象名称对应关系如卜:
公用层:
mso
ks
文字模块:wd
wps
表格模块:xl
演示模块:p
wpp
具体使用时,替换对应的名称或使用枚举常量对应的数值,也可以在WPS的VBA
环境中查找对应的枚举常量确认其存在而且数值和微软OFFICE的一致
下面的代码可以打印当前页:
WORD的代码:ActiveDocument.PrintOutRange:=wdPrintCurrentPage
WPS的代码:ActiveDocument.PrintoutRange:=wpsPrintCurrentPage
也可以用对应的数值来同吋支持WORD和WPS,如下:
ActiveDocument.PrintOutRange:=2'注释枚举常量wdPrintCurrentPage=2
113commandbars调用的区别
commanders接口API在微软wORD)的二次开发中可以这样引用
application.commandbars也可以这样引用document.commandbars
commandbars接口API在WPS文字的二次开发中只能这样引用:
oplication.commandbars,对于微软的document.commandbars引用,可以替换成
documentapplication.commandbars
12WPSOffice2012的接口类对象和对应的DLL文件
对象
接口
对应文件(Wps安装目录)
WPS文字
WPS
\office\wpscoredll
WPS表格
ET
\office\applogic.dll
WPS演示
WPP
\offices\wppcoredll
公用层对象
KSO
\office\kso.dll
adin机制IDTExtensibility22
\office\ksaddndrdll
13原有的与WPSOffice2003WPS2003)、WPSOffice2002WPS2002)
WPSOffice2005(WPS2005)WPSOffice2007(2007),WPSOffice
2009(2009)结合的第三方程序,可以直接和WPSOffice2012结合运行
吗?
WPS2012是与WPS2005、WPS2007、WPS2009完全兼容的版本,与wPS2003
WPS2002不完全兼容。
WPS2003、WPS2002的内核“KingsoftWPS.0ObjectLibrary"、“KingsoftET1.0
ObjectLibrary”、“KingsoftWPP2003ObjectLibrary
WPSOffice005的内核“KingsoftWPS2.0ObjectLibrary”、“Kingsoftet2.0
ObjectLibrary"、“KingsoftWPP1.0ObjectLibrary”
WPSOffice2012、WPSOffice2009、WPSOffice2007的内核“KingsoftWPS20
ObjectLibrary”、“KingsoftET2.0ObjectLibrary”、“KingsoftWPP2.0ObjectLibrary”
14原有的与WPSOffice2003或者WPSOffice2002结合的第三方程序,需
要做什么改动才能正常和WPSOfIice2012结合运行?
使用ⅤB编写的程序,需要将引用库改为升级后的类型库。并将二者接口有差别
的部分进行修改,然后重新编译
使用VC编写的并用到CLSID的程序,需要重写这些CLSID。并将二者接冂有差
别的部分进行修改,然后重新编译。
15调用WPs接口AP方法时要注意Variant参数类型的传递。
wPS接口中的Variant参数类型,在使用时比较严格。建议无论使用何种语言,在传
递Variant参数类型时,都要将其变量转挨为Variant再进行传递。
VC调用ET时,传递Variant参数的代码片断:
COleVariantvarFileName(“C:}test.xls”);
VARIANTvarFALSE=0;
varFALSEvt=VTBOOL.
∥{误调用时会出错
//varFALSEboolVal=false
∥正确:正常调用
varFALSE.boolVal=VARIANTFALSE
VARIANTvarEMPTY=(;
kset:Workbookwb(wbs.Open(varFileName,varEMPTY,varFALSE,varNull
varNull,varNull,varNull,varNull,varNull,varNull,varNull,varNull,varNulD))
16通过注册表修改宏代码的安全级别。
通过程序打开一些有宏代码或控件的文档,如果客户端的红安全性设置人高就会导致
宏代码或控件无法加载,给应用带来很大麻烦。可以通过通过注册表来修改客户端的
宏安全设置。
通过VBS脚本实现的代码如下:
Dimmyshell
SetMyshell=WScript.CreateObject"WScript.She")"创建WScript对象
Dimlevel
Level=InputBox("请输入宏的安全级别,1为低,2为中,3为高,4为非常高","设
置宏的安全级别",2
IflevelThen
MyshellRegwrite
"HKEYCURRENTUSERSoftwareKingsoftOffice6.WppApplication
Settings\VbaSecurityLevel",Level'修改WPS演示模块的宏安全级别
MyshellRegWrite
"HKEY_CURRENTUSERISoftwareKingsoftiOffice\6.0\wpsApplication
SettingsVbaSecurityLevel"!Level"修改WPS文字模块的宏安全级别
MyshellRegWrite
HKEYCURRENTUSERISoftware\Office\.let\Application
SettingsKDESecurityLevel",evel'修改WPS表格模块的宏安全级别
MsgBoxDonc!
Endit
2二次开发文字部分FAQ
提示
各对象、方法和属性的详细使用方法,请参阅WPSAPI帮助。
对界面控件的操作都是在经典界面下完成的由于WPS2012界面使用Qt重构了
界面代码,所以一些涉及到界面控制的API暂时不能在WPS2012界面中使用。
●以下示例代码都用ⅤB编写,使用其它语言的开发者,请自行做相应转换。
21如何启动WPS文字模块?
如果wPS文宇模块已经启动,可以使用Getobject获得这个进程:
SetwpsApp=GetObject(,"WPS.Application")
wpsApp.Visible=True
如果wPS尚木启动,可以使用CreateObject来产生个新进程
Setwps=CreateObject("WPS.Application")
wpsApp.Visible=True
22如何退出WPs文字模块?
wpsAppQuitSaveChanges:=wpsSaveChanges,OriginalFormat:-wpsWPSDocument
RouteDocument:=True
setwpsApp=Nothing
23如何得到WPs中的工具栏数?
下面的例子显示应用程序所有工具栏的数目。
MsgBoxwpsAppApplicationCommandBarsCount
下面的例子使工具栏的第一项不可见
wpsApp.CommandBars.Itcm(1).Visible=Falsc
24如何隐藏工具栏?
用Commandbarse(Index)可以直接返回个CommandBar对象。
使用下面的语句可以将第一个工具栏隐藏
Application.CommandBarsItem(1).Visible=false
25如何使工具栏的按钮失效?
下面的例子切换第一条工具栏第一项按钮的有效性。
DimbarAsWPS.CommandBarControls
Setbar=wpsAppCommandBars(1)Controls
bar(1)Enabled=Notbar(1)Enabled
2.6如何获得一个文档?
下例通过索引号获取第个文栏。
SetwpsDoc=wpsAppDocuments(1)
27如何打开wps文档?
在获得WPsapplication对象之后,就能对wPS进行控制,下面的例子中将以只读
方式打开·个wPS文档,并激活此文档,如果文档不存在,将出示提示信息
wpsAppDocuments.OpenFileName:="E∴\散文.wps",ReadOnly:=true
wpsApp.activatedocumentActivate
28如何关闭一个文档?
关闭第一篇文档。
wpsAppDocuments(1).Close
29如何保存一个文档?
如果活动文档在上次保存后进行了修改,下面的例子将保存活动文档。
IfActiveDocument.Saved=FalseThen
ActiveDocument.Save
Endif
210如何获得或修改当前用户名?
下面的例子设置应用程序的用户姓名(对应于菜单条"工具">"选项">"用户">"姓名")
wpsApp.USerName="wpsuser
下面的例了显示应用程序的用户名
MsgBoxwpsAppUserName
7
211如何在当前文档中添加一个表格?
下面的例子在文章开头添加一4行4列的表格,并在最后一个单元格里写上"需要
写些什么”字样
DimrngTblAsWPSRange
DimwpsTableAsWPSTable
Setr=ActiveDocument.Range(0,0)
SetwpsTable=ActiveDocument.Tables.Add(r,4,4)
wpsTable.cel(4,4).Range.Text="需要写些什么
212如何获取表格的行和列?
下面的例子将获得第一个表格的行和列
DimmytableAsWPSTable
Setmytable=wpsApp.ActiveDocument.Tables(1)
MsgBox"第一个表有"&mytableColumns.Count&"列"&mytableRowS.Count&
213如何选中一个表?
下面的例子将当前活动文档的第一个表选中。
ActiveDocument.Tables(1).Select
214如何修改一个表格的某个单元格的内容?
下面的例子对活动文档第一个表格的第一个单元格的内容进行显示及修改。
DimmytableAswPstable
Setmytable=ActiveDocument.Tables(1)
MsgBox"原来(1,1)单元格的内容是:"&mytable:cl(1,1)range.text"缺省表示指
定单元格内容
mytablecell(4,1)range.text="金山文字
MsgBox"修改后是:"&mytable.cl(1,1)Tange:text
ablecell(l,1)Range.Text="WPSOffice
MsgBox"再次修改后是"&mytablecell(1,1)Range,ext
215.如何设置一个表格的单元格的高度和宽度?
下面的例子将活动文档第一张表格的所有单元格的高度和宽度设置都设为
200*0.lmm。
DimmytableAswPstable
Setmytable=wpsAppActiveDocument.Tables(1)
iCols=mytableColumns.Count
RowsmytableRows.Count
Fori=lToirows
mytablecell(i,1).Height=200
Forj=1Toicols
mytablecell(1,j).Width=200
Next
下面的例了将活动文档的第·个表格的所有单元格的宽度设为设为400*0.1mm。
DimmytableAsWPSTable
Setmytable=ActiveDocument.Tables(l)
num=mutableColumns.Count
Forj=ITonum
mytablecell(l,1.Width=400
Next1
216表格增加一行之后,要获取增加表格的内容,必须重新给表格变量赋值
Tb是一个4行4列的表
DimTbastable
SetTb=ActiveDocument.Tables.Item(1)
1b表格添加一行
TbRows.Add
重新给表格变量赋值
SetTb=ActiveDocument.Tables.Item(I)
再对新添加的行进行操作,否则会出错
TbCell(5,4)Range.Text=5,4
217如何添加一个书签?
下面的例子将在当前文档中添加书签“我”,书签的内容为从第三个字符到第五个
字符。
DimrAsWPSRange
Setr=wpsAppActiveDocumentRange
r.SetRangeStart:=3,End:=5
wpsApp.ActiveDocumentBookmarks.AddName:="w",Range:r
218如何替换一个书签的内容?
下面的例子判断名为"temp"的书签是否存在于活动文档中,如果存在则替换该书
签的内容
IfActiveDocument.BookmarksExists("temp")=TrueThen
ActiveDocumentBookmarks(temp").range.text="ReplaceText
EndIf
219如何获取和设置默认打印机?
本示例获取默认打印机的名字
MsgBox“默认的打印机为:&Application.ActivePrinter
本示例将LPTl端口的本地HPLaserjet6打印机设置为活动打印机。
Application.ActivePrinter="HPLaserJet6localonLPTI:
220如何打印一篇已打开的文档?
木示例以默认设置打印活动文栏的所有页。
ApplicationActiveDocument.PrintOut
本示例打印了活动文档中的1到3页。
ApplicationActivcDocumcnt.PrintOutFrom:=1",To:=3
本示例按照活动文档的75%大小进行打印。
ApplicationActiveDocument.PrintOutPrintZoomPaperWidth:=0.753
(8.5*1440),PrintZoomPaperHeight:=0.75*(11*1440)
2.21如何获取和设置某些文字的字体属性?
本示例获取和设置选中部分的字体名称和大小。
WithApplicationSelectionRange.Font
MsgBox"字体名称"&Name&vbCrlf&"字号:"&.size
MsgBox"即将改变字体名称和字号!
Name="华文行楷
e=20
MsgBox"改变后的内容如下:"&vbCrlf&"字体名称"&Name
&vbCrLf&"字号:"&.Size
Endwitl
10
暂无评论