CustomUI: Unterschied zwischen den Versionen

Aus Thomas Wiki
Zur Navigation springen Zur Suche springen
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 33: Zeile 33:
   
   
  TMP=$(mktemp -d)
  TMP=$(mktemp -d)
  unzip <datei> -d $TMP
  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:
Zum Beispiel mit:


  cp .rels{,.tmp} ; cat .rels.tmp | sed 's#>#>\n#g;' | sed '/<Relationships/ a <Relationship Id="ourId1" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml"/>' >.rels
  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 88: Zeile 89:
  CUR=$PWD
  CUR=$PWD
  pushd $TMP
  pushd $TMP
  zip -urp $CUR/Leer2.xlsm *
  zip -ur $CUR/Leer-neu.xlsm *
  popd
  popd



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:

  1. Quick Access Toolbar Customizations Part
  2. 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:

  1. _rels/.rels
  2. 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

Links

[MS-CUSTOMUI]: Custom UI XML Markup Specification