2017-06-12 82 views
0

在Word VBA你可以設置和使用Selection.MoveLeft移動光標位置,Selection.MovRight等等如何通過Excel的VBA使用的話選擇方法

然而在試圖使用相同的Excel VBA中的方法我得到一個錯誤,說「對象不支持此屬性或方法。」

我已導入Word對象庫引用。

我怎樣才能夠在Excel應用程序上使用VBA移動Word文檔上的光標位置。任何幫助將不勝感激。

代碼: 設置文檔= ActiveDocument.Content

With Doc.Find 
    .Execute FindText:="*", ReplaceWith:="NEW*" 
    End With 

    Selection.HomeKey Unit:=wdStory 
    Selection.MoveDown Unit:=wdParagraph, Count:=11 
    Selection.MoveRight Unit:=wdWord, Count:=4 
    Selection.MoveRight Unit:=wdWord, Count:=2, Extend:=wdExtend 
    Selection.Font.Bold = False 
    Selection.Font.Name = "Arial" 
    Selection.Font.Size = 9 
+0

您是否創建了一個單詞應用程序對象並將其與Word掛鉤?顯示其餘代碼可能會很有用。例如:http://software-solutions-online.com/vba-opening-word-from-excel/ –

回答

0

當你的代碼代表關鍵字「選擇」是指在Excel中當前選定單元格,而不是你的Word文檔中的光標位置。 Excel Selection對象沒有移動方法。你可能有使用範圍更大的成功,而不是選擇:你的示例代碼轉換爲

With ActiveDocument 

    With .Content.Find 
     .Execute FindText:="*", ReplaceWith:="NEW*" 
    End With 


    with .Paragraphs(4).Range.Words(5).Font 
     .Bold = false 
     .name = "Arial" 
      .size = 9 
     end with 
     With .Paragraphs(4).Range.Words(6) 
     .Bold = false 
     .name = "Arial" 
      .size = 9 
     end with 
end with 
+0

缺少對Word應用程序對象的引用,所以真的有點像'With wdApp.ActiveDocument' –

0

你的問題就會迎刃而解,如果你改一下你的問題,「移動上的Excel應用程序使用VBA在Word文檔中的光標位置」。您不能使用Excel應用程序在Word文檔中移動光標。

當您打開Excel工作簿時,將加載Excel應用程序的實例。您可以使用這個相同的實例來打開幾個工作簿。它還包含Excel VBA以及Excel應用程序的所有對象,方法和功能。這個實例沒有名字。

但是你可以創建代碼Excel應用程序的另一個實例像

Dim XlApp as Excel.Application 
Set XlApp = New Excel.Application 

你就此創建的新實例具有第一實例的所有設施,但完全獨立的形式吧。你可以像

Dim Wb as workbook 
Set Wb = XlApp.Workbooks.Add([Template]) 

打開工作簿的代碼現在,如果你已經設置爲MS Word對象庫,你可以創建一個使用類似的代碼,一個Word應用程序,例如參考,

Dim WdApp as Word.Application 
Set WdApp = New Word.Application 

這可能是在您的計算機上運行的MS Word的唯一實例,或者可能是除已運行的其他實例外創建的新實例。這個實例知道MS Word的所有對象和方法。

您可以在同一個VBA項目中控制兩個實例XlApp和WdApp,但應小心區分這些對象。例如,Excel和Word都有一個Range對象。他們是非常不同的動物。您可以指定,例如,

Dim xlRng As Excel.Range 
Dim wdRng As Word.Range 
Dim MyRng As Range 

在這個例子中,MyRng將是一個Excel範圍,如果您的VBA項目的Excel項目。雖然你有這兩種應用程序運行這種違約會導致脫髮。

Dim Wb As Workbook 
Dim Doc As Document 

不會引起類似的困惑,因爲沒有Workbook對象MS Word和MS Excel中沒有Document對象。如果VBA可用,VBA將自動使用正確的應用程序。

當操縱WdRng你將有機會到Word Range對象的所有方法,包括Move,但沒有Address屬性,例如,這是XlRng的屬性。

處理兩個Selection對象是有問題的。您必須激活一個窗口或文檔或工作簿,VBA將通過查看在選定窗口中運行的應用程序來了解您的意思。如果指定文檔/工作簿對象並使用WdRngXlRng對象來處理數據,則不會出現該問題。

+0

您的最後一段是有點誤導:'Selection'是'Application'對象的屬性,所以只要你有資格 - 例如'xlApp.Selection'或'wdApp.Selection',不應該有任何混淆。 –