VBA:从Excel中打开单词

我无法从Excelmacros(Office XP)中打开Word。 如果我使用这个代码,它将停止在线Set wdDoc = wordapp.Documents.Open(polozka.ShortPath)和程序冻结。 如果我使用Set wdDoc = GetObject(polozka.ShortPath)而不是这行,程序停在这里With wdDoc.Selection与“对象不支持此属性…”错误

 Dim wordapp As Word.Application Dim wdDoc As Word.Document Set fso = CreateObject("Scripting.FileSystemObject") Set files = fso.GetFolder("C:\path").Files Set wordapp = CreateObject("Word.Application") For Each polozka In files Set wdDoc = wordapp.Documents.Open(polozka.ShortPath) wordapp.Visible = True With wdDoc.Selection .HomeKey Unit:=6 .Find.Text = "Název (typ):" .Find.Wrap = wdFindContinue ... End With ... wordapp.Quit Set wordapp = Nothing Next 

你必须声明你的variables为下面的对象

 Dim Paragraphe As Object, WordApp As Object, WordDoc As Object 

并使用文档:

 File= "D:\path" 'creationsession Word Set WordApp = CreateObject("Word.Application") 'word ll be close to run WordApp.Visible = False 'open the file .doc Set WordDoc = WordApp.Documents.Open(File) 

并closures应用程序

 WordDoc.Close WordApp.Quit Set WordDoc = Nothing Set WordApp = Nothing 

我希望他们能帮助你

我有一个类似的问题与Excel不识别word.application命令和其他单词对象。 如果你想让这些对象被excel识别,你将需要在Visual Basic编辑器中selectTools> References …。 当您select引用时,将填充一个窗口,向下浏览列表,直到findMicrosoft Word x.0 Object Library。 选中checkbox,这将允许excel现在识别单词命令。 您还可以更改该对象库的优先级,以便下次更容易find。

 Sub substitute() ' ' substitute Macro ' ' Note: In Excel VBA, in tools -> references: Enable Microsoft Word 12.0 0bject ' Dim FindStr As String Dim ReplaceStr As String Dim path_src As String Dim path_dest As String ' Define word object Dim WA As Object Dim cs As Worksheet Dim Idx As Integer ' Data worksheet "Data" col A find text, Col B replace text Set cs = ActiveWorkbook.Worksheets("Data") Set WA = CreateObject("Word.Application") WA.Visible = True path_src = "C:\Temp\data.docx" path_dest = "C:\Temp\data_out.docx" WA.documents.Open (path_src) ' Set word object active WA.Activate ' Optional, use Idx to limit loop iterations Idx = 1 Do While ((Len(cs.Cells(Idx, 1).Value) > 1) And (Idx < 100)) ' FindStr = cs.Cells(Idx, 1).Value ReplaceStr = cs.Cells(Idx, 2).Value With WA .Selection.HomeKey Unit:=wdStory .Selection.Find.ClearFormatting .Selection.Find.Replacement.ClearFormatting With .Selection.Find .Text = FindStr .Replacement.Text = ReplaceStr .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With .Selection.Find.Execute Replace:=wdReplaceAll End With Idx = Idx + 1 Loop WA.Application.ActiveDocument.SaveAs path_dest WA.documents.Close Set WA = Nothing End Sub