2013-07-23 40 views
1

我想從word處理excel工作簿。一切都工作得很好,直到突然之間我無法從ActiveCell獲得響應。價值在excel中獲取ActiveCell值FROM word宏

問題在這段代碼的底部一直髮生,我嘗試在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 

回答

2

由於幾個原因,您沒有在消息框中獲得值。你幾乎在那裏與你的單元格引用,但ActiveCellExcel.Application的財產。 VBA認爲ActiveCell來自Word對象模型,而不是Excel,因爲您沒有明確指定它來自Excel。

由於您的第一行內容之一是On Error Resume Next您的所有錯誤都被壓抑,並且您沒有觸及對ActiveCell的不合格參考的錯誤。因此,單詞將空白字符串tempStr傳遞給您的消息框。

下面的工作對你

tempStr = excelObj.ActiveCell 

應當注意的是,你不需要Select細胞,以獲得它們的值。以下將產生相同的結果:

tempStr = worksheetJobs.Cells(1500, fichierColumn).Value 
+0

謝謝,這完全解決了這個問題。你是一個拯救生命的人! –