Sahanya

Sonntag, 17. 12. 2006

Makro zeitlich einschränken

Filed under: — Sahanya @ 09:42

Manchmal möchte man ein Makro zeitlich einschränken, also ein Datum angeben ab oder bis wann das Makro aktiviert werden soll, eventuell auch einen bestimmten Zeitraum. Dafür umschließt man die Prozedur einfach mit einer Datumseinschränkung:

Ab einem bestimmten Datum:

StartDatum = #12/31/2006#
If Now() > StartDatum Then
    ...
End If

Bis zu einem bestimmten Datum:

EndDatum= #12/31/2006#
If Now() < EndDatum Then
    ...
End If

Während eines bestimmten Zeitraumes:

StartDatum = #12/1/2006#
EndDatum = #1/1/2007#
If Now() >= StartDatum And Now() < EndDatum Then
    ...
End If

Via ExcelTips

Sonntag, 26. 02. 2006

FaceID

Filed under: — Sahanya @ 15:19

FaceID Viewer

Wer beim Schreiben von Makros seine selbst erstellten Menüleisten mit kleinen Bildchen oder Symbolen aufpeppen möchte, muss dafür auf die sog. FacIDs zurückgreifen. In der einschlägigen Literatur findet man dazu seitenweise Listen. Das Excel-Addin FaceID Viewer von Doug Glancy erleichtert da die Arbeit sehr und hat auch noch die komfortable Funktion, dass die letzten benutzten IDs in einer separaten Liste abgelegt werden, wo man sie dann einfach wiederfinden kann. Zudem kann man sich die IDs auch thematisch auflisten lassen.

Samstag, 24. 12. 2005

Versteckte Zeilen und Spalten

Filed under: — Sahanya @ 12:04

Versteckte bzw. ausgeblendete Zeilen und Spalten in Excel-Dokumenten können, insbesondere nach der Speicherung als Textdatei zu unschönen Ãœberraschungen führen. Oft werden diese Zellen nämlich versteckt, weil ihr Inhalt nicht mehr benötigt wird. Dabei wird entweder die Excel-interne Methode „Ausblenden” benutzt oder aber (alles schon gesehen) Zeilen bzw. Spalten manuell verkleinert, so dass ihr Inhalt nicht mehr sichtbar ist.

Bei umfangreichen Dokumenten, die man nun weiterverarbeiten möchte, können solche Zeilen und Spalten leicht übersehen werden oder aber das Einblenden und anschließende Löschen zu einer Sisyphusarbeit ausarten. Ein VBA-Makro kann diese Arbeit allerdings leicht übernehmen:

Sub versteckte_loeschen()
    Dim r As Range
    For Each r In Rows(1).Cells
        If r.Width < 1 Then r.EntireColumn.Delete
    Next
    For Each r In Columns(1).Cells
        If r.Height < 1 Then r.EntireRow.Delete
    Next
End Sub

Versteckte löschen

Mittwoch, 02. 11. 2005

Index für Excel

Filed under: — Sahanya @ 19:19

Index Gerade bei umfangreichen Excel-Dokumenten kann es schnell passieren, dass man bei einer hohen Anzahl von Tabellenblättern den Ãœberblick verliert. Ein Makro kann da Abhilfe schaffen. Es erstellt ein neues Tabellenblatt mit dem Namen „Index” als erstes Tabellenblatt und listet dort die Namen der anderen Tabellenblätter auf. Diese sind verlinkt, so dass man mit einem Klick auf dem gewünschten Tabellenblatt landet. Auf den einzelnen Tabellenblättern wird ein Link zum Index-Tabellenblatt eingefügt. Hier sollte man allerdings aufpassen, denn dieser wird (hier im Beispiel) in die Zelle „H1” eingefügt und überschreibt somit den ursprünglichen Inhalt. Man sollte dies also evtl. anpassen. Das Makro selbst habe ich bei Lockergnome gefunden und erweitert um die Mitteilung, dass bereits ein Index existiert. Außerdem habe ich das ganze ergänzt um ein Makro, das den Index und sämtliche Links dorthin wieder löscht.

(weiterlesen…)

Samstag, 16. 07. 2005

Leere Zellen

Filed under: — Sahanya @ 14:14

Leere Tabellenzellen in Word

Wenn man in Word viel mit Tabellen arbeitet, bzw. diese bearbeiten muss, kann es manchmal nötig sein alle leeren Zellen zu entfernen. Der Trick dabei ist, dass die leeren Tabellenzellen in Wahrheit überhaupt nicht leer sind, sondern zwei Zeichen beinhalten: Chr(13) und Chr(7). Deswegen muss man dies beim Löschen per VBA berücksichtigen. Ein Makro, das die leeren Zellen der Tabelle löscht, in der sich gerade der Cursor befindet könnte dann so aussehen:

(weiterlesen…)

Sonntag, 05. 06. 2005

Suche/Ersetze nach Abfrage

Filed under: — Sahanya @ 12:11

Fußnoten Aufgabe: In einem Word-Dokument sind verschiedene Fußnoten (keine „echten” Fußnoten, sondern einfacher Text), die unterschiedliche Tags bekommen sollen. Also, die Fußnote 1) soll einen Tag mit der ID f1 bekommen, die Fußnote 2) einen Tag mit der ID f2, die Fußnote * soll den Tag mit der ID f3 bekommen usw. Dies kann durch einen simplen Suche/Ersetze-Vorgang in Word erreicht werden:

Suche: 1), ersetze mit: <FnR RefID=f1>1)</FnR>

Um diesen Vorgang auch für Benutzer, die im Umgang mit Word sehr unerfahren sind komfortabel zu gestalten und um sich das lästige Eintippen des kompletten Tags zu ersparen, habe ich ein Makro erstellt.

(weiterlesen…)

Freitag, 06. 05. 2005

Tabellenblätter speichern

Filed under: — Sahanya @ 08:54

Tabellenblätter in Excel Wenn man in einem Excel-Dokument Tabellen auf mehreren Tabellenblättern eingefügt hat, kann man diese zwar im Gesamten ausdrucken, doch man kann sie nicht in einem anderen Format (z. B. als Textdatei) speichern, denn Excel speichert bei so einem Vorgang nur das erste Tabellenblatt. Um also den kompletten Dateiinhalt in eine Textdatei zu bekommen, muss man sich die Inhalte der Tabellenblätter auf ein einzelnes Tabellenblatt kopieren. Mit Hilfe von VBA kann man dies automatisieren:

Sub Tabellenblaetter()
Dim TabellenBlatt As Byte
Dim FreieZeile As Integer

Worksheets(1).Activate

For TabellenBlatt = 2 To Sheets.Count

FreieZeile = Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
Worksheets(TabellenBlatt).UsedRange.Copy _
Destination:=Worksheets(1).Cells(FreieZeile + 1, 1)

Next TabellenBlatt

End Sub

Montag, 18. 04. 2005

Makro in Word rückgängig machen

Filed under: — Sahanya @ 20:01

Rückgängig Gerade bei umfangreichen Makros kann das Rückgängigmachen der einzelnen Schritte recht mühsam werden. Bei der Suche nach einer Lösung, die es ermöglicht ein komplettes Makro oder aber auch mehrere Makros, die in einem Schritt ablaufen, die man aber aus Gründen der Übersichtlichkeit im Code auf mehrere Makros verteilt hat, bin ich auf eine Lösung von Roemer Lievaart gestoßen. Diese ist zwar für Word97 ausgewiesen, funktioniert aber auch in Word2003.

Dazu setzt man die Zeile StartUndoSaver einfach an den Beginn eines Makros und die Zeile EndUndoSaver an das Ende, so dass man folgendes erhält:

Sub Irgendwas
StartUndoSaver

Hier kommt der Code.
EndUndoSaver
End Sub

Zusätlich muss man noch folgende Makros haben, die man am Besten in einem eigenen Modul einfügt:

(weiterlesen…)

Mittwoch, 06. 04. 2005

FreeWheel

Filed under: — Sahanya @ 19:34

MausNichts ist nerviger als festzustellen, dass das Scrollrad der Maus in bestimmten Anwendungen nicht funktioniert, z. B. im VBA-Editor und in Excel während man Zellen markiert hat. FreeWheel kann ich daher allen empfehlen!

Versalschrift

Filed under: — Sahanya @ 19:18

Wenn man mit Dokumenten arbeitet, die Text enthalten, der nicht mit der Shift-Taste GROSS geschrieben wurde, sondern mittels Formatierung in Word (Format – Zeichen – Schrift) in Großbuchstaben umgewandelt wurde, kann es zu überraschenden bzw. ärgerlichen Ergebnissen kommen, wenn man zusätzlichen Text einfügen möchte, der nicht in Versal geschrieben sein soll.

Außerdem kann es zu Problemen kommen, wenn man diesen Text in eine andere Anwendung exportieren oder kopieren möchte, wenn unterwegs die Formatierung verloren geht.

Das folgende Makro wandelt alle Absätze deren Text die Formatierung Großbuchstaben enthält in „richtige” Großbuchstaben um:

(weiterlesen…)

Montag, 10. 01. 2005

Blindtext

Filed under: — Sahanya @ 22:09

Wenn man für VBA (aber auch für andere Gelegenheiten, z. B. um ein Schriftbild zu beurteilen) auf die Schnelle einen Blindtext benötigt, bietet es sich an, die dafür in Word vorhandene Funktion zu nutzen: einfach =rand() eingeben und Word schreibt in das geöffnete Dokument:

Franz jagt im komplett verwahrlosten Taxi quer durch Bayern.

Füllt man die Klammer (wie o. a.) nicht aus, erscheinen 3 Absatze mit jeweils 5 Sätzen dieses Textes. Man kann aber auch die Anzahl der Absätze und der darin enthaltenen Sätze bestimmen, wobei die erste Zahl die Anzahl der Absätze und die zweite Zahl die Anzahl der in einem Absatz vorkommenden Sätze bestimmt: =rand(1.2) ergibt also einen Absatz mit zwei Sätzen.

Eine umfangreiche Sammlung von Blindtexten findet man bei Newmediadesigner. Mein persönlicher Favorit:

Blind von Geburt an

Ich bin Blindtext. Von Geburt an. Es hat lange gedauert, bis ich begriffen habe, was es bedeutet, ein blinder Text zu sein: Man macht keinen Sinn. Man wirkt hier und da aus dem Zusammenhang gerissen. Oft wird man gar nicht erst gelesen. Aber bin ich deshalb ein schlechter Text? Ich weiss, dass ich nie die Chance haben werde, im Stern zu erscheinen. Aber bin ich darum weniger wichtig? Ich bin blind! Aber ich bin gerne Text. Und sollten Sie mich jetzt tatsächlich zu Ende lesen, dann habe ich etwas geschafft, was den meisten “normalen” Texten nicht gelingt.

Samstag, 25. 12. 2004

Shapes

Filed under: — Sahanya @ 09:17

Wenn man in einem Office-Dokument via VBA einzelne Objekt-Formen ansprechen möchte, die z. B. über das Menü „Einfügen” eingefügt wurden, muss man die jeweilige Shape bzw. Form einzeln ansprechen, da sonst sämtliche Formen betroffen wären.

Hier zwei Beispiele:

(weiterlesen…)

Sonntag, 12. 12. 2004

doc-Text in HTML konvertieren

Filed under: — Sahanya @ 19:31

Möchte man einen längeren Text in einem Word-Dokument HTML-tauglich machen, müssen mehrere Schritte unternommen werden:

  1. Überflüssige Leerzeilen, -zeichen u. ä. löschen
  2. Sonderzeichen maskieren
  3. Internet- und E-Mail-Adressen „umsetzen”
  4. Absätze mit Tags umschließen
  5. Ungeordnete und Geordnete Listen kennzeichen

Um all diese Schritte automatisch vornehmen zu können, habe ich ein Makro zusammengestellt, das dies alles erledigt.

(weiterlesen…)

Freitag, 12. 11. 2004

ASCII

Filed under: — Sahanya @ 20:08

Word hat einige Stolpersteine eingebaut, die das Suchen und Ersetzen von mehreren aufeinander folgenden Absatzmarken etwas erschweren. Durch das Ersetzen mit ASCII-Code und der Umwandlung eines Kommas in ein Semikolon wird es allerdings wieder machbar.

(weiterlesen…)

Freitag, 22. 10. 2004

Suche und Ersetzen

Filed under: — Sahanya @ 18:01

Mal was ganz einfaches zum Anfang. Wenn man Suche-Ersetze-Routinen mit dem Makro-Rekorder aufzeichnet, bekommt man einen Code, der ganz leicht ins uferlose wächst, insbesondere dann wenn man in Dokumenten sehr viel suchen und ersetzen möchte.

Kürzer geht es, wenn man sich ein Makro erstellt, das nur die Suchroutine enthält und dann ein Extra-Makro, innerhalb dessen dann die Suche-Ersetze-Begriffe „aufgelistet” sind, die dann auf das Suche-Ersetze-Makro zugreifen. Noch übersichtlicher wird das ganze, wenn man das Suche-Ersetze-Makro in ein eigenes Modul einfügt.

(weiterlesen…)

Dienstag, 12. 10. 2004

VBA

Filed under: — Sahanya @ 20:12

Da ich mich in den letzten Monaten sehr intensiv mit VBA (insbesondere für Word) beschäftigt habe, ist mir aufgefallen, dass es relativ wenige gute und ausführliche Quellen (im Gegensatz zu VBA in Verbindung mit Excel) dazu im Netz gibt, insbesondere deutschsprachige.

Für alle, die auch auf der Suche sind, hier eine kleine, persönliche Linkliste (und in Kürze auch etwas „Code”):

Word FAQ
Eine sehr umfangreiche Sammlung mit Lösungen (auch ohne VBA) für Word und eine wahre Fundgrube, obwohl man natürlich das richtige Stichwort kennen muss.

Word MVP
Eine sehr umfangreiche Seite mit allen möglichen Lösungen für Word (auch ohne VBA). Die VBA-Tipps befinden sich unter dem Menüpunkt FAQs. Leider auf englisch, aber wie ich finde ein Muss.

VB Tips
Linkliste zu verschiedenen VBA-Lösungen.

Google-Newsgroup
deutschsprachige Newsgroup

 

Powered by WordPress | Angepasst von: www.vlad-design.de