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、Excel からのものであると明示的に指定していないため、Excel ではなく Word オブジェクト モデルから来ていると考えます。

最初の行の 1 つは、On Error Resume Nextすべてのエラーが抑制されているため、非修飾参照のエラーにヒットしていませんActiveCell。その結果、Word は空白文字列をtempStrメッセージ ボックスに渡します。

以下はあなたのために働くでしょう

tempStr = excelObj.ActiveCell 

Select値を取得するためにセルを取得する必要はないことに注意してください。以下は同じ結果になります。

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