CustomUI: Unterschied zwischen den Versionen
Thomas (Diskussion | Beiträge) |
Thomas (Diskussion | Beiträge) |
||
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 33: | Zeile 33: | ||
TMP=$(mktemp -d) | TMP=$(mktemp -d) | ||
unzip | unzip Leer.xlsm -d $TMP | ||
== _rels/.rels === | == _rels/.rels === | ||
Zeile 53: | Zeile 53: | ||
<Relationship Id="ourId1" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml"/> | <Relationship Id="ourId1" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml"/> | ||
Wo wir den Eintrag zwischen ''<relationships ...'' und ''</relationships>'' einfügen ist unwichtig. Wichtig ist nur eine eindeutige id. | Wo wir den Eintrag zwischen ''<relationships ...'' und ''</relationships>'' einfügen ist unwichtig. Wichtig ist nur eine eindeutige '''id'''. | ||
Zum Beispiel mit: | |||
cp $TMP/_rels/.rels{,.tmp} ; sed 's#>#>\n#g;' $TMP/_rels/.rels.tmp | sed '/<Relationships/ a <Relationship Id="ourId1" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml"/>' >$TMP/_rels/.rels | |||
rm $TMP/_rels/.rels.tmp | |||
== customUI/ustomUI.xml == | == customUI/ustomUI.xml == | ||
Zeile 65: | Zeile 70: | ||
<ribbon> | <ribbon> | ||
<tabs> | <tabs> | ||
<tab id=" | <tab id="ourtab1" label="World"> | ||
<group id=" | <group id="ourgroup1" label="Say"> | ||
<button id=" | <button id="ourbtn1" visible="true" size="large" label="Say Hello" imageMso="HappyFace" onAction="HelloWorld" | ||
screentip=" | screentip="Sag Hallo" | ||
supertip=" | supertip="Sag Hallo zur Welt." | ||
/> | /> | ||
</group> | </group> | ||
Zeile 82: | Zeile 87: | ||
Gepackt wir die Datei unter Linux mit | Gepackt wir die Datei unter Linux mit | ||
CUR=$PWD | |||
pushd $TMP | |||
zip -ur $CUR/Leer-neu.xlsm * | |||
popd | |||
== Links == | == Links == | ||
[https://msdn.microsoft.com/en-us/library/cc313070(v=office.12).aspx [MS-CUSTOMUI]: Custom UI XML Markup Specification] | [https://msdn.microsoft.com/en-us/library/cc313070(v=office.12).aspx [MS-CUSTOMUI]: Custom UI XML Markup Specification] |
Aktuelle Version vom 16. Dezember 2018, 01:45 Uhr
Ein custom-UI-Dokument enthält Anpassungen des User Interface (UI) einer Anwendung. Siehe.
User Interface
Das UI besteht aus zwei Teilen:
- Quick Access Toolbar Customizations Part
- Ribbon Extensibility Part (Menüband)
Hier wird nur die Erweiterung des Menübandes ab Microisoft Office 2007 um einen eigenen Tabulator, mit Gruppen und Schaltknöpfen (Buttons) zum Aufruf von Befehlen beschrieben werden.
Ein Editor für das Menüband ist nicht im Office Paket enthalten. Allerdings gibt es freie Ribbon Editoren wie zum Beispiel: RibbonX Visual Designer 2010 Wird die Software vom Arbeitgeber vorgeschrieben und ist die Installation anderer Software durch den Nutzer nicht erlaubt, helfen ein Packprogramm für Zip-Dateien (z.B. 7z) und ein Text_Editor (z.B. notepad).
Mit Hilfe eines Pack-Programms (z.B. 7z) und eines Text-Editors (Notepad) lassen sich die MS-Office-Dokument per Hand modifizieren.
Ein Dokument (.docx, .xlsx, .pttx) besteht - wie ein OpenOffice- oder LibreOffice-Dokument - aus mehreren gezippten Dateien.
Nun macht ein eigenes Ribbon in der Applikation ohne eigene Makros wenig Spaß. Deshalb sollte die Datei als Anwendung mit Makros (.docm, .xlsm, .pttm) gespeichert werden.
Um das Menüband zu erweitern müssen wir die Datei zuerst entpacken, dann fügen wir fehlende Verzeichnisse und Dateien hinzu oder ergänzen / passen Einträge an. Zum Schluss packen wir alles wieder in eine Datei. ( Mit 7z lassen sich diese Schritte auch direkt im gepackten MS-Office-Dokument vornehmen.
Klingt schwierig, ist aber ganz einfach. Um die Menüleiste um einen Eintrag zu erweitern müssen wir eine Dateien anpassen und eine Datei hinzufügen bzw. ergänzen.
Folgende zwei Dateien sind für uns von Interesse:
- _rels/.rels
- customUI/ustomUI.xml
Entpacken
Das ich mehr auf Linux stehe als auf Windows entpacke ich die Datei auf der Konsole.
TMP=$(mktemp -d) unzip Leer.xlsm -d $TMP
_rels/.rels =
Die Datei .rels im Ordner _rels ist immer vorhanden. Im Falle eines minimalen Excel-Dokumentes sieht die Datei (ergänzt um Zeilenumbrüche) wie folgt aus.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/> <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/> <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/> </Relationships>
Diese Datei erweitern wir folgende Zeile / folgenden Eintrag:
<Relationship Id="ourId1" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml"/>
Wo wir den Eintrag zwischen <relationships ... und </relationships> einfügen ist unwichtig. Wichtig ist nur eine eindeutige id.
Zum Beispiel mit:
cp $TMP/_rels/.rels{,.tmp} ; sed 's#>#>\n#g;' $TMP/_rels/.rels.tmp | sed '/<Relationships/ a <Relationship Id="ourId1" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml"/>' >$TMP/_rels/.rels rm $TMP/_rels/.rels.tmp
customUI/ustomUI.xml
In einem minimalen Dokument existiert das Verzeichnis und die Datei nicht.
Wir müssen daher Verzeichnis und Datei per Hand anlegen. Hier ein minimale Version für unseren Zweck.
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="ourtab1" label="World"> <group id="ourgroup1" label="Say"> <button id="ourbtn1" visible="true" size="large" label="Say Hello" imageMso="HappyFace" onAction="HelloWorld" screentip="Sag Hallo" supertip="Sag Hallo zur Welt." /> </group> </tab> </tabs> </ribbon> </customUI>
Packen
Gepackt wir die Datei unter Linux mit
CUR=$PWD pushd $TMP zip -ur $CUR/Leer-neu.xlsm * popd