HERBERS Excel-Forum - das Archiv

Thema: Gleiches Makro für Word und Excel

Gleiches Makro für Word und Excel
Peter
Hallo zusammen
Ich habe verschiedene Hilfsmakros, die ich gerne in Word und Excel einsetzen würde. Doch wie mache ich das, wenn der Code unterschiedlich ist.
siehe Beispiel:

Sub ySu_Word_Excel_prüfen()
Select Case Application.Name
Case "Microsoft Excel":
MsgBox "Fall Excel" & vbLf & ActiveWorkbook.Name
Case "Microsoft Word"
MsgBox "Fall Word" & vbLf & ActiveDocument.Name
End Select
End Sub

In Excel gibt es Fehler (Variable nicht definiert) wegen ActiveDocument.Name in Word wegen ActiveWorkbook.Name, obwohl beide gar nie eintreffen können.
Gibt es da einen Trick.
mfg Pepi
AW: Gleiches Makro für Word und Excel
GerdL
Hallo Pepi!
Sub ySu_Word_Excel_prüfen()

Select Case Application.Name
Case "Microsoft Excel"
MsgBox "Fall Excel" & vbLf & ActiveWindow.Caption
Case "Microsoft Word"
MsgBox "Fall Word" & vbLf & ActiveWindow.Caption
End Select
End Sub

Gruß Gerd
AW: Gleiches Makro für Word und Excel
Peter
Vielen Dank Gerd
Das ist schon mal supper Gerd - den Dateinamen brauche ich ab und zu.
Trotzdem war der Codeschnipsel eher als Beispiel gedacht.
Kürzlich wollte ich einen Wert Abrunden, das funktioniert auch nicht gleich in Excel und Word, ich fand eine Lösung (jonglieren - haha)

Gibt es eine Möglichkeit, dieses Thema grundsätzlich anzugehen oder muss man von Fall zu Fall eine Lösung finden.

lg Pepi
AW: Gleiches Makro für Word und Excel
schauan
Hallöchen,

Gibt es eine Möglichkeit, dieses Thema grundsätzlich anzugehen oder muss man von Fall zu Fall eine Lösung finden.

Läuft denn bei Dir der Ansatz mit dem #If nicht? Hier mal lauffähig korrigiert

Sub tester()

#If appExcel Then
MsgBox "Fall Excel" & vbLf & ActiveWorkbook.Name
#ElseIf appExcel = 0 Then
MsgBox "Fall Word" & vbLf & ActiveDocument.Name
#End If
End Sub


Zusatzinfo: Gehe in die "Eigenschaften von VBA-Projekt der Datei" und trage bei "Argumente für bedingte Kompilierung
appExcel = 1
ein.

In Word trägst Du bei "Eigenschaften von Projekt" der Datei
appExcel = 0
ein, wobei wenn man statt #ElseIf appExcel = 0 Then nur #Else nimmt, in Word kein Eintrag erforderlich ist.

Du müsstest bei jedem Codeteil, der zwischen Word und Excel unterschiedlich ist, mit diesem #If ... arbeiten.
AW: Gleiches Makro für Word und Excel
Luschi
Hallo schauan,

solche Überlegungen 'Gleiches Makro für Word und Excel' verlieren doch an Bedeutung, sobald man auf die applikationseigenen Objekte/Ereignisse zugreifen muß:
da sind doch Excel-Vba & Word-Vba wie Hund & Katze und das Chaos ist vorprogrammiert!

Gruß von Luschi
aus klein-Paris
AW: Gleiches Makro für Word und Excel
Peter
Hallo zusammen
das ist ja grossartig, was ihr da für mich zusammengetragen habt.
schauan's Idee und Erklärungen mit der bedingten Abfrage, ist genau was ich gesucht habe und es klappt auch hervorragend.
Es sind kleine Hilfsprogramme, die ich gerne in Word und Excel benutze - mir wäre auch lieber Word und Excel wären weniger "Hund" und "Katze" - smile!

Es besteht also keine Grund zur Sorge wegen Chaos.

Allen übrigen ebenfalls herzlichen Dank für ihr Vorschläge.
Pepi
AW: Gleiches Makro für Word und Excel
schauan
Hallo Luschi,

das ist Peter's Ansinnen, nicht meins ;-)
AW: Gleiches Makro für Word und Excel
schauan
Hallöchen,

schaue Dir mal die bedingten If - statt select case - an.

#If Application.Name = "Microsoft Excel" Then
MsgBox "Fall Excel" & vbLf & ActiveWorkbook.Name
#ElseIf Application.Name = "Microsoft Word" 'wobe hier keine Prüfung erforderlich ist ...
MsgBox "Fall Word" & vbLf & ActiveDocument.Name
#End If
AW: Gleiches Makro für Word und Excel
velo
Hi,

ein weiterer Workaround wäre den Code in das Klassenmodul (also ThisDocument, bzw. DieseArbeitsmappe) zu schreiben und das ganze dann über Me zu steuern.
Sprich:
Sub ySu_Word_Excel_prüfen()

Select Case Application.Name
Case "Microsoft Excel":
MsgBox "Fall Excel" & vbLf & Me.Name
Case "Microsoft Word"
MsgBox "Fall Word" & vbLf & Me.Name
End Select
End Sub


VG
velo