Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
340to344
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
340to344
340to344
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Word installiert / welche Version ?

Word installiert / welche Version ?
26.11.2003 18:27:56
Roland Hochhäuser
Hallo Excelspezialisten,

ich möchte im Workbook_Open-Ereignis prüfen,

- ob MS Word auf dem Rechner installiert ist und
- wenn ja in welcher Version.

Das Ergebnis (nicht, 7, 8, usw.) möchte ich in eine öffentliche Variablen schreiben, damit auch andere Makros darauf zugreifen können.

Ich finde einfach den Dreh nicht, wie man z.B. Application.Version so "umfunktionieren" kann, dass statt der Excel- die Wordversion angezeigt wird.

Hat vielleicht jemand den passenden Einstieg parat?

Viele Grüße aus Berlin
Roland Hochhäuser

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Word installiert / welche Version ?
26.11.2003 18:45:56
OttoH
Hallo Roland,

mit folgendem Dreh kannst Du ermitteln, ob Word installiert ist:


Sub xxx()
On Error GoTo Fehler
Application.ActivateMicrosoftApp xlMicrosoftWord
MsgBox ("Word ist installiert")
Exit Sub
Fehler:
MsgBox ("Word ist nicht installiert")
End Sub



Die Version habe ich auch nicht herausbekommen.

Gruß OttoH
AW: Word installiert / welche Version ?
26.11.2003 20:04:38
Nepumuk
Hallo Roland,
für "VBA nur mit Recorder" hast du dir aber viel vorgenommen.


Option Explicit
Public Sub Word()
Dim myVBEObject As Object, intIndex As Integer
On Error Resume Next
Set myVBEObject = Application.VBE.ActiveVBProject.References
For intIndex = 8 To 15 'Version 8 bis 15 (für die Zukunft gleich vorbauen)
myVBEObject.AddFromFile "MSWORD" & CStr(intIndex) & ".OLB"
Next
For intIndex = 1 To myVBEObject.Count
If myVBEObject.Item(intIndex).Name = "Word" Then
MsgBox "Word " & CStr(Val(Mid(Right(myVBEObject.Item(intIndex).FullPath, InStr(1, StrReverse(myVBEObject.Item(intIndex).FullPath), "\") - 1), 7))) & " ist installiert.", 64, "Information"
Exit Sub
End If
Next
MsgBox "Word ist nicht installiert.", 48, "Hinweis"
End Sub



Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk
Anzeige
AW: Word installiert / welche Version ?
26.11.2003 23:02:34
Roland Hochhäuser
Hallo und Vielen Dank, dass Ihr Euch Gedanken gemacht habt.

Ich habe jetzt unter Excel/Word 97 (Win98), Excel/Word XP (Win2000) und Excel/Word2003 (WinXP) beide Makros mal getestet.

OttoH, zu deiner Version:

sie läuft bei allen Systemen fehlerfrei durch, startet aber immer zusätzlich die Anwendung Word. Das möchte ich nach Möglichkeit vermeiden.

Nepumuk, zu Deiner Version:

Excel 97 meckert beim Kompilieren in Zeile 9 StrReverse an und will dies nicht kennen. Kennst Du dafür eine Excel97-kompatible Variante?

Bei Excel 200(3) scheint mir Zeile 7 nicht richtig zu funktionieren. In der vorangegangenen For-Next-Schleife wird die Variable intIndex von 8 bis 15 hochgezählt, zählt aber dann in der nächsten For-Next-Schleife von 1 bis 7. Excel meint dann, "Word ist nicht installiert." Durch

For intIndex = 8 To myVBEObject.Count + 7

meine ich das noch in den Griff zu bekommen.

Aber ich bekomme ums Verrecken nicht die lange Messagebox angezeigt. Im Einzelschritt wird sie im Code genau dann richtig gelb unterlegt, wenn der nun passende intIndex hochgezählt ist. Bei mir wird sie nur dann tatsächlich am Bildschirm angezeigt, wenn ich deinen Code radikal verkürze, also z.B.auf

MsgBox "Word "

Genau so sieht es aus, wenn ich das Direktfenster nehme oder den Inhalt der Messagebox in eine Zelle schreiben will.

Wärst Du so nett und schaust Dir Deinen Code noch mal an? Gerade in dem Code der Messagebox vermute ich die Informationen, die ich mir vom Makro erhoffe.

Vielleicht ist es auch was ganz banales: Als Verweise habe ich nur jeweils VBA, OLE Automation und die passende Excel und Office Object Library aktiviert. Kann es daran liegen?

Eine gute Nacht aus Berlin
Roland Hochhäuser

Last but not least: VBA nur mit Rekorder stimmt nicht. Andererseits bin ich kein VBA-Profi und VBA (wirklich) gut: ? eher nicht.
Anzeige
AW: Word installiert / welche Version ?
26.11.2003 23:20:36
Nepumuk
Hallo Roland,
den Fehler von XP kann ich Morgen mal versuchen raus zu bekommen. Aber du kannst mal das neue Programm versuchen. Das sollte zumindest in 97 schon laufen. Auf 2000 so wie so und bei XP und 2003 eine Fehlermeldung ausgeben. Das: For intIndex = 8 To myVBEObject.Count + 7 kann nicht funktionieren, da ich die Verweise durchzähle und die fangen bei 1 an. Die erste Schleife soll nur nach der OLB-Version die verfügbar ist suchen.


Option Explicit
Public Sub Word()
Dim myVBEObject As Object, intIndex As Integer, intRev As Integer, strPath As String
On Error Resume Next
Set myVBEObject = Application.VBE.ActiveVBProject.References
For intIndex = 8 To 15 'Version 8 bis 15 (für die Zukunft gleich vorbauen)
myVBEObject.AddFromFile "MSWORD" & CStr(intIndex) & ".OLB"
Next
On Error GoTo 0
For intIndex = 1 To myVBEObject.Count
If myVBEObject.Item(intIndex).Name = "Word" Then
For intRev = Len(myVBEObject.Item(intIndex).FullPath) To 1 Step -1
strPath = strPath & Mid(myVBEObject.Item(intIndex).FullPath, intRev, 1)
Next
MsgBox "Word " & CStr(Val(Mid(Right(myVBEObject.Item(intIndex).FullPath, InStr(1, strPath, "\") - 1), 7))) & " ist installiert.", 64, "Information"
Exit Sub
End If
Next
MsgBox "Word ist nicht installiert.", 48, "Hinweis"
End Sub



Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk
Anzeige
AW: Word installiert / welche Version ?
26.11.2003 23:53:22
Roland Hochhäuser
Hallo Nepumuk,

hier mein "Zwischenstand"

Excel 97/Win98: perfekt :-)

Excel 2000/Win2000: In der Zeile For intIndex = 1 To myVBEObject.Count steht der intIndex auf 16 und es kommt der Laufzeitfehler 91 (Objekt oder With-Variable nicht festgelegt)

Excel 2003/WinXP: wie Excel 2000, aber der intIndex beginnt in der nächsten Zeile bei 1, zählt bis 4 hoch und das Makro endet dann mit der MsgBox "Word ist nicht installiert."

Ich bin jetzt platt, friere im Schlafanzug vor dem Rechner und gehe nun wirklich in die Falle.

Gute Nacht
Roland Hochhäuser
Anzeige
AW: Word installiert / welche Version ?
26.11.2003 23:02:41
Reinhard
Hallo Roland,
um Nepumuks Codeschnitzel zu verstehen brauch ich lange Zeit *annehm*, abgesehen von der 48 bei der MsgBox die ich irgendwie als Schreibfehler einsortiere :-)
Andrerseits, auf meinem Rechner ist Word97 und Word2000, und wenn ich mich mal aufraffe (bzw. wenn ich die größere Festplatte kriege, 40GB, bin ja bescheiden) mit verschiedenen Betriebssystemen (win98, XP) zu arbeiten habe ich dann auch noch WordXP, was also bringt dir die Info welche Word-Version installiert ist? Nix, weil du weisst ja nicht welche Word-Version ich überhaupt bzw. hauptsächlich benutze.
Okay, meine Auskunft, an sich keine, da ich nur 20 Briefe im Jahr schreibe ist nicht wirklich hilfreich.
Aber, schau mal bei http://mypage.bluewin.ch/reprobst/WordFAQ/DokEigen.htm
dort steht wie man die Version herausbekommt, mit der eine .doc erstellt wurde.
Von daher mein Tipp, erst prüfen welche Word-Versionen installiert sind. Falls mehrere, dann alle *.doc's checken mit welcher Version.
Nur so als Gedanke.
Gruß
Reinhard
Anzeige
AW: Word installiert / welche Version ?
26.11.2003 23:15:57
Roland Hochhäuser
Hallo Reinhard,

die 48 bei der Messagebox bedeutet xlExclamation und ist das Ausrufezeichen in der Box. Das habe sogar ich noch verstanden, den Rest weniger :-)

Mir geht es hauptsächlich darum festzustellen, ob Word überhaupt installiert ist. Eine Excel-Anwendung, an der ich gerade herumbastele, soll auch Worddokumente produzieren können; entsprechende Punkte sind in meiner selbstgestrickten Symbolleiste dafür vorgesehen. Diese Menüpunkte könnte ich "eingrauen", so dass sie bei fehlendem Word erst gar nicht vom Anwender angewählt werden können. Daher die Abfrage aus Excel, ob Word vorhanden oder nicht.

Der Rest (welche Wordversion genau) ist mir im Moment nicht so wichtig, wäre aber nützlich zu wissen, um Versionunterschiede im Word-Macrocode (neben passender Verweiserstellung) programmieren zu können.

Eine Gute Nacht aus Berlin
Roland Hochhäuser
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige