PDA

Vollständige Version anzeigen : Abfrage


wanderratte
28.04.2009, 12:23
Hallo.

ich möchte gerne mit Visual Basic eine Programmierung schaffen welche es mir ermöglich zu unterscheiden ob der User ein 64er oder 32er Bit-System nutzt.
Beispiel:
User A hat ein 32er System
Durch das drücken eines Buttons läuft die Abfrage: 32er oder 64er System. Das Ergebnis soll dann direkt dazu genutzt werden einen Befehl auszuführen..


=) Ich benötige dieses Programm da halt nich alle den selben Pfad haben

mfg und danke im vorraus

max

NoNet
28.04.2009, 12:38
Hallo Wanderratte (wohin geht denn die Reise ;-) ? ),

ich könnte Dir 2 Versionen anbieten, die OS-Version zu ermitteln :

Variante 1 (etwas veraltet, da zumindest bis Excel 2003 nur 16/32-Bit unterschieden werden) : Per Compiler-Anweisungen :

#If Win16 Then
Const strOS = "16 bit"
#ElseIf Win32 Then
Const strOS = "32 Bit"
#End If

Sub BetriebsystemErmitteln1()
MsgBox strOS
End Sub
Beachte, dass die Compiler-Anweisungen (#IF... bis #END IF) ganz zu Beginn des Moduls stehen müssen !

Variante 2 : Per Excel-Tabellenfunktion =INFO("SysVersion") - hier in VBA eingebunden :
Sub BetriebsystemErmitteln2()
Dim strOS As String
strOS = [=INFO("Sysversion")]
If InStr(strOS, "32-bit") Then
MsgBox "32 Bit OS"
ElseIf InStr(strOS, "64-bit") Then
MsgBox "64 Bit OS"
Else
MsgBox "unbekannte BITs !"
End If
End Sub

wanderratte
28.04.2009, 12:50
Meine Reise geht hoffentlich in Richtung zufriedenheit, die Excel Tabelle bzw Visual Basic will nämlich nicht=)


Kleine Fragen habe ich dann doch noch an dich ;)

Wenn ich diesen 2ten Code einbinde von dir dann bekomme ich da einen Fehler...Sinn ist es bei meiner Idee das er ein Programm starten soll

Also:
32bit

32bit Version vom Programm

64bit

64bit Version vom Programm

Nun ich habe halt nur den kompletten Code eingefügt...den Button an sich aber nicht verändert. Hoffe du kannst mir da ein wenig genauer beschreiben was genau ich einfügen muss und wo. Bin da nicht so der belesene

mfg
max

wanderratte
28.04.2009, 12:55
Kleiner Hinweis noch:
=EINBETTEN("Forms.CommandButton.1";"")

Der Button ist schon vorhanden..nur soll das ganze halt einfacher werden

NoNet
28.04.2009, 13:13
Hallo Max,

weise dem Button folgenden Code zu :
Private Sub CommandButton1_Click()
Dim strOS As String
strOS = [=INFO("Sysversion")]

If InStr(strOS, "32-bit") Then
'MsgBox "32 Bit OS"
Shell "C:\Programme\Ordner\32-bit.exe"
ElseIf InStr(strOS, "64-bit") Then
'MsgBox "64 Bit OS"
Shell "C:\Program Files\Ordner\64-bit.exe"
Else
MsgBox "unbekannte OS-Version !", vbCritical, "Programm konnte nicht gestartet werden !"
End If
End Sub
Die Pfadnamen der Programme musst Du natürlich anpassen ....:grins:

PS: Gute Reise...:p

wanderratte
28.04.2009, 13:20
mmmh...aber der Befehl geht auch in Excel 2003 bzw VB 6.5?

NoNet
28.04.2009, 13:38
Hallo Wanderratte,

klaro sollte das grundsätzlich unter Excel2003 funktionieren. Die Frage ist nur : Was wird bei einem 64-Bit OS angezeigt ? Das kannst Du in einer Excel-Tabelle unter 64-Bit Windows testen : =INFO("SysVersion")
Beinhaltet diese Zelle nun den Text "64-Bit" ?

Teste den Programmaufruf doch mal mit Notepad :
Shell "C:\windows\notepad.exe", vbNormalFocus

PS : gib Acht, dass Du nicht von Deinem ursprünglichen Weg (VBA und NICHT VB !) abkommst....

wanderratte
28.04.2009, 13:43
Hallo NoNet =)

Folgende Meldung kommt:
"unbekannte OS-Version !"

Habe eine 32er Version

(Auch wenn man mich dafür kickt...was is VBA? Habe hier nur Microsoft Visual Basic..also VB oder? )

NoNet
28.04.2009, 14:02
Hallo Wanderratte,

Du willst mich aber nicht gerade vera<strike>XXXXX</strike>ufdenArmnehmen, oder ?

Du bist hier im EXCEL-Forum, und VBA ist "Visual Basic for Applications" - wobei Applications dann entsprechen die Excel-Anwendung ist !

siehe auch http://de.wikipedia.org/wiki/Visual_Basic_for_Applications und http://de.wikibooks.org/wiki/VBA_in_Excel_-_Grundlagen !!

Gib doch mal in Excel die benannte Funktion ein, was erscheint dann als Ergebnis in der Zelle ?

wanderratte
28.04.2009, 14:07
^^Ne will dich net auf den Arm nehmen!!

So ok VBA ;)

ALLLSO ich habe dir mal meinen code via pn geschickt...hat seine gründe sry =)

ansonsten danke^^

wanderratte
04.05.2009, 06:43
Hallo,
so war nun mal ne Woche studieren ;)

Also ich habe im Button nun
=EINBETTEN("Forms.CommandButton.1";"") drin

Im VB ist nun folgender Code hinterlegt:

Private Sub CommandButton6_Click()

Dim Befehl As String
Dim File_Copy
Dim strOS As String
strOS = [=INFO("Sysversion")]

save_position = ActiveCell.Address ' aktuelle Position merken

If Left(save_position, 2) <> "$C" Then
MsgBox "Bitte Feld ""PC Name"" auswählen", vbCritical, "Send Message"
End
End If

If InStr(strOS, "32-bit") Then
' "32 Bit OS"
FileCopy "C:\.........."
Befehl = "C:\Program Files\...........-c: -h: -m:" & ActiveCell.Value
Ergebnis = Shell(Befehl, vbNormalNoFocus)
ElseIf InStr(strOS, "64-bit") Then
' "64 Bit OS"
FileCopy "C:\..........."
Befehl = "C:\Program Files (x86)\........ -c: -h: -m:" & ActiveCell.Value
Ergebnis = Shell(Befehl, vbNormalNoFocus)
Else
MsgBox "unbekannte OS-Version !", vbCritical, "Programm konnte nicht gestartet werden !"
End If

Range(save_position).Select

End Sub

Funkionieren tut es aber nicht, wird immer nur die 32bit version genommen


PS: ich benötige dringend eine Lösung, ich komme sonst nicht vorran...google spuckt nichts aus =(

wanderratte
04.05.2009, 09:12
Ok,
ich habe nun mit Rücksprache meiner Vorgesetzten eine evtl Lösung bzw anderen Weg "gesucht". Hier nun die Möglichkeiten zu schauen welches System ein User hat:

1)Computernamen sind bei uns so angelegt das man weiß welches System der User hat, also z.B. XX1D und XX3D = 32bit sowie XX164D und XX165D = 64bit.

2)Ein anderer Lösungsansatz wäre evtl zu schauen ob der Pfad C:\Programm Files (x86)\... exestiert, wenn nicht muss es ja ein 32er System sein

Welche der beiden Möglichkeiten wäre die einfache? Kann mir da jemand bei helfen?


Vielen Danke schonmal!