Aufruf von Excel-Makro mit Rückgabewert

31/03/2008 - 15:31 von Axel Mayer | Report spam
Hallo,

ich versuche ein Excel-Makro von VB.Net aus aufzurufen und dessen
Rückgabewert zu bekommen.
Ich bekomme aber immer nur Nothing.
Was mache ich wohl falsch?

Viele Grüße
Axel

Excel-Makro:
Public Function ExcelMakro(ByVal eingabe As String) As String
ExcelMakro = eingabe
End Function

VB.Net-Code:
Imports Microsoft.Office.Interop.Excel

Public Class Class1
Dim oBooks As Excel.Workbooks


Public Shared Sub main()
Dim oExcel As Excel.ApplicationClass = Nothing
Dim oBook As Excel.WorkbookClass = Nothing
Dim oBooks As Excel.Workbooks = Nothing
Try

'Start Excel and open the workbook.
oExcel = New Excel.Application
oExcel.Visible = True
oBooks = oExcel.Workbooks
oBook = oBooks.Open("c:\temp\makrotest.xls")

'Run the macros.
Dim strReturn As String
Try
strReturn = oExcel.Run("DieseArbeitsmappe.Makrotest",
"eingabetext")
Debug.WriteLine(strReturn)
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try


Catch ex As Exception
Finally
'Clean-up: Close the workbook and quit Excel.
oBook.Close(False)
System.Runtime.InteropServices.Marshal.ReleaseComObject(oBook)
oBook = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject(oBooks)
oBooks = Nothing
oExcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel)
oExcel = Nothing
GC.Collect()
End Try

End Sub

End Class
 

Lesen sie die antworten

#1 Thomas Kühn
31/03/2008 - 16:21 | Warnen spam
Hallo Axel,

Hier definierst Du die Funktion _ExcelMakro_
Public Function ExcelMakro(ByVal eingabe As String) As String



und hier rufst Du die Funcktion _Makrotest_ auf.
                strReturn = oExcel.Run("DieseArbeitsmappe.Makrotest",



Ich denke mal mit richtigem Funktionsnamen bekommst Du auch einen
Rückgabewert.
strReturn = oExcel.Run("DieseArbeitsmappe.Excelmakro", "eingabetext")

Gruß
Thomas


http://www.thomas-kuehn.de

Ähnliche fragen