在Word宏中返回Excel行

时间:2018-06-20 18:16:47

标签: excel vba ms-word word-contentcontrol

我在Word中有ContentControl下拉框。从下拉列表中选择一个项目后,我想在Excel文档中搜索该项目并将行号设置为一个变量。 下面的代码是我尝试过的,但是Columns(“ G:G”)。Find部分表示未定义。

Sub findsomething(curRow) 
    Dim rng As Range
    Dim rownumber As Long

    curPath = ActiveDocument.path & "\" 
    Call Set_Variable(curPath) 
    StrWkShtNm = "Chapters"

    If Dir(StrWkBkNm) = "" Then   
        MsgBox "Cannot find the designated workbook: " & StrWkBkNm, vbExclamation
        Exit Sub 
    End If

    Set rng = Columns("G:G").Find(what:=curRow)
    rownumber = rng.Row
    MsgBox rownumber
    ' Release Excel object memory 
    Set xlWkBk = Nothing
    Set xlApp = Nothing 
    Application.ScreenUpdating = True
End Sub

2 个答案:

答案 0 :(得分:0)

使用多个MS Office应用程序时,最好指定要定位的应用程序:

 Excel.Application.ThisWorkbook.Sheets(1).Range("A1").Select

答案 1 :(得分:0)

这就是最终的结果。您通过引用Excel将我设置在正确的轨道上。

Sub findsomething(curRow)
Dim rng As Long
Dim rownumber As Long

curPath = ActiveDocument.path & "\"
Call Set_Variable(curPath)
StrWkShtNm = "Chapters"
MsgBox "curRow = " & curRow

If Dir(StrWkBkNm) = "" Then
  MsgBox "Cannot find the designated workbook: " & StrWkBkNm, vbExclamation
  Exit Sub
End If

With xlApp
  .Visible = False
  Set xlWkBk = .Workbooks.Open(FileName:=StrWkBkNm, ReadOnly:=True, AddToMRU:=False)
  With xlWkBk
    With .Worksheets(StrWkShtNm)
        rng = .Range("G:G").Find(what:=curRow)
        MsgBox rng
    End With
    .Close False
  End With
  .Quit
End With


' Release Excel object memory
Set xlWkBk = Nothing: Set xlApp = Nothing
Application.ScreenUpdating = True

End Sub