VBA:从excel打开word
我无法从Excel宏(office xp)打开Word。如果我使用此代码,它将停止在行Set wdDoc = wordapp.Documents.Open(polozka.ShortPath)
并且程序冻结。如果我使用Set wdDoc = GetObject(polozka.ShortPath)
而不是这条线,计划在这里With wdDoc.Selection
停止与“对象不支持此属性...”错误VBA:从excel打开word
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
你必须声明你的对象变量像下面
Dim Paragraphe As Object, WordApp As Object, WordDoc As Object
并使用doc:
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)
和关闭的applcation
WordDoc.Close
WordApp.Quit
Set WordDoc = Nothing
Set WordApp = Nothing
我希望他们能帮助你
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
请正确格式化您的代码。 [阅读SO标记在线帮助](http://stackoverflow.com/help/formatting)。 – 2013-09-21 10:53:11
我用Excel不承认一个Word.Application指挥等字对象类似的问题。如果你想让这些对象被excel识别,你将需要在Visual Basic编辑器中选择Tools> References ...。当您选择引用时,将填充一个窗口,向下浏览列表,直至找到Microsoft Word x.0 Object Library。选中复选框,这将允许excel现在识别单词命令。您还可以更改该对象库的优先级以便下次更容易找到。
谢谢,现在我可以用第一种方式打开文档,但仍然程序在这里停止'With wdDoc.Selection' with“Object does not support this property or method”error – koubin 2013-05-09 07:38:37
我找到了解决办法。将此行改为'用wdDoc.Selection'改为'用wordapp.Selection'解决它。但是我仍然不知道,为什么我不能使用'wdDoc'对象 – koubin 2013-05-09 15:27:13