Vba-functie werkt niet als formule.

Status
Niet open voor verdere reacties.
Dag snb !

De functie werkt normaal bij aanroep vanuit Sub.

Ze werkt niet als formule in een cel. Foutmelding #VALUE!. Excel draait dus niet in de war.
Na 2 stappen houdt vba er gewoon mee op. Zie debugger-shots.

F_snb.png

Dus samengevat, als formule in een cel:

  • GetObject(c00): werkt niet = "Excel has stopped working".
  • GetObject("", "Excel.Application") : werkt normaal.
  • GetObject(, "Excel.Application") : werkt niet = #VALUE!.
(Alles wel gelet op de combinatie bij mij = Win 7 + Office 2003).

In ieder geval is dit https://support.microsoft.com/en-us/kb/170787 de moeite om in gedachten te houden.

Grtz,
MDN111.
 
Het lijkt erop dat het iedere keer aanmaken van een object op een gegeven moment een probleem geeft. Voortbordurend op het voorbeeld van snb, probeer het eens zo:
Code:
Function F_snb(c00)
  Dim exObj As Object
  Set exObj = GetObject(, "Excel.Application")
  With exObj
    With .Workbooks.Open(c00)
      F_snb = .Sheets(1).Range("A1").Value
      .Close 0
    End With
  End With
  Set exObj = Nothing
End Function

Het aangemaakt object wordt dan direct na gebruik weer vrijgegeven.
 
Dag edmoor !

Zoals te verwachten was, gedraagt je functie zoals in het 3de geval van #21. Resultaat #VALUE! en geen andere foutmelding. In de debugger kon ik vaststellen dat de regel "Set exObj = Nothing" nooit bereikt wordt. Hij houdt er gewoon mee op na de regel ".Workbooks.Open(c00)".

Het is het openen van het bestand dat faalt. Ik heb je functie als volgt aangepast en in de debugger zien we dat oWB op Nothing blijft na de regel "Set oWB = .Workbooks.Open(c00)".

Code:
Function F_snb(c00)
  Dim exObj As Object[COLOR="#0000FF"], oWB As Workbook[/COLOR]
  Set exObj = GetObject(, "Excel.Application")
  With exObj
    [COLOR="#0000FF"]Set oWB = .Workbooks.Open(c00)[/COLOR]  [COLOR="#008000"]'Dit werkt niet. oWB blijft op Nothing.[/COLOR]
    With [COLOR="#0000FF"]oWB[/COLOR]
      F_snb = .Sheets(1).Range("A1").Value
      .Close 0
    End With
  End With
  Set exObj = Nothing
End Function

debug.png

Grtz,
MDN111.
 
Onderstaande werkt hier prima (2003/2007), maar krijg wel een melding dat het bestand wordt geconverteerd maar ook weer weggaat.

Code:
Sub test()
With ThisWorkbook.Sheets(1).Cells(1, 1)
    .Offset(0, 1).Value = F_snb(.Value)
End With
End Sub

Function F_snb(c00)
  Dim exObj As Object
  Set exObj = GetObject("", "Excel.Application")
  With exObj
    With .Workbooks.Open(ThisWorkbook.Path & "\" & c00)
      F_snb = .Sheets(1).Range("X1").Value
      .Close 0
    End With
  End With
  Set exObj = Nothing
End Function
 
Dag HSV !

Ja, dat werkt. Het is gelijk aan het 2de geval van #21.

Grtz,
MDN111.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan