VB 5.0 Version ermitteln

Hallo Wissende,

wenn ich im Code „version“ anklicke und dann F1 drücke wird „version“ nicht gefunden.
Suche ich aber „version“ in der Hilfe selbst bei Hilfethemen und es ist aufgelistet.
Nachstehend steht dann was die VB-Hilfe zu „version“ sagt, mir kommt es so vor als wenn sie da was stehen haben was für VbA gilt, weil sie da auch im Text VBa erwähnen.
Jedenfalls funtionieren die dortigen beispiele, die ich Code benutzt habe nicht, „version“ gibt es wohl nicht in VB 5.0.

Wie kann ich nun abprüfen ob VB5.0 oder VB6.0 vorliegt? Alle Codezeilen die „version“ enthalten funktionieren nicht.

Private Sub Form\_Load()
'#Const Ver = IIf(App.version = "5.0", True, False)
MsgBox App.ProductName
'MsgBox App.version
'MsgBox App.vbe.version
'#If Ver = True Then
' Function Split(ByVal Satz As String, ByVal Trenner As String)
' 'code
' End Function
'#End If
End Sub

Danke und Gruß
Reinhard

Gibt einen Wert vom Typ String zurück, der die Version von Visual Basic für Applikationen enthält , die von der Anwendung verwendet wird. Schreibgeschützt.

Bemerkungen

Die Version-Eigenschaft stellt eine Zeichenfolge dar, die mit ein oder zwei Ziffern, einem Punkt und zwei Ziffern beginnt; der Rest der Zeichenfolge ist nicht definiert und kann sich aus Text oder Zahlen zusammensetzen.

In dem folgenden Beispiel wird die Version-Eigenschaft verwendet, um die Versionsnummer der Host-Anwendung zurückzugeben.

Debug.Print Application.VBE.Version

PS: Ich habe sogar Excel beendet, weil ich dachte VB hätte die falsche Hilfedatei erwischt o.ä. aber nein, so steht es in der Vb Hilfe.

Hallo Reinhard,

ich verstehe nicht, was Du vor hast.

Welche Entwicklungsumgebung Du verwendest, weißt Du doch.

Ich habe gerade mal mit dem Texteditor in eine meiner Formen gesehen, die ich mit VB6.0 erstellt habe und zu meiner Überraschung steht da als erste Zeile ‚Version 5.0‘ :smile:

Gruß Rainer

Hallo Rainer,

ich verstehe nicht, was Du vor hast.
Welche Entwicklungsumgebung Du verwendest, weißt Du doch.

ja, ich schon und wenn ich aus meinem Vb-Code eine Exe mache ist es der auch egal ob überhaupt und wenn ja welches VB auf einem anderen Rechner ist *annehm*

Bei Vba sieht das anders aus, da wird ja ein Makro durch die auf dem jeweiligen Rechner vorhandene VBa-Version kompiliert/interpretiert.
Wenn man also im Makrocode Funktionen wie Split,Instrrev u.ä. verwendet, MUß man also vorher prüfen ob die Version auf dem jeweiligen Rechner die auch kennt, wenn nicht muß man halt zu bedingter Kompilierung greifen o.ä.

In VBA gibt es die feste vorgebene Konstante VBA60, die man mit

#If VBA60 = true then
#Else
#End If

abbprüfen kann.

Bei XL97 ist VBA60 False, bei XL2000, XL2002,XL2003,XL2007 ist VBA60 =true, somit weiß man, es liegt ggfs. XL97 vor und ich muß z.B. eine Splitfunktion erstellen, sonst scheitert mein Code mit dem Split-Aufruf.

Nun,zurück zu VB, angenommen du schreibst ein Buch zu VB5 und 6, und alle deine Codes sollen in beiden Versionen funktionieren, so mußt du ja auch abprüfen ob Vb5 oder Vb6 vorliegt, um dann ggfs. in Vb5 fehlende Funktionen bedingt nachzukompilieren.

Wie also stelle ich fest welche Version vorliegt?

Ich habe gerade mal mit dem Texteditor in eine meiner Formen
gesehen, die ich mit VB6.0 erstellt habe und zu meiner
Überraschung steht da als erste Zeile ‚Version 5.0‘ :smile:

Wenn mein Vb5 Lernen in dem Tempo weitergeht kann ich dir das locker beantworten, so in 3 jahren :smile:))

Gruß
Reinhard

Hallo Reinhard,

Nun,zurück zu VB, angenommen du schreibst ein Buch zu VB5 und 6,
und alle deine Codes sollen in beiden Versionen funktionieren,
so mußt du ja auch abprüfen ob Vb5 oder Vb6 vorliegt, um dann
ggfs. in Vb5 fehlende Funktionen bedingt nachzukompilieren.

In dem Fall würde ich einfach VB5 Code schreiben, den kann VB6 auf
jeden Fall auch.
Groß sind die Unterschiede ja nicht.

> Wie also stelle ich fest welche Version vorliegt?

Ich habe nichts gefunden, wie man das per Code kann.

Im kompilierten Programm ist es egal, einen VB5-Quellcode kann man so
ohne Weiteres nicht in VB6 laden … den falschen Code bekommt man
also ohnehin nur mit Eintippen (oder copy and paste) in das Projekt.
Da weiß man, welche Entwicklungsumgebung man verwendet, eine Prüfung
zur Laufzeit wird eigentlich nicht benötigt.

Daß das bei VBA anders ist, ist klar, aber da ist die Prüfung ja auch
kein Problem.

Gruß Rainer

Hallo Reinhard,

ja, ich schon und wenn ich aus meinem Vb-Code eine Exe mache
ist es der auch egal ob überhaupt und wenn ja welches VB auf
einem anderen Rechner ist *annehm*

Richtig. Zum ausführen der Exe Datei muss nicht einmal VB installiert sein. Es reicht aus wenn du die nötigen Dynamic Link Librarys auslieferst und auf dem Zielrechner registrierst :wink:

In VBA gibt es die feste vorgebene Konstante VBA60, die man
mit

Nun,zurück zu VB, angenommen du schreibst ein Buch zu VB5 und
6, und alle deine Codes sollen in beiden Versionen
funktionieren, so mußt du ja auch abprüfen ob Vb5 oder Vb6
vorliegt, um dann ggfs. in Vb5 fehlende Funktionen bedingt
nachzukompilieren.

Jein, ersten liefere ich niemals einen source Code aus und zweitens, würde ich dann einfach ein Modul anlegen und dort die nötigen Subs reintütteln alla FAQ:2906 ( somal die schneller sind *g) und dann darauf zugreifen und max. ein Hinweis im Program setzen das man bei Version 6.0 auf die Function verzichten kann und da die Standard Prozedure verwenden kann. :smile:

Wie also stelle ich fest welche Version vorliegt?

Puh, adhock wüsste ich keine Lösung. Aber muesste ich das realisieren so würde ich als Anlaufpunkt die Registry wählen und da nachschauen. Dort findest du sicher die Info :wink:
Auf die schnelle gesehen unter
HKEY_LOCAL_MACHINE -> Microsoft -> Visual Basic
Dort steht als Schluessel die Version
Sprich bei mir einmal 5.0 und einmal 6.0 und bei einer Version steht dann der Key „InstallDir“.
Diesen kannst du ja auslesen und schwups, weisst du die Version :wink:

Wenn mein Vb5 Lernen in dem Tempo weitergeht kann ich dir das
locker beantworten, so in 3 jahren :smile:))

Warum lernst du nicht gleich .NET?

MfG Alex