4

Excel マクロ (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
4

3 に答える 3

14

You have to declare your variable as Object like below:

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

And to use the doc:

File= "D:\path"
'Word session creation 
Set WordApp = CreateObject("Word.Application")
'word will be closed while running
WordApp.Visible = False
'open the .doc file 
Set WordDoc = WordApp.Documents.Open(File)

And to close the application:

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

I hope it can help you.

于 2013-05-07T12:40:39.127 に答える
3

word.applicationコマンドと他の単語オブジェクトを認識しないという同様の問題がありました。これらのオブジェクトを Excel で認識させたい場合は、Visual Basic エディタで [ツール] > [参照...] を選択する必要があります。[ウィンドウに表示される参照] を選択すると、Microsoft Word x.0 Object Library が見つかるまでリストを下に移動します。チェックボックスを選択すると、Excel が単語コマンドを認識できるようになります。そのオブジェクト ライブラリの優先度を変更して、次回見つけやすくすることもできます。

于 2013-12-13T21:10:29.047 に答える
2
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  
于 2013-09-21T10:31:26.687 に答える