Word 2013 VBA: Makro aus einer anderen Datei aufrufen

  • #1
K

Klexy_16

Mitglied
Themenersteller
Dabei seit
16.06.2014
Beiträge
6
Reaktionspunkte
0
Moin!

Ich hab 2 Dateien geöffnet. In einer hab ich ein Textfeld. Das Textfeld ist markiert. Ich will es transparent und mit fettem rotem Rand haben.
In der Normal.dot steht folgendes und wird mit einem Button in der Symbolleiste aufgerufen:

Sub Normal_Rahmen_rot_Fläche_transparent()
Application.Run §Rahmen_rot_Fläche_transparent§
End Sub

Anführungszeichen hab ich durch Paragraphenzeichen ersetzt, weil Anführungszeichen hier im Forum nicht dargestellt werden - warum auch immer.


In der anderen Datei (kann eine dot oder eine doc-Datei sein - ist mir egal) ist das eigentliche Makro hinterlegt, das mit Application.Run angesprochen werden soll:

Sub Rahmen_rot_Fläche_transparent()
Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 1.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 0, 0)
End Sub



Funktioniert aber nicht.

Warum der ganze Zinnober?
Jeder in der Firma hat die Aufrufe in seiner lokalen Normal.dot. Wenn ich das hinterlegte Makro ändern will, muss ich an allen Rechnern die Normal.dot austauschen und das ist lästig. Also wird das eigentliche Makro in eine Datei aufs Netzlaufwerk gelegt und kann dort zentral und für alle geändert werden. Die Zentraldatei wird dann von jedem Makro erst aufgerufen und danach wieder geschlossen. Das hab ich jetzt nicht dargestellt, denn das funktioniert einwandfrei. Nur der Application.Run-Aufruf nicht.

In Excel mach ich das genauso und hab keine Probleme damit.
Jemand einen Tip? Google lässt mich hängen.
 
Zuletzt bearbeitet:
  • #2
Ergänzung:
Wenn das eigentliche Makro in einer dot-Datei ist, die im Startup-Ordner ist (C:\Users\username\AppData\Roaming\Microsoft\Word\Startup\), dann funktioniert es. Allerdings kann ich dann das Makro-Modul nicht im VBA-Editor bearbeiten, weil "Projekt gesperrt". Außerdem ist das nicht in meinem Sinn, weil diese Datei ja auch lokal gespeichert ist.
Wenn ich den Ort dieses Startup-Ordners auf einen Ort im Netzlaufwerk ändere, funktioniert der Zugriff aufs eigentliche Makro nicht mehr. Allerdings kann ich dann das Makro-Modul im VBA-Editor aufrufen und bearbeiten.

Ich kann leider nicht feststellen, ob diese Unarten speziell an Office 2013 liegen, denn 2007 und 2010 sind hier abgeschafft. In 2013 geht aber einiges nicht mehr, was früher gegangen ist, abgesehen von den anderen Handlings-Katastrophen, die eingebaut wurden.
 
  • #4
Es wurde gelöscht. In der Tat.
Beim ms-office-forum.net hab ich auch gepostet und hab dort eine Lösung, die ich jetzt auch hier einstelle, damit der Thread nicht offen bleibt. Das Forum Office-Lösungen, das du gestern vorgeschlagen hattest, ist auch seit April quasi tot, genau wie dieses hier, das als Wintotal-Forum einst Premium war.


Lösung:
_______________________________________________________________

Mein Problem war, dass ich den Startup-Ordner an der falschen Stelle verschieben wollte. Ich wollte ihn nämlich nicht lokal haben, sondern am Netzlaufwerk.
Korrekte Vorgehensweise: Datei > Optionen > Erweitert > Abschnitt Allgemein > Dateispeicherorte: dort den Standardpfad zum STARTUP-Ordner ändern. Ob man den Pfad dann unbedingt auch in Datei > Optionen > Trustcenter > vertrauenswürdige Speicherorte umstellen muss, weiß ich nicht.
In den Startup-Ordner lege ich eine Startup.dot, in der die eigentlichen Makros hinterlegt sind. Die wird dann beim Aufruf von Word zusätzlich zur Normal.dot im Hintergrund geladen und alle darin enthaltenen Makros stehen dem Nutzer zur Verfügung.

Wie gesagt, werden die Anführungszeichen in meinem Beispiel durch Paragraphen-Zeichen ersetzt, weil dieses Forum Anführungszeichen löscht.
1. In die lokale Normal.dot kommt folgendes Makro:
Sub Normal_Rahmen_rot_Fläche_transparent()
Application.Run §Rahmen_rot_Fläche_transparent§
End Sub


2. In die Startup.dot kommt folgendes Makro (das einer Form oder einem Textfeld oder einem Bild einen roten Rand verpasst):
Sub Rahmen_rot_Fläche_transparent()
Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 1.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 0, 0)
End Sub


3. Der Startup-Pfad kann ins Netzlaufwerk verlegt werden. Jetzt hat jeder in seiner Normal.dot nur noch einen Trigger und der Herr der Makros kann sich in den eigentlichen Makros verlustieren, sooft er es für nötig hält - und er hält es oft für nötig, denn immer wieder müssen Sonderfälle umfahren werden oder neue Features eingebaut werden.
Dazu muss die Startup.dot aber mit rechtem Mausklick schreibgeschützt werden, sonst muss der Herr der Makros immer demjenigen hinterherlaufen, der in der Früh zuerst Word geöffnet hat.

Theoretisch könnte man auch ohne diesen lokalen Trigger arbeiten, aber das hat bei mir andere Gründe.
Was anscheinend nicht geht, ist, ein Makro in einer beliebigen anderen (geöffneten) Word-Datei anzusprechen.
 
Zuletzt bearbeitet:
  • #5
Wir hatte nein technisches Problem und mussten die Datenbank vom Tag davor einspielen, wobei auch leider die Beiträge dran glauben mussten! :(
 
Thema:

Word 2013 VBA: Makro aus einer anderen Datei aufrufen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben