1

我正在尝试从 word 中操作 excel 工作簿。一切都运行良好,直到突然我无法从 ActiveCell.Value 得到响应

问题一直发生在这段代码的底部,我尝试在 msgbox 中显示值,但没有出现 msgbox。

之前的命令如:

worksheetJobs.Activate

.Cells(1500, fichierColumn).Select

工作正常。

奇怪的是,我正在研究这个(在我发布的内容之后有一整块代码),然后突然之间我什至无法得到这个非常基本的东西来回应......

    Dim excelObj As Excel.Application
    Dim oWB As Excel.Workbook

    'If Excel is running, get a handle on it; otherwise start a new instance of Excel
    On Error Resume Next
    Set excelObj = GetObject(, "Excel.Application")

    If Err Then
        MsgBox "excel is not running"
        Set excelObj = New Excel.Application
        excelObj.Visible = True

        On Error GoTo Err_Handler
        Set oWB = excelObj.Workbooks.Open(Filename:=todoWorkbook)

    Else
        MsgBox "excel is running"
        Dim wb As Workbook
        For Each wb In excelObj.Workbooks
            If wb.Name = toDoName Then
                Set oWB = wb
                Exit For
            End If
        Next wb
    End If

    MsgBox oWB.Name

    Dim fichierColumn As Integer
    Dim outMots As Integer
    Dim outLignes As Integer
    Dim langOut As Integer

    fichierColumn = 5
    outMots = 17
    outLignes = 18
    langOut = 9

    Dim worksheetJobs As Excel.Worksheet
    Set worksheetJobs = oWB.Worksheets("Liste jobs")
    worksheetJobs.Activate

    With worksheetJobs
        .Cells(1500, fichierColumn).Select
        Dim tempStr As String

        tempStr = ActiveCell.Value
        MsgBox tempStr

    End With

    'Set excelObj = Nothing
    'Set oWB = Nothing
    Exit Sub

Err_Handler:
   MsgBox todoWorkbook & " caused a problem. " & Err.Description, vbCritical, _
       "Error: " & Err.Number

End Sub
4

1 回答 1

2

由于几个原因,您没有在消息框中获得值。您的单元格引用几乎就在那里,但ActiveCell它是Excel.Application. VBA 认为ActiveCell来自 Word 对象模型,而不是 Excel,因为您没有明确指定它来自 Excel。

由于您的第一行之一是您的On Error Resume Next所有错误都被抑制了,并且您没有遇到对ActiveCell. 因此 word 正在将空白字符串传递tempStr给您的消息框。

以下将为您工作

tempStr = excelObj.ActiveCell 

应该注意的是,您不需要Select单元格来获取它们的值。以下将产生相同的结果:

tempStr = worksheetJobs.Cells(1500, fichierColumn).Value
于 2013-07-23T07:09:26.730 回答