回 帖 发 新 帖 刷新版面

主题:请各位老师帮帮忙!谢谢!

各位老师,我在表单中用MSChart做了一个统计图,通过点击存盘按钮将其存到test.doc文件中,我希望能将存在word中的统计图旋转90度,我在word中录制了如下的宏,但我不会将其转换到VFP中,请老师们帮忙转换一下,谢谢!表单见附件,注:我使用的是VFP6
Sub Macro2()
'
' Macro2 Macro
' 宏在 2008-6-10 由 a 录制
'
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.ShapeRange.IncrementRotation -90#
End Sub

回复列表 (共5个回复)

沙发

word对象.Selection.MoveLeft(1,1, 1)
 word对象.Selection.ShapeRange.IncrementRotation(-90)

板凳

cbl老师,非常感谢,我在我的存盘按纽里加上了您教的那两条语句,提示"成员selection不是一个对象",出错位置在红色的第一行,请帮忙再看看怎么改好吗?谢谢老师!
savefile=sys(5)+'\'+sys(2003)+"\test.doc"
oword=createobject("Word.application")
odoc=oword.documents
odoc.add
oWord.ActiveDocument.SaveAs(savefile)
oWord.ActiveDocument.Saved=.T.
oWord.ActiveDocument.Close
oword.quit()
wait '' timeout 1
thisform.mschart.editCopy()
oWordObj=CREATEOBJECT("Word.Basic")
owordobj.fileopen(savefile)
oWordobj.EditPasteSpecial(,,,,'PICT')
[color=FF0000]owordobj.Selection.MoveLeft(1,1, 1)
owordobj.Selection.ShapeRange.IncrementRotation(-90)[/color]
oWordObj.FileSaveAs(savefile)
oWordObj.AppClose("Microsoft Word")

3 楼

其实这个问题楼主自己都应该会,只要稍微思考一下,原因自明.
selection对象是楼主录制宏之前已选定的区域,请把选定区域的操作放在宏录制开始后进行,宏代码中就会有选定区域的代码,将其也一并转换为VFP代码.

4 楼

下面是我论文中的一段,可以对楼主有所帮助:

3.1 VFP编程驱动WORD和EXCEL
无论是从EXCEL表导入数据到VFP表,还是从VFP表导出数据到EXCEL表或WORD文档,都需要编写VFP代码,调用EXCEL和WORD应用程序的各种对象及其属性、方法和函数。在编程前先学习和掌握每个对象的所有属性、方法和函数的使用是很困难的。所幸的是,作为优秀的办公自动化软件,微软的WORD和EXCEL所提供的宏工具,正好成为我们用VFP编程驱动WORD和EXCEL实现数据交换的利器。利用宏工具,把程序代码要完成的操作,首先在其交互环境中手工操作一遍,并录制成宏代码。然后把对WORD和EXCEL操作的宏代码转换成VFP所能支持的程序代码加入到VFP程序中,就轻松地实现了VFP对WORD和EXCEL的控制。
用VBA书写的宏代码向VFP代码转换的工作,需要解决两个问题:一个是常量的求值问题,另一个是VBA函数向VFP函数的转换问题。
在VBA宏代码中会用到很多VFP系统不能识别的常量名,需要通过路径:Word文档编辑器→工具→宏→Visual Basic编辑器→视图→对象浏览器,打开Word的对象浏览器,从中查找每个常量名所代表的数据,在VFP代码中用“#define <常量名> <常量值>”语句进行定义。
宏代码是用VBA语言写成的,它的函数调用形式与VFP语言有很大差异,需要经过转换才能被VFP支持。例如打开一个Word文档(temp.doc)时,VBA格式的宏函数调用是:
Documents.Open FileName:="temp.doc", ConfirmConversions:=False, ReadOnly:= False,
 AddToRecentFiles:=False, PasswordDocument:="456", PasswordTemplate  :="123",Revert:=False,
 WritePasswordDocument:="123", WritePasswordTemplate :="", Format:=wdOpenFormatAuto
 转换为VFP支持的函数调用格式为:
WdApp.Documents.open("D:\test.doc",.F.,.F.,.F.,'456','123',.F.,'','',.F.) 

5 楼

高老师,非常感谢,我以前从没做过这方面的程序所以很不熟悉,提的问题让您见笑了,对于您的大作我很感兴趣,不知能否将全文发给我,让我学习一下,我的邮箱是yili@ibcas.ac.cn,不胜感激!

我来回复

您尚未登录,请登录后再回复。点此登录或注册