2016-08-15 337 views
0

我是新來的VBA和我想放在一起的宏在Excel中。該宏用於在Word文檔中搜索特定的文本字符串,並返回其所在的頁碼(即該列會在文檔的第#頁上顯示「###」)。Excel的VBA從找到的文本得到頁碼在Word

我似乎是非常接近我想要的東西。宏找到文本,我可以讓它告訴我它找到/沒有找到它。但是,當我用代碼運行它返回頁碼時,它告訴我索引超出範圍。我相信困難在於我對對象及其屬性的有限理解。

任何幫助表示讚賞!

Sub OpenWordDoc() 
     Set wordapp = CreateObject("word.Application") 
     wordapp.Visible = True 
     wordapp.Activate 
     wordapp.Documents.Open "filename.docx" 
     Set findRange = Sheet1.Range("D4:D8") 
     For Each findCell In findRange.Cells 
      Set rngFound = wordapp.ActiveDocument.Range.Find 
      rngFound.Text = findCell.Value 
      rngFound.Execute 
      If rngFound.Found Then 
       findCell.Offset(columnOffset:=1) = rngFound.Parent.Information(wdActiveEndPageNumber) 
      Else 
       findCell.Offset(columnOffset:=1) = findCell.Value 
      End If 
     Next findCell 
    wordapp.Quit 
    Set wordapp = Nothing 
    End Sub 

編輯1:我已經在完全不同的計算機上以及Word和Excel的不同版本上試過了。彈出相同的消息。錯誤是這一塊 - rngFound.Parent.Information(wdActiveEndPageNumber) - 我認爲rngFound.Parent不作爲「選擇」。我也嘗試用wdNumberOfPagesInDocument替換wdActiveEndPageNumber,以查看它是否爲特定值並獲得相同的錯誤消息。

+1

究竟是什麼線是給錯誤?當我嘗試複製這個問題時,它對我來說運行良好。 – Mikegrann

+0

我收到「運行時錯誤‘4608’:值超出範圍」是在哪裏設置單元格等於頁碼 – user6718894

+0

那一行線什麼被傳遞到函數在該行的值? ? – Mikegrann

回答

0

嘗試這樣:

Sub OpenWordDoc() 
    Dim wordapp As Word.Application 
    Dim findRange As Excel.Range 
    Dim findCell As Excel.Range 
    Dim rngFound As Word.Range 

    Set wordapp = CreateObject("word.Application") 
    wordapp.Visible = True 
    wordapp.Activate 
    wordapp.Documents.Open "filename.docx" 
    Set findRange = Sheet1.Range("D4:D8") 
    For Each findCell In findRange.Cells 
     Set rngFound = wordapp.ActiveDocument.Range 
     With rngFound.Find 
      .Text = findCell.Value 
      .Execute 
     End With 
     If rngFound.Find.Found Then 
      findCell.Offset(columnOffset:=1) = rngFound.Information(wdActiveEndPageNumber) 
     Else 
      findCell.Offset(columnOffset:=1) = findCell.Value 
     End If 
    Next findCell 
    wordapp.Quit 

    Set rngFound = Nothing 
    Set findCell = Nothing 
    Set findRange = Nothing 
    Set wordapp = Nothing 
End Sub 

希望幫助

+0

我不得不打開對象Word的圖書館,但完全做到了!謝謝!謝謝!我知道這個問題與它對Excel和Word對象感到困惑有關。 – user6718894

+0

非常酷的xidgel! – 2016-11-22 16:01:47