Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

JAVA API mit VBA verwenden

Forumthread: JAVA API mit VBA verwenden

JAVA API mit VBA verwenden
29.01.2008 19:39:49
Torsten
Hallo,
ich möchte gern eine JAVA API mit Excel VBA nutzen, so wie man es mit einer API in DLL-Form machen kann. Kann mir jemand sagen, wie man eine solche JAVA API in Excel einbinden kann und dann die JAVA Methoden nutzen kann?
Ich hoffe mir kann jemand helfen.
Vielen Dank für die Antwort und Viele Grüße
Torsten

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: JAVA API mit VBA verwenden
29.01.2008 20:35:26
Volti
Hallo Thorsten,
grundsätzlich kannst Du Funktionen aus DLL's auch in VBA aufrufen. Denke mal auch JAVA Funktionen, die in einer DLL eingebettet sind, wobei ich das aber jetzt nicht so genau weiß.
Hierbei gibt es zwei Aufrufmodi:
1. Early Bnding und 2. late binding.
Zu 1. Early Binding
Die entsprechende Funktion zuerst Declarieren und dann verwenden:
Hier Beispiele aus WinApi für DLL-Laden und eigene DLL:
Declare

Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As  _
Long
Declare 

Function Hauptprogramm Lib "D:\PIV_ADD3\PIV_Create.DLL" (Options As String) As Long


Sub WinTest()
hLib = LoadLibrary("D:\myProg\PIV_Create.dll")
End Sub



Sub EigenTest()
Ergebnis=Hauptprogramm("abdabdabd")
End Sub


Über den Declare wird der Ort/Pfad der DLL bereits festgelegt; wenn die Datei nicht da ist gibt es Fehlermeldung
Zu 2. Late Binding:
Hierbei wird die DLL erst geladen wenn sie benötigt wird. Man kann vorher deren Vorhandensein abfragen oder je nach Programmablauf verschiedene DLL_Versionen (Englisch, Deutsch, Französisch) laden:


Sub DynDLL()
hLib = LoadLibrary(LW & "PIV_Create.dll")
pProc = GetProcAddress(ByVal hLib, "Hauptprogramm")
FreeLibrary hLib
End Sub


Diesen Code verwende ich in anderen Programmiersprachen. Leider konnte mir in diesem Forum niemand sagen, wie ich die zurückgegebene Programmadresse unter VBA aufrufen kann........
Also, grundsätzlich kannst Du so arbeiten. Aber Du musst die exportierten Funktionen samt erwarteter Parameter genau kennen, um sie aufrufen zu können. Dann sollte es funktionieren.
viele Grüße
Karl-Heinz

Anzeige
AW: JAVA API mit VBA verwenden
29.01.2008 20:35:00
Volti
Hallo Thorsten,
grundsätzlich kannst Du Funktionen aus DLL's auch in VBA aufrufen. Denke mal auch JAVA Funktionen, die in einer DLL eingebettet sind, wobei ich das aber jetzt nicht so genau weiß.
Hierbei gibt es zwei Aufrufmodi:
1. Early Bnding und 2. late binding.
Zu 1. Early Binding
Die entsprechende Funktion zuerst Declarieren und dann verwenden:
Hier Beispiele aus WinApi für DLL-Laden und eigene DLL:
Declare

Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As  _
Long
Declare 

Function Hauptprogramm Lib "D:\PIV_ADD3\PIV_Create.DLL" (Options As String) As Long


Sub WinTest()
hLib = LoadLibrary("D:\myProg\PIV_Create.dll")
End Sub



Sub EigenTest()
Ergebnis=Hauptprogramm("abdabdabd")
End Sub


Über den Declare wird der Ort/Pfad der DLL bereits festgelegt; wenn die Datei nicht da ist gibt es Fehlermeldung
Zu 2. Late Binding:
Hierbei wird die DLL erst geladen wenn sie benötigt wird. Man kann vorher deren Vorhandensein abfragen oder je nach Programmablauf verschiedene DLL_Versionen (Englisch, Deutsch, Französisch) laden:


Sub DynDLL()
hLib = LoadLibrary(LW & "PIV_Create.dll")
pProc = GetProcAddress(ByVal hLib, "Hauptprogramm")
FreeLibrary hLib
End Sub


Diesen Code verwende ich in anderen Programmiersprachen. Leider konnte mir in diesem Forum niemand sagen, wie ich die zurückgegebene Programmadresse unter VBA aufrufen kann........
Also, grundsätzlich kannst Du so arbeiten. Aber Du musst die exportierten Funktionen samt erwarteter Parameter genau kennen, um sie aufrufen zu können. Dann sollte es funktionieren.
viele Grüße
Karl-Heinz

Anzeige
AW: JAVA API mit VBA verwenden
29.01.2008 20:46:16
Torsten
Hallo, mein Problem ist, dass es sich bei JAVA API nicht um eine DLL handelt, sondern um eine *.jar Datei. Nun ist die Frage wie man diese Datei am besten in Excel nutzen kann. Danke schon mal für die Antwort

AW: JAVA API mit VBA verwenden
29.01.2008 23:40:00
Jens
Hi,
wenn die Klasse eine Schnittstelle bietet, einfach einen Verweis setzen.
mfg Jens

Anzeige
AW: JAVA API mit VBA verwenden
30.01.2008 09:27:00
Torsten
Hallo,
muss man denn da auch noch eine andere DLL einbinden, um JAVA zu starten bzw. die JAVA-Befehle nutzen zu können?
Gruß Torsten

.
30.01.2008 16:08:00
.
.
;
Anzeige

Infobox / Tutorial

JAVA API mit VBA verwenden


Schritt-für-Schritt-Anleitung

Um eine JAVA API in Excel VBA zu verwenden, musst du einige Schritte befolgen. Hier ist eine einfache Anleitung:

  1. JAVA Installieren: Stelle sicher, dass du die neueste Version von JAVA installiert hast.

  2. VBA-Entwicklungsumgebung Öffnen: Öffne Excel und gehe zu Entwicklertools > Visual Basic, um die VBA-Umgebung zu starten.

  3. Verweis Setzen: Wenn Deine JAVA-Klasse eine Schnittstelle bietet, kannst Du einen Verweis darauf setzen. Gehe zu Extras > Verweise und suche nach der entsprechenden Schnittstelle.

  4. JAVA API Einbinden: Um eine .jar-Datei einzubinden, benötigst du möglicherweise eine zusätzliche DLL oder eine Wrapper-Bibliothek, die als Schnittstelle dient. Stelle sicher, dass die DLL, die JAVA aktiviert, korrekt eingebunden ist.

  5. VBA-Funktion Erstellen: Nutze die Declare-Anweisung, um die benötigten Funktionen aus der DLL zu deklarieren. Beispiel:

    Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
  6. Funktionen Nutzen: Rufe die JAVA-Methoden über die deklarierte Funktion auf.


Häufige Fehler und Lösungen

Fehler 1: DLL nicht gefunden

  • Stelle sicher, dass der Pfad zur DLL korrekt angegeben ist. Wenn die Datei nicht vorhanden ist, gibt es eine Fehlermeldung.

Fehler 2: Zugriff auf JAVA-Funktionen

  • Überprüfe, ob die JAVA-Funktion richtig exportiert wurde und dass Du die korrekten Parameter übergibst.

Fehler 3: JAVA API nicht erreichbar

  • Stelle sicher, dass die JAVA API ordnungsgemäß läuft und die benötigten Umgebungsvariablen gesetzt sind.

Alternative Methoden

Es gibt verschiedene Möglichkeiten, wie Du eine JAVA API in Excel VBA einbinden kannst:

  1. JNA (Java Native Access): Nutze JNA, um die JAVA-Funktionen direkt aus VBA anzusprechen.
  2. WebService: Wenn Deine JAVA API als WebService bereitgestellt wird, kannst Du HTTP-Anfragen aus VBA heraus senden und die Antworten verarbeiten.
  3. COM-Objekte: Erstelle ein COM-Objekt in JAVA, das dann in VBA verwendet werden kann.

Praktische Beispiele

Hier ist ein einfaches Beispiel, um eine JAVA-Funktion über eine API in Excel VBA zu nutzen:

Sub CallJavaFunction()
    Dim hLib As Long
    Dim result As Long

    ' Lade die DLL
    hLib = LoadLibrary("C:\Path\To\Your\JavaDLL.dll")

    ' Rufe die Hauptfunktion auf
    result = Hauptprogramm("Parameter")

    ' Gib das Ergebnis aus
    MsgBox result
End Sub

In diesem Beispiel wird eine DLL geladen, die eine JAVA-Funktion aufruft. Achte darauf, dass die DLL die JAVA-Logik korrekt implementiert.


Tipps für Profis

  • Debugging: Nutze Debugging-Tools in VBA, um Probleme bei der Integration zu identifizieren.
  • Dokumentation: Halte die Dokumentation Deiner JAVA API bereit, um die Funktionen und Parameter besser zu verstehen.
  • Performance: Achte darauf, die API nur dann zu laden, wenn sie benötigt wird, um die Leistung von Excel nicht zu beeinträchtigen.

FAQ: Häufige Fragen

1. Wie kann ich eine .jar-Datei in Excel VBA verwenden? Um eine .jar-Datei zu verwenden, benötigst Du eine Wrapper-DLL, die die JAVA-Klasse in VBA verfügbar macht.

2. Muss ich zusätzliche DLLs einbinden? Ja, oft ist es notwendig, eine DLL einzubinden, die die JAVA-Umgebung oder API-Funktionen bereitstellt.

3. Was ist der Unterschied zwischen Early und Late Binding? Early Binding erfordert, dass die DLL zur Compile-Zeit bekannt ist, während Late Binding die DLL zur Laufzeit lädt. Dies kann flexibler sein, ist jedoch auch komplexer in der Handhabung.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige