【vb精品源码栏目提醒】:网学会员在vb精品源码频道为大家收集整理了“vb操作word - 产品手册“提供大家参考,希望对大家有所帮助!
追加500分求教
VB操作WORD问题 悬赏分:200 - 解决时间:2007-7-28 11:42说明,用
VB操作WORD以下
源码第一次操作完全正常,正常打开,正常替换,正常退出。
进程中并没有留下windword的进程,但第二次继续操作时就出问题,运行到ReplaceWord就出现462错误,关闭程序重新开始又正常。
请指教出错及解决原因,追加到500分打开wordFunction OpenWordFileName 打开指定word文档Dim wordApp As New Word.ApplicationDim wordDoc As New Word.DocumentSet wordApp CreateObjectquotWord.ApplicationquotwordApp.Visible FalseSet wordDoc wordApp.Documents.OpenFileNameEnd Function替换关键字Function ReplaceWordSearchStr ReplaceStr 全部替换函数Selection.Find.ClearFormattingSelection.Find.Replacement.ClearFormattingWith Selection.Find.Text SearchStr.Replacement.Text ReplaceStr.Forward True.Wrap wdFindContinue.Format False.MatchCase False.MatchWholeWord False.MatchByte True.MatchWildcards False.MatchSoundsLike False.MatchAllWordForms FalseEnd WithSelection.Find.Execute Replace:wdReplaceAllEnd Function另存为Function SaveAsWordDiskStr NameStrChangeFileOpenDirectory DiskStrActiveDocument.SaveAs FileName:NameStr FileFormat:wdFormatDocument _ LockComments:False Password:quotquot AddToRecentFiles:True _WritePassword:quotquot ReadOnlyRecommended:False EmbedTrueTypeFonts:False _SaveNativePictureFormat:False SaveFormsData:False SaveAsAOCELetter: _FalseApplication.Documents.CloseApplication.QuitEnd Function清除对象Function CloseWordSet wordDoc Nothing 清除文件实例Set wordApp Nothing 清除WORD实例End Function问题补充:根据《小fisher》的答案,已经解决问题,另外在SaveAsWord过程中,ChangeFileOPenDirectory DiskStr更改为ChangeFileOpenDirectory DiskStr ,ActiveDocument.SaveAs更改为wordDoc.SaveAs,再加上原先《小fisher》提到要更改的地方,已经完美解决,谢谢!!PS:由于百度只能2次提高悬赏,每次50分,所以现在只有200分,未能对现500分的诺言,所以只有另开贴来加送300分!提问者: 有野问 - 经理 五级 最佳答案1 Function ReplaceWordSearchStr ReplaceStr 全部替换函数Selection.Find.ClearFormattingSelection.Find.Replacement.ClearFormattingWith Selection.Find.......这个函数过程有错误!因为Selection是word的对象而不是
VB的对象,所以不能在
VB中直接引用,必须用wordApp.Selection替换掉Selection才行!这段代码在word VBA中调试不会出问题,但移植到
VB中时要注意。
2wordApp和wordDoc必须定义为全局变量,在模块公有部分使用Dim wordApp As Word.ApplicationDim wordDoc As Word.Document来定义然后在OpenWordFileName过程中使用Set wordApp New Word.Application和Set wordDoc wordApp.Documents.OpenFileName,否则在CloseWord过程中wordApp和wordDoc两个变量将会是未初始化的Variant类型。
第 1 页3Function SaveAsWordDiskStr NameStr中的Application须使用wordApp替换,道理同1。
________________________________________________________________________-网上说 在Visual Basic中创建Word文档使用语句Dim newDoc As Word.DocumentSet newDoc new Word.Document但是
VB会提示上述语句 “用户定义类型未定义”另一种创建的方法是Dim MsWord As ObjectSet MsWord CreateObjectquotWord.BasicquotMsWord.AppShowMsWord.FileNewDefault可以创建 但是下述语句没办法使用(即对该文档的一些操作)With MsWord.Content.Font.Name quot宋体quot.Content.Font.Size 12.Content.Paragraphs.LineSpacing 15.5End With请教各位高手指点,我想在
vb中创建一个word文档,并将程序计算的一堆结果,在该文档中按一定的格式打印出来。
另,我在word中录制了一段宏,请问在
VB中如何调用,要求代码Sub zzActiveDocument.Tables.Add Range:Selection.Range NumRows:6 NumColumns: _6 DefaultTableBehavior:wdWord9TableBehavior AutoFitBehavior: _wdAutoFitFixedWith Selection.Tables1If .Style ltgt quot网格型quot Then.Style quot网格型quotEnd If.ApplyStyleHeadingRows True.ApplyStyleLastRow True.ApplyStyleFirstColumn True.ApplyStyleLastColumn TrueEnd WithSelection.TypeText Text:quot1quotSelection.MoveRight Unit:wdCellSelection.TypeText Text:quot2quotSelection.MoveRight Unit:wdCellSelection.TypeText Text:quot3quotSelection.MoveRight Unit:wdCellSelection.TypeText Text:quot4quotSelection.MoveRight Unit:wdCellSelection.TypeText Text:quot5quotEnd sub提问者: zhaizhaiya - 助理 三级 最佳答案将With MsWord.Content.Font.Name quot宋体quot.Content.Font.Size 12.Content.Paragraphs.LineSpacing 15.5End With改写为MsWord.Content.Font.Name quot宋体quotMsWord.Content.Font.Size 12MsWord.Content.Paragraphs.LineSpacing 15.5就可以了。
_____________________________________________________________________-用
vb读word时在程序读完为什么还有关联怎样给她关联除啦 悬赏分:0 - 解决时间:2008-10-23 10:06用
vb实现读word程序的操作!也就是说当我运行
vb程序时读啦一次word第二次再执行时还是第一次的结果!例如执行下面这个语句时:If NewDoc.Paragraphs1.Range.Font.Name quot新 宋 体quot Then s s 0.5x MsgBoxquotsquot Strs 64 quot字体为1.5quot执行第一次之后,再改程序,执行时,总是提示word在另一个地方已经打开,实际上没有打开,我想这是由于关联的问题!提问者: lcs6678 - 助理 二级 最佳答案在任务管理器下的进程下看看,肯定打开了。
不知道你是用什么方法定义的word对象。
如果这样定义:Dim a As Object b As Object c As ObjectSet a CreateObjectquotword.applicationquotSet b a.Documents.openquotc:1 .docquot用以下语句关闭b.close 第 2 页a.quit______________________________________________________________________在
VB如何存取word格式的文件 悬赏分:30 - 解决时间:2006-9-12 08:30我想把用
vb计算的一堆结果打印在word里面并且有固定格式的简单排版最好能在word中打印一些表格请问用什么样的函数或者对象实践希望高手帮忙要是能加一点说明更加感激不尽提问者: zhaizhaiya - 助理 二级 最佳答案我帮你搜索到了两种方法 虽然我自己也不懂 但是也许你会懂吧通过VBA进行WORD调用,要替换WORD中固定位置的值,可以事先在文档中定义标签,然后修改标签的内容即可,不用查找。
VB中用VBA调用WORD的方法:菜单-》工程-》引用-gtMicrosoft Word 9.0 Object Library 后面的数字为版本号)Dim wdApp As New Word.ApplicationDim docApp As New Word.Document具体用怎么用标签替换,可以到WORD中录制宏看看就知道了,宏可以直接在
VB中通过VBA执行。
方法2使用
VB编程时,有时需要调用Microsoft Word对文字进行编辑、排版及输出。
为实现这种调用,可以使用Shell函数、OLE自动化、在包容器中嵌入Word对象等方法。
经过试用和比较,总结出了这几种方法的各自特点。
1 使用Shell函数直接调用语法:Shell pathnamewindowstyle.Pathname是指要执行的程序的名字和任何必须的参数或命令行开关,可以包括目录和驱动器名;Windowstyle是执行程序的窗口风格的数字。
使用Shell调用Word比较简单,编程量小,但必须明确指定Word所在路径,这不利于移植,而且,不能对Word进行控制,不利于程序和Word之间的数据交换。
2 使用OLE自动化控制Microsoft Word2.1 使用方法1Word为OLE自动化提供一种称为“Basic”的对象,要在
VB中控制Word 首先要定义一个引用Word中“Basic”对象的对象变量:Dim Wordobj as Object2将Word 中的“Basic”对象赋给该对象:Set WordobjCreateObjectquotWord.Basicquot3可以使用大多数WordBasic语句和函数控制Word或Word文档,使用方法和在Word宏中使用WordBasic指令的方法基本相同。
4关闭Word:Set Wordobj Nothing。
注意:“Basic”对象不支持关闭它自己的一个方法。
即若在OLE自动化中关闭了Word,则对象被置为Nothing,便不能再对对象进行操作,程序出错。
2.2
VB指令与WordBasic指令的差异1有一些语句和函数不能使用,包括:控制结构,如While…Wend和If…Then…Else;声明语句,如Dim;定制对话框相关的语句:FileExit语句;要求数组变量作为参数的语句或函数。
2也有一些指令使用方法不同。
①返回字符串以一个美元符()结束的WordBasic函数的关键字必须括在方括号中。
例如,在WordBasic宏中的GetBookmark语句:markGetBookmarkquotAddressquot,若用
VB调用,必须这样写markWordobj.Ge-tBookmarkquotAddressquot。
②选择一个命令按钮用“True”不选择用“False”2.3 对OLE自动化的说明Word可以为OLE自动化给另一个应用提供对象,但是它不能使用OLE自动化访问其它应用中的对象。
例如:
VB和Excel可以使用OLE自动化访问Word,但是Word不能使用OLE自动化访问它们。
3 在包容器中嵌入Word对象在
VB中,要访问在包容器中嵌入的Word对象,首先要在项目中插入对象。
做法如下:在窗体中插入OLE控件,对象类型选择“MicrosoftWord图片”或“Microsoft Word文档”,再按“确定”。
然后用Object属性访问文档或图片,并使用WordBasic语句和函数作用于它。
嵌入的对象必须在可被访问之前被激活,可以使用Action属性激活OLE控件。
例如,使用下面指令访问一个嵌入在称为OLE1的OLE控件中的文档:Dim Wordobj as ObjectOLE1.Action 7Set Wordobj OLE1.Object.Application. WordBasic其他方面,使用方法同OLE自动化。
使用在包容器中嵌入的Word对象,Word显示的窗口大小、位置与OLE控件定义的大小、位置相同,而且工具栏显示位置与Word脱离。
这一点与OLE自动化相比,是个不足。
总之,要想在Microsoft Visual Basic中控制Microsoft Word,最好使用OLE自动化,通过使用WordBasic指令对Word进行全面控制,而且,用户使用起来与使用Microsoft Word一样,非常方便___________________________________________________________________________________用
VB如何在WORD指定位置上插入文字 悬赏分:150 - 解决时间:2006-12-6 10:21提问者: sxtyhjh - 见习魔法师 二级 最佳答案在
VB6.0中,操作word,使用它强大的查找、替换、删除、复制、翦切功能。
还可以把特定字符替换成图片。
有了它你就可以使用数据库中的内容或图片文件替换word文件中的特定字符。
只要把下列内容复制到写字板中,另存为SetWord.cls文件,然后在把它添加到工程中,就可以使用了。
VERSION 1.0 CLASSBEGINMultiUse -1 TruePersistable 0 NotPersistableDataBindingBehavior 0 vbNoneDataSourceBehavior 0 vbNoneMTSTransactionMode 0 NotAnMTSObjectENDAttribute
VB_Name quotSetWordquotAttribute
VB_GlobalNameSpace FalseAttribute
VB_Creatable TrueAttribute
VB_PredeclaredId FalseAttribute
VB_Exposed False 第 3 页Private mywdapp As Word.ApplicationPrivate mysel As Object属性值的模块变量Private C_TemplateDoc As StringPrivate C_newDoc As StringPrivate C_PicFile As StringPrivate C_ErrMsg As IntegerPublic Event HaveErrorAttribute HaveError.
VB_Description quot出错时激发此事件.出错代码为ErrMsg属性quotErrMsg代码:1-word没有安装 2 - 缺少参数 3 - 没权限写文件 4 - 文件不存在Public Function ReplacePicFindStr As String Optional Time As Integer 0 As IntegerAttribute ReplacePic.
VB_Description quot查找FindStr并替换为PicFile所指向的图片文件替换次数由time参数确定为0时,替换所有quot 从Word.Range对象mysel中查找所有FindStr,并替换为PicFile图像 替换次数由time参数确定,为0时,替换所有If LenC_PicFile 0 ThenC_ErrMsg 2Exit FunctionEnd IfDim i As IntegerDim findtxt As Booleanmysel.Find.ClearFormattingmysel.Find.Replacement.ClearFormattingWith mysel.Find.Text FindStr.Replacement.Text quotquot.Forward True.Wrap wdFindContinue.Format False.MatchCase False.MatchWholeWord False.MatchByte True.MatchWildcards False.MatchSoundsLike False.MatchAllWordForms FalseEnd Withmysel.HomeKey Unit:wdStoryfindtxt mysel.Find.ExecuteReplace:TrueIf Not findtxt ThenReplacePic 0Exit FunctionEnd Ifi 1Do While findtxtmysel.InlineShapes.AddPicture FileName:C_PicFileIf i Time Then Exit Doi i 1mysel.HomeKey Unit:wdStoryfindtxt mysel.Find.ExecuteReplace:TrueLoopReplacePic iEnd FunctionPublic Function FindThisFindStr As String As BooleanAttribute FindThis.
VB_Description quot查找FindStr如果模板中有FindStr则返回TruequotIf LenFindStr 0 ThenC_ErrMsg 2Exit FunctionEnd Ifmysel.Find.ClearFormattingmysel.Find.Replacement.ClearFormattingWith mysel.Find.Text FindStr.Replacement.Text quotquot 第 4 页.Forward True.Wrap wdFindContinue.Format False.MatchCase False.MatchWholeWord False.MatchByte True.MatchWildcards False.MatchSoundsLike False.MatchAllWordForms FalseEnd Withmysel.HomeKey Unit:wdStoryFindThis mysel.Find.ExecuteEnd FunctionPublic Function ReplaceCharFindStr As String RepStr As String Optional Time As Integer 0 As IntegerAttribute ReplaceChar.
VB_Description quot查找FindStr并替换为RepStr替换次数由time参数确定为0时,替换所有quot 从Word.Range对象mysel中查找FindStr,并替换为RepStr 替换次数由time参数确定,为0时,替换所有Dim findtxt As BooleanIf LenFindStr 0 ThenC_ErrMsg 2RaiseEvent HaveErrorExit FunctionEnd Ifmysel.Find.ClearFormattingmysel.Find.Replacement.ClearFormattingWith mysel.Find.Text FindStr.Replacement.Text RepStr.Forward True.Wrap wdFindContinue.Format False.MatchCase False.MatchWholeWord False.MatchByte True.MatchWildcards False.MatchSoundsLike False.MatchAllWordForms FalseEnd WithIf Time gt 0 ThenFor i 1 To Timemysel.HomeKey Unit:wdStoryfindtxt mysel.Find.ExecuteReplace:wdReplaceOneIf Not findtxt Then Exit ForNextIf i 1 And Not findtxt ThenReplaceChar 0ElseReplaceChar iEnd IfElsemysel.Find.Execute Replace:wdReplaceAllEnd IfEnd FunctionPublic Function GetPicPicData As Byte FileName As String As BooleanAttribute GetPic.
VB_Description quot把图像数据PicData存为PicFile指定的文件quot 把图像数据PicData存为PicFile指定的文件On Error Resume NextIf LenFileName 0 ThenC_ErrMsg 2RaiseEvent HaveErrorExit FunctionEnd If 第 5 页Open FileName For Binary As 1If Err.Number ltgt 0 ThenC_ErrMsg 3Exit FunctionEnd If二进制文件用GetPut存放,读取数据Put 1 PicDataClose 1C_PicFile FileNameGetPic TrueEnd FunctionPublic Sub DeleteToEndAttribute DeleteToEnd.
VB_Description quot删除从当前位置到结尾的所有内容quotmysel.EndKey Unit:wdStory Extend:wdExtendmysel.Delete Unit:wdCharacter Count:1End SubPublic Sub MoveEndAttribute MoveEnd.
VB_Description quot光标移动到文档结尾quot光标移动到文档结尾mysel.EndKey Unit:wdStoryEnd SubPublic Sub GotoLineLineTime As Integermysel.GoTo What:wdGoToLine Which:wdGoToFirst Count:LineTime Name:quotquotEnd SubPublic Sub OpenDocview As BooleanAttribute OpenDoc.
VB_Description quot打开Word文件View确定是否显示Word界面quotOn Error Resume Next 打开Word文件,并给全局变量mysel赋值If LenC_TemplateDoc 0 Thenmywdapp.Documents.AddElsemywdapp.Documents.Open C_TemplateDocEnd IfIf Err.Number ltgt 0 ThenC_ErrMsg 4RaiseEvent HaveErrorExit SubEnd Ifmywdapp.Visible viewmywdapp.ActivateSet mysel mywdapp.Application.Selectionmysel.SelectEnd SubPublic Sub OpenWordOn Error Resume Next 打开Word程序,并给全局变量mywdapp赋值Set mywdapp CreateObjectquotword.applicationquotIf Err.Number ltgt 0 ThenC_ErrMsg 1RaiseEvent HaveErrorExit SubEnd IfEnd SubPublic Sub ViewDocAttribute ViewDoc.
VB_Description quot显示Word程序界面quot 第 6 页mywdapp.Visible TrueEnd SubPublic Sub AddNewPageAttribute AddNewPage.
VB_Description quot插入分页符quotmysel.InsertBreak Type:wdPageBreakEnd SubPublic Sub WordCutAttribute WordCut.
VB_Description quot剪切模板所有内容到剪切板quot保存模板页面内容mysel.WholeStorymysel.Cutmysel.HomeKey Unit:wdStoryEnd SubPublic Sub WordCopyAttribute WordCopy.
VB_Description quot拷贝模板所有内容到剪切板quotmysel.WholeStorymysel.Copymysel.HomeKey Unit:wdStoryEnd SubPublic Sub WordDelmysel.WholeStorymysel.Deletemysel.HomeKey Unit:wdStoryEnd SubPublic Sub WordPasteAttribute WordPaste.
VB_Description quot拷贝剪切板内容到当前位置quot插入模块内容mysel.PasteEnd SubPublic Sub CloseDocAttribute CloseDoc.
VB_Description quot关闭Word文件模板quot 关闭Word文件模本On Error Resume Nextmywdapp.ActiveDocument.Close FalseIf Err.Number ltgt 0 ThenC_ErrMsg 3Exit SubEnd IfEnd SubPublic Sub QuitWord 关闭Word程序.