joni2000de
Goto Top

Symbolleiste bei Serienbrief entfernen

Hi Admins,

ich habe bei einem Word 2010 Serienbrief eine Symbolleiste erstellt (xml und vba Teil) die eingeblendet wird wenn die Serienbriefdatei geöffnet wird. Wenn jetzt der Seriendruck in neue Dateien ausgeführt wird (makrogesteuert pro Datensatz ein eigenes Dokument), dann wird der xml-Teil der Symbolleiste an das neue Dokument mit übertragen, der vba-Teil aber nicht. Dies verursacht beim Öffnen des Seriendruckergebnisses immer eine Fehlermeldung von Word, dass das zum xml-Code gehörige Makro nicht gefunden werden kann. Kennt jemand eine Möglichkeit, dass auch der xml-Teil der Symbolleiste nicht an das Seriendruckergebnis übertragen wird. Ich hätte am liebsten, dass man beim Ergebnis nichts vom Makro und der Symbolleiste sieht.

Meine bisherigen Recherchen waren leider erfolglos. Danke für eure Hilfe!

Gruß Joni

Content-ID: 184363

Url: https://administrator.de/contentid/184363

Ausgedruckt am: 05.11.2024 um 16:11 Uhr

NetWolf
NetWolf 02.05.2012 um 15:56:08 Uhr
Goto Top
Moin Moin,

ich habe bei einem Word 2010 Serienbrief eine Symbolleiste erstellt (xml und vba Teil) die eingeblendet wird wenn die Serienbriefdatei geöffnet wird.
ok, so wie ich das hier sehen kann ist das ein toller Code.

Wenn jetzt der Seriendruck in neue Dateien ausgeführt wird (makrogesteuert pro Datensatz ein eigenes Dokument),
warum? das ist doch eine Standardfunktion vom Serienbrief.

dann wird der xml-Teil der Symbolleiste an das neue Dokument mit übertragen, der vba-Teil aber nicht.
ok, mag sein!? So wie ich das hier sehen kann ist das ein toller Code.

Dies verursacht beim Öffnen des Seriendruckergebnisses immer eine Fehlermeldung von Word, dass das zum xml-Code gehörige
Makro nicht gefunden werden kann.
logisch, wenn was fehlt

Kennt jemand eine Möglichkeit, dass auch der xml-Teil der Symbolleiste nicht an das Seriendruckergebnis übertragen wird. Ich hätte am liebsten, dass man beim Ergebnis nichts vom Makro und der Symbolleiste sieht.
ok, du hast einen Code der das z.Z. nicht bietet.
Lösung: programmiere diesen Code so um, dass weder die Symbolleiste, noch das Makro, Probleme bereiten.

Meine bisherigen Recherchen waren leider erfolglos.
klar, wer den Code den du da erstellt hast nicht kennt, wird auch wenig dazu sagen können. Woher soll man wissen, was du wann, wo, wie programmiert hast?

Grüße aus Rostock
Wolfgang
(Netwolf)
joni2000de
joni2000de 02.05.2012 um 16:09:41 Uhr
Goto Top
Hi Wolfgang,
hab schon kapiert.

XML
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="onload">  
	<ribbon startFromScratch="false">  
		<tabs>
			<tab id="tab01" label="Ausführen">  
				<group id="grp01" label="Start" >  
					<button id="tgb01" label="Start" imageMso="MacroPlay"   
						onAction="Button1_onAction"   
						size="large"/>  
				</group>
			</tab>
		</tabs>
	</ribbon>
</customUI> 

VBA in einem Modul
Option Private Module
Public objRibbon As IRibbonUI
Public Sub onload(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub
Sub Button1_OnAction(control As IRibbonControl)

Call Ausführen

End Sub

Der Code unter "Ausführen" tut nichts zur Sache, kann aber etwas mehr als nur einzelne Dateien erzeugen face-wink

Gruß Joni
NetWolf
NetWolf 02.05.2012 um 21:29:23 Uhr
Goto Top
Moin Moin,

ok, mit der XML fügst du dem Ribbon beim Landen des Dokuments lediglich einen Button hinzu.

Dein Code "onload" wird beim Laden ausgeführt, ohne Prüfung, welche Datei du startest. Wenn es z.B. ein Vorlage sein sollte, oder einen bestimmten Namen haben sollte, könnte man dies als Kriterium nutzen, um zu bestimmen, ob der Code ausgeführt werden soll oder nicht.

Ein "Unload" gibt es anscheinend nicht, dass beim Schließen des Dokumentes die Ribbon-Erweiterung wieder entfernt.

Die Erweiterung des Ribbons zur Laufzeit wird dann in der Normal.dotx gespeichert und steht somit allen weiteren auf Normal.dotx basierenden Dokumenten zur Verfügung.
So könnte die Ribbon-Erweiterung in deine neuen Dokumente kommen. Das kannst du ja mal testen, in dem du eine spezielle "xNormal.dotx" nur für dieses eine Dokument erstellst und es damit testest.

Nunja, der Code "Ausführen" wäre schon wichtig, da dieser ja die einzelnen Dokumente erzeugt. Was er sonst noch alles kann ist dabei nicht relevant, solange es nichts mit der Erstellung der neuen Dateien zu tun hat.

Grüße aus Rostock
Wolfgang
(Netwolf)
joni2000de
joni2000de 11.09.2012 um 19:49:37 Uhr
Goto Top
Hi,
spät aber doch habe ich das Problem gelöst. Ich erzeuge jetzt im fertigen Serienbrief den Code, den die Symbolleiste sucht (Dummycode). Das Makro aus der Vorlage trägt im Ergebnis das Makro ein. Somit ist der Code beim Öffnen vorhanden und Word meldet keinen Fehler. Anders herum wäre zwar schöner, aber was solls.

Sub Modul_anlegen()

Dim m As Object
Dim strCode As String

Set m = Application.VBE.ActiveVBProject.VBComponents.Add(1)
m.Name = "Symbolleiste"  

strCode = "Option Private Module" & vbLf & _  
    "Public objRibbon As IRibbonUI" & vbLf & _  
    "Public Sub onload(ribbon As IRibbonUI)" & vbLf & _  
    "Set objRibbon = ribbon" & vbLf & _  
    "End Sub" & vbLf & _  
    "Sub Button1_OnAction(control As IRibbonControl)" & vbLf & _  
    "Msgbox ""Kein Makro vorhanden""" & vbLf & _  
    "End Sub"  

m.CodeModule.AddFromString strCode

End Sub

Gruß Joni