Visual Basic 6 (VBA) Nachschlagewerk Pirmin Steiner

Basierend auf Winword 2000, 2010 und 2016

Autor: Pirmin Steiner

Aktualisiert: 20. November 2020

 

Inhaltsverzeichnis:

Variablen definieren:

Diverse Einzeiler:

Dokument schliessen ohne Speichern:

Dokument drucken und schliessen ohne Speichern:

Autotextdialog anzeigen

Makrodialogbox anzeigen:

Textmarkendialogbox anzeigen:

Markierter Text aus Dokument in MsgBox ausgeben (markierung):

Markierung von Textmarke zu Textmarke:

InputBox

Speichern unter anzeigen:

Organisierendialogbox anzeigen:

Text suchen und wenn gefunden MsgBox anzeigen:

Textteil aus Variable lesen und verändern

Ist die Textmarke vorhanden, dann auf diese springen:

Textmarken aus einem Dokument lesen und in die Variable strMarksVork speichern:

Textmarken u. DokName einfügen wenn es diese im aktuellen Dokument nicht gibt:

Beispiel Dokument suchen:

Alle Textmarken in eine Variable speichern:

Tabelleninhalte lesen und in Variable speichern:

Vergleichen von zwei Variablen:

Zählerschlaufe

Bedingungsschleife

Bedingungsschleife 2  Bedingung am Schluss der Schlaufe

MousOver

Feststellen auf welcher Seite der Cursor sich befindet.

Dokumenteigenschaften setzen

Dokumenteigenschaften alle

Dokumenteigenschaften mit Loop ausgeben (ActiveDocument.BuiltInDocumentProperties)

Dokumenteigenschaften auslesen ohne das Dokument zu öffnen

Benutzerdefinierte Einstellungen erhalten

Mehrmaliges Wiederholen

Steuerzeichen ersetzen

Datei mit fortlaufender Nummer speichern

Datei mit fortlaufender Nummer speichern 2

Dateieigenschaften auslesen

In INI-File schreiben und wieder daraus lesen

Ist eine Datei vorhanden:

OptionenAnsicht in ein INI-File schreiben und wieder daraus lesen:

Public Sub OptionenAnsichtLesen()

Public Sub OptionenAnsichtSchreiben()

Public Sub OptionenAnsichtEinstellung()

Im Add-Ins überprüfen ob das generali.dot installiert ist.

Makro aus Makro ausführen.

Text gespiegelt wiedergeben

Suchen ob es das Wort im Dokument gibt

Abfragen ob eine Frage mit Ja oder nein beantwortet wurde.

Subrutine aus einer Prozedur aufrufen.

Word Assistent aufrufen mit Text

Default Printer einstellen und abrufen:

Textmarkeninhalt auswerten

AddIns anhängen und abhängen

Add Ins Anzeigen

Anhängen und oder Abhängen der AddIn

Ein Programm starten

Fensteransichten bei Word

Auf welcher Seite steht der Coursor

Seitennummer in Variable

Beginn Seite X

Makro nach einer Gewissen Zeit laufen lassen

Ist ein Dokument im Word offen?

Fenster nach Namen Aktivieren

Ist die Seitenvorschau aktiv?

DokumentNamen / oder Variable auf count Anzahl erweitern

Dateien in einem Ordner alle Löschen

Installierte Schriftarten

Windows Tips holen in eine Variable

Ist eine Textmarke vorhanden

Office Assistent Sichtbar und Animieren

Word Ausblenden oder Einblenden

Datum Rechnen

Datumsformat definieren

Zufalls Zahl generieren

Dateien suchen und auflisten

Ein Teil von einer Variable abfragen (Left, Mid, Right)

Len(Feldname)

Ein Dialogbox nur 9 Sekunden anzeigen

UserForm nur eine gewisse Zeit am Bildschirm anzeigen

Beginn- und Endpunkt definieren u. ohne Markieren formatieren

Inhalt einer Textmarke ausgeben

Textmarken Inhalt in eine Variable füllen, mit Zähler

Textmarken im Dokument zählen

Autotext Name und Inhalt ausgeben einer Druckvorlage

AutoText einfügen 1:

AutoText einfügen 2:

Suchen Ersetzten im ganzen Dokument 1

Suchen Ersetzten im ganzen Dokument 2

Variable für andere Prozeduren und Module mit dem Inhalt verfügbar machen

Formatvorlage abfragen welche

Formatvorlagen kopieren

Mit Loop alle Autotexte ausgeben

Abhängen der Sprachabhängigen Autotextvorlage nach dem Editieren

Alle Verwendeten Formatvorlagen

Alle Formatvorlagen in einem Dokument

Tabulatoren löschen und neue setzten

Abfragen Seitenrand und neu setzen

If X = Wert1 oder Wert2

Suchen Ersetzen mit Hochkomma "

Textmarke: Empty-Eigenschaft

Sub DatumZeitSeparat()

Normal.dot saven

Fenster "Alle Fenster in der Taskbar anzeigen" umschalten

Word Warnungen ausgeschalte und wieder einschalten

Briefdatum auf den Briefen mit x Tagen erhöhen

Die 2 letzten Editierten Dokumentnamen in einer ini-Datei ablegen

~Dateien der Add-Ins von Word löschen

Alle Hyperlinks in einem Dokument entfernen

Hyperlink in Variable laden und bearbeiten

CreateTextFile-Methode

Macro-Eigenschaft

Alle Projektnamen ermitteln

Projektnamen ermitteln und setzen

Makro ändert Makro

Variable abfragen ob diese einen bestimmten Wert enthält

Textteil in Variable finden

Neue Formatvorlage basieren auf der vorherigen erstellen

AutoText direkt einfügen

Ist ein Autotext im Dokument vorhanden?

MsgBox definiert ausgeben

AutoText in aktive Dokumentvolage aufnehmen

AutoText aus eignem Template ausgeben

Aus einem Sting die einzelnen Werte auslesen

Prüfen ob ein Ordner existiert

Prüfen ob ein Ordner vorhanden ist und ob er leer ist oder nicht

Ordner erstellen, wenn dieser nicht schon vorhanden ist

Liefert den Pfadseparator vom Pfad (z.B. / oder \)

Vertikales und Horizontales Lineal im Winword wieder anzeigen lassen

Nummerisch oder handelt es sich um ein Datum

Datei ohne Extension (z.B. .doc oder .dot) in eine Variable packen  InStr-Funktion

InStrRev-Funktion

Dateiendung einer Datei ermitteln

Dateiname aus Pfad ermitteln

Angemeldeter User ermitteln

Active Directory Informationen des angemeldeten Benutzers lesen

Warteschlaufe einbauen

Datei Move   /   Datei verschieben

Cursor-Eigenschaft

Welche Position hat eine Textmarke (Nummerierung nach Position im Dokument)

Abfragen ob ein Laufwerk besteht

Wörter suchen (Rückgabe die Anzahl wieviel mal das gesuchte Wort vorkommt)

Zeichen aus Inhalt einer Veriable entfernen

Textmarken neu füllen und dabei erhalten

Feldfunktion lesbar darstellen

Sprache abfragen

Fenster händling

Fensterhändling 2

Aus einem String letztes Zeichen enfernen und TM mit neuem Inhalt wieder setzen

Text aus Variablen-Inhalt entfernen

Word Hidden (unsichtbar) setzen und wieder aufheben

WordPositionAendern  (Alle Fenster gleich anordnen in Position Normal)

Sprache der Installierten Office Version abfragen und auch sonstig.

Link aufrufen, je nach Sprache.

Diverse Infos über PC und User ... alles was in Dos-Eingabeaufforderung unter Set aufgeführt ist.

Alle Vorlagen in einem Verzeichnis von .dot in .dotx abspeichern

Dateiendung ermitteln

ZeitMessung

Pfad zu Dateiname in Fenstertitel von Word anzeigen

Module löschen

Modul Importieren

Verweise des aktuellen Projektes ermitteln

Ist ein Modul Vorhanden / Löschen / Importieren / Umbenennen

Modul Umbenennen

Modul Importieren

Modul Exportieren

Datei Suchen und Anzahl der Seiten auflisten und zusammenzählen

Code für Dokumente in einem Verzeichnis alle bearbeiten

Formatvorlage Kopieren 2010

Kopfzeilen und Fusszeilen löschen

Alle Felder in Kopfzeilen und Fusszeilen Aktualisieren

Felder Sperren und wieder Freigeben (Feldsperre)

Abfragen ob Felder im Dokument gesperrt sind

Autotext aus aktivem Template löschen

Text suchen und markieren im Dokument

Feldfunktion welche in Textmarke eingepackt ist. Update / Unlink

Abfrage ob das Dokument schon mit der letzten Änderung gespeichert wurde

Datum Zeit in Zahl darstellen

Dokumente von der RecentFiles-Auflistung öffnen

Feststellen, ob ein Dokument geöffnet ist

Nur die 2 letzten Dokumente im ini-File ablegen

SendWindowMessage

Löschen von Dateien welche Schreibgeschützt, Verseteckt unw. sind

Registry ändern für im Explorer alle Dateien anzeigen

Öffent den Pfad des aktuellen Files und markiert das betroffene File

Liestet alle Zeichen des CHR() auf

Auf ganzem Verzeichnis alle Druckvorlagen den Drucker Einzugs-Schacht mittels TM festlegen

Auf ganzem Verzeichnis alle Druckvorlagen mit einem anderen Drucker Einzugs-Schacht versehen

Text in MsgBox rechts ausrichten

Betriebssystem Bit abfragen

Betriebssystem abfragen

Registry Eintraege Aendern

Ausgeblendeter Text Erkennen

Dataset (Daten in einer Variable in einzelne Teile aufteilen)

Dataset (Daten aus String und Unterstring in einzelne Teile aufteilen)

Dataset, Anzahl Strings

Wieviel Zeichen Hat der String

Alle Drucker auslesen (nicht getestet)

Ganzes Dokument in Range nehmen

Offenes Dokument in E-Mail setzen inkl. Empfänger

Verweise auflisten

Datum oder Zahl prüfen ob diese grösser oder kleiner ist 'iif' (Ergebnis in Variable)

Verweise im Projekt hinzufügen

Modul in Normal.dotm importieren

Modul von einer anderen Vorlage ins Normal.dotm kopieren

Abfragen ob die Variable eine Zahl oder Datum enthält

Einzelne Zeichen eines Strings ersetzen

Inhalt einer Textdatei in eine Variable speichern

Absatzmarke in markiertem Text ersetzen

Text aus TXT-Dateien in einem Dokument auflisten

Suchen Ersetzen in Fusszeilen

Wörter Zählen in einem Dokument

Wörter Zählen von einer Markierung im Dokument

Texdatei Erstellen und etwas reinschreiben

Dokumente in den Formaten .doc, .docx, .docm erstellen

Das Datum -1 Tagen rechnen

Word Datei als PDF-Datei abspeichern

Funktion aufrufen und Variablenwerte mitgeben

Datum in Longdatum umwandeln nach Sprache

Monatsende ermitteln

Quartal ermitteln

Anzahl Wochen im Jahr mit VBA errechnen

Anzal Wochen seit einem Datum ermitteln (DateDiff-Funktion)

SonderZeichen Entfernen

Datei kopieren auch wenn sie geöffnet ist

Zwischenablage löschen

Excel Mehrere Zellen markieren mittels Wert in Variable

Dateien von einem Verzeichnis verarbeiten

Dateien in einem Verzeichnis sortieren, Liste erstellen, und wenn gewünscht ausdrucken

Add-In in "Dokumentvorlagen und Add-Ins" suchen und wenn vorhanden löschen

Datei Atributte ändern

Wörter und Zeichen vom Dokument zählen

ZeichenZaehlen  Absatzmarken zählen

Dateiname aus einem Pfad extrahieren

Feldfunktion in VBA erstellen (Fields.Add-Methode)

Nicht verwendete Formatvorlagen im Dokument löschen

Namen der benutzerdefinierten Formatvorlagen im Direktfenster ausgeben.

Anzahl Worte im Dokumente auflisten und Erstes Wort im Dokument wie viele mal es im Dokument vorkommt auflisten

Dokument als Objekt deklarieren

Eine neue Datei erstellen

Umgebungsvariablen

On Resume Next wieder aufheben

Dokumentvariable in einem Dokument definieren

Langes Datum in den verschiedenen Sprachen anhand kurzem Datum erstellen

Abfragen der Speicherorte für Dateien

Alle AutoTexte in ein Array lesen

E-Mail automatisch senden

Langes Briefdatum (1er janvier 2019)

Fomratierungen von Variablen

Projektname des aktuellen Dokuments ermitteln

Anzahl Modulen im Aktiven Dokument zählen

Ganze Ordner und Unterordner kopieren

Nur Folder kopieren

Add-Ins auflisten welche nicht aktiviert sind

Alle Add-Ins unistallieren / deaktivieren

MsgBox in den Vordergrund hohlen  vbSystemModal

Bestimmter AutoText aus Normal.dotm abrufen und wenn vorhanden einfügen

Alle Dateien (Fiels) von einem bestimmten Typ in ein anderes Verzeichnis verschieben

Zahlen Formatieren inkl. Funktionsaufruf der Formatierungsdefinition

Vordefinierte Zahlformate

 

 

Variablen definieren:

 

Public strSprache As String                                      ' Variable für das ganze Projekt festlegen, mit Inhalt

Dim strMarks () As String                                        ' Dynamisches Datenfeld deklarieren

Dim strDokname As String                                         ' Dynamisches Datenfeld deklarieren

Dim intZähler As Integer                                         ' Dynamisches Datenfeld für Zähler deklarieren

ReDim Preserve strDateien(intZaehler)                            ' ReDim dynamisch erweitern. Steht vor dem Abfüllen

                                                                   der Variable

 

 

 

Diverse Einzeiler:

 

 

Selection.EndKey Unit:=wdStory                                   'Ans Ende des Dokumentes springen

Selection.MoveUp Unit:=wdLine, Count:=1                          'Eine Zeile nach oben

Selection.MoveRight Unit:=wdCell                                 'Tabulator einfügen, Tabelle erweitern

Selection.HomeKey Unit:=wdStory                                  'An den Beginn des Dokumentes springen

ActiveDocument.Save                                              'Aktives Dokument speichern

Documents("MeinDokument.doc").Activate                           'Dokument mit Namen X Aktivieren

Documents().Close SaveChanges:=wdDoNotSaveChanges                'Dokument schliessen ohne speichern

ActiveDocument.ActiveWindow.Close SaveChanges:=wdSaveChanges     'Dokument schliessen mit speichern

ActiveDocument().Close SaveChanges:=wdPromptToSaveChanges        'Speichern wenn etwas geändert hat, mit Abfrage

ActiveDocument.Close                                             'Dokument schliessen

Selection.TypeText Application.UserInitials                      'User Kurzzeichen aus Optiondlg einfügen

strDokname = ActiveDocument.Name                                 'DokName in Variable strDokname speichern

Dialogs(wdDialogToolsAutoManager).Show                           'Listet die Dialogbox Autotexte auf

Dialogs(wdDialogToolsMacro).Show                                 'Listet die Dialogbox der Makros auf

ActivePrinter = \\andererPC\HP LaserJet 4000 Series PCL 5e       'Auf anderen Drucker drucken (nicht ausprobiert)

ActiveDocument.PrintOut Copies:=4                                'Anzahl Dokumente drucken z.B. hier 4 Stk.

ChangeFileOpenDirectory "C:\"                                    'Beim öffnen Default Pfad angeben

Dialogs(wdDialogFileOpen).Show                                   'Dialogfeld öffnen anzeigen

dlgAnswer = Dialogs(wdDialogFileOpen).Show                       'Zurückgeben Antwort ob etwas ausgewählt im Dialog

wdDialogEditFind                                                 'Dialogfeld Suchen

wdDialogToolsOptionsUserInfo                                     'Dialogfeld Optionen Benutzerangaben

Dialogs(wdDialogViewZoom).Show TimeOut:=9000                     'Zeigt ein Dialogbox hier zB. 9 Sekunden an

ActivePrinter = ""                                               'Stellt auf den Standard-Drucker zurück

Dialogs(wdDialogFilePrint).Show                                  'Dialogfeld Drucken... anzeigen

ActiveDocument.PrintOut                                          'Befehl für Drucken > 'DateiDruckenStandard'

MsgBox ActiveDocument.Name                                       'Gibt den Namen des aktuellen Dokumentes zurück

Dialogs(wdDialogEditFind).Show TimeOut:=9000                     'Dialogfeld Suchen 9sek anzeigen

ActiveWindow.ActivePane.View.Type = wdNormalView                 'Auf Normalansicht wechseln

Application.WindowState = wdWindowStateMaximize                  'Dokument Ansicht Vollbild

Application.WindowState = wdWindowStateNormal                    'Dokument Ansicht Nicht Vollbild

Application.WindowState = wdWindowStateNormal                    'Word-Fenster auf maximiert (nicht vollbild) Ansicht

Application.Resize Width:=577, Height:=274                       'Word-Fenster auf maximiert (genaue grösse definiert)

Ansicht

ActiveWindow.ActivePane.View.Type = wdPrintView                  'Wechseln auf Layout Ansicht

ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader  'Ansicht Kopfzeile

NormalTemplate.AutoTextEntries("Generali").Insert Where:=Selection.Range 'Autotext einfügen

Kill "C:\UserEinstellungen.ini"                                  'Datei löschen

Application.OnTime When:=Now + TimeValue("00:00:02"), _

Name:="TemplateProject.OptionenAnsichtLesen.OptionenAnsichtLesen"'Modul nach einer gewissen Zeit laufen lassen

Application.Run "MyProject.MyModule.MyProcedure"                 'Modul ausführen Projektneme,Modulneme,Prozedurname

Chr(13)                                                          'Absatzmarke

Selection.TypeText Text:="EscSecuenz"                            'Autotext von EscSecuenz einfügen 1. Schritt

Selection.Range.InsertAutoText                                   'Autotext von EscSecuenz einfügen 2. Schritt

Public strSprache As String                                      'Variablenwert für ganzes Projekt vergfügbar machen

Selection.MoveDown Unit:=wdParagraph, count:=1, Extend:=wdMove   'Zum 1. Anfang des nachfolg. Absatzes

Selection.MoveUp Unit:=wdParagraph, count:=1, Extend:=wdMove     'Zum Beginn des 1. vorherigen Absatzes

With Selection                                                   'Beginn Zeile springen und bis Ende Absatz markieren

   .StartOf Unit:=wdParagraph, Extend:=wdMove

   .MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend

End With

Options.PrintReverse = True                                  'Drucken in Umgekehrter Reihenfolge

MsgBox ActiveDocument.Sections.Count & " Abschnitte."        'Gibt die Anzahl der Abschnitte im Dokument retour.

ActiveDocument.ActiveWindow.ActivePane.AutoScroll velocity:=60  'Seite automatisch nach unten scrollen.

Selection.Paragraphs(1).Range.Select                             'Bis Ende nächster Absatzmarke markieren.

ActiveDocument.Paragraphs(2).Range.Select                        'Die ersten zwei Absätze im Dokument markieren

strTextFont = Selection.Font.Name                                'Font-Name in eine Variable abfüllen

intHyperlinkAnzahl = ActiveDocument.Hyperlinks.Count             'Anzahl der Hyperlinks abfragen

'Hyperlink aus VBA im Explorer öffnen:

ActiveDocument.FollowHyperlink Address:="http://office.microsoft.com", NewWindow:=True, AddHistory:=True

strTextmarkenInhalt = ActiveDocument.Bookmarks("SysTextmarke").Range.Text  'TM Inhalt in Variable lesen

strSeite = ActiveDocument.Bookmarks("strgaga").Range.Information(wdActiveEndPageNumber) 'SeitenNr. der TM o. Mark.

ActiveDocument.ActiveWindow.Caption = ActiveDocument.FullName    'In diesem Beispiel wird die Beschriftung des
                                                              'aktiven Fensters auf den Namen des aktiven Dokuments
                                                              'eingestellt.

ActiveWindow.ActivePane.View.NextHeaderFooter                    'Abschnitte zählen

strAbschwievoriger = Selection.HeaderFooter.LinkToPrevious       'Abfragen ob der Abschnitt (Kopf-Fussz.) wie vorheriger

ist

strPfad = ActiveDocument.AttachedTemplate.Path & Application.PathSeparator       'Gibt den Pfad des Aktiven Templates
                                                               zurück, inkl /

strTemplateName = ActiveDocument.AttachedTemplate.Name           'Gibt den Namen des Templates zurück

MsgBox CreateObject("WScript.Network").UserName  Login-Name des aktuell in Windows angemeldeten Benutzers

strFormatvorlage = ActiveDocument.Styles(Selection.Style)        'Gibt die Formatvorlage des Markierten Textes zurück

strBenötigterDrucker = LCase (strSysPrintDest)                   'Alles kleinscheiben

strBenötigterDrucker = UCase(strSysPrintDest)                    'Alles auf Grosschreibung setzen

strTextmarkenInhalt = Left(strTextmarkenInhalt, Len(strTextmarkenInhalt) - 1)    'Letztes Zeichen in einem String
                                                               entfernen

'Temp für Wait (Sleep)

'Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

'Sleep 500                                                       '(500 = 500 Millisekungen = 0.5 Sekunden Warten)

 

ActiveDocument.PageSetup.DifferentFirstPageHeaderFooter = False  'Erste Seite nicht anders 2010

ActiveDocument.PageSetup.OddAndEvenPagesHeaderFooter = False     'Untersch. gerade ungerade Seiten 2010

ActiveDocument.UndoClear                                         'Rückgängig Speicher löschen

stsZeilenNummer = Selection.Information(wdFirstCharacterLineNumber) 'ZeilenNummer

stsZeilenNummerPos = Selection.Information(wdFirstCharacterColumnNumber) ' Position des Zeichens

strAnzahlSeiten = ActiveDocument.ComputeStatistics(wdStatisticPages)  'Anzahl Seiten des Dokuments ermitteln

strSeite = ActiveDocument.Bookmarks("SysPapierPolice").Range.Information(wdActiveEndPageNumber) 'Auf welcher Seite

ist die Textmarke

 

strAktuellesModul = Application.VBE.ActiveCodePane.CodeModule    'Aktuelles Modul

strAktuellesProjekt = Application.VBE.ActiveVBProject.Name       'Projekt Name

strAktuellesModul2 = Application.VBE.ActiveCodePane.CodeModule.Name 'Aktuelles Modul

Exit For                                                         'If Schlaufe verlassen

ActiveDocument.CopyStylesFromTemplate ("C:\Temp\police_m.dotm")  'Alle Formatvorlagen ins Aktive Dokument kopieren

intSchirmhoehe = Application.UsableHeight                        'Bildschirmhöhe ermitteln

intSchirmbreite = Application.UsableWidth                        'Bildschirmbreite ermitteln

WordBasic.SelectSimilarFormatting                                'Im Dokument der Text markieren, welcher die gleiche Formatierung hast wie welcher wo der Coursor steht.

ActiveWindow.View.SeekView = wdSeekCurrentPageFooter             'Direkt in Fusszeile wechseln

ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument       'Fusszeile wieder schliessen

MsgBox ActiveDocument.ComputeStatistics(Statistic:=wdStatisticLines)  'Anzahl Absatzmarken im Dokument

MsgBox ActiveDocument.Paragraphs.Count                           'Anzahl Absatzmarken im Dokument

 

 

 

Dokument schliessen ohne Speichern:

 

 

Sub Makro9()

'

' Makro9 Makro

' Makro aufgezeichnet am 6. April 2001 von Steiner Pirmin

' IO  Dokument wird ohne Speichern geschlossen

'

Documents().Close SaveChanges:=wdDoNotSaveChanges

End Sub

 

In diesem Beispiel wird das aktive Dokument gespeichert, wenn es Änderungen enthält, die zuvor nicht gespeichert wurden.

If ActiveDocument.Saved = False Then ActiveDocument.Save

 

'Abfragen ob beim SaveAs (Dialog Speichern unter) Abbrechen oder Speichern gewählt wurde.

binSaved = ActiveDocument.Saved

'Bringt auf binSaved (die Variable) Wahr oder Falsch zurück (Boolean)

 

'Bei diesem Dialogfeld:

Set dlg = Dialogs(wdDialogFileSaveAs)

With dlg

   .Name = strDocFullName

   .Show

End With

 

 

Dokument drucken und schliessen ohne Speichern:

 

 

Sub Dok()

Set myRange = ActiveDocument.Range(Start:=0, End:=0)

ActiveDocument.PrintOut

Documents().Close SaveChanges:=wdDoNotSaveChanges 'Dok schliessen ohne Speichern

End Sub

 

 

 

Autotextdialog anzeigen

 

 

Sub AutotextAnzeigen()

' Dieses Makro listet das Dialogfeld der Autotexte auf.

'

Dialogs(wdDialogToolsAutoManager).Show

End Sub

 

 

 

Makrodialogbox anzeigen:

 

 

Sub MakroAufstellungB()

'

' MakroAufstellung Makro

' Makro aufgezeichnet am 9. April 2001 von Steiner Pirmin

' WICHTIG WICHTIG

' Dieses Makro listet das Dialogfeld der Makros auf.

Dialogs(wdDialogToolsMacro).Show

End Sub

 

 

 

Textmarkendialogbox anzeigen:

 

 

Sub TextmarkenAnzeigenB()

'

' TextmarkenAnzeigen Makro

' In diesem Beispiel wird das integrierte Dialogfeld Textmaken angezeigt.

' Im Dialogfeld werden alle Textmarken angezeigt.

 

With Dialogs(wdDialogInsertBookmark)

   .Name = ""

   .Show

End With

 

End Sub

 

 

 

Markierter Text aus Dokument in MsgBox ausgeben (markierung):

 

'Aus Dokument lesen / Alles was Markiert ist wird in der MsgBox ausgegeben.

 

Sub LesenB()

Dim strLesen As String

strLesen = Selection.Text

MsgBox strLesen

End Sub

 

 

 

Markierung von Textmarke zu Textmarke:

 

 

Sub MarkierungVonBisTextm()

' Hier wird von den Textmarken SysBEGUTitel bis SysBEGU eine

' Markierung erstellt, natürlich zuerst abfragen obs diese gibt.

If ActiveDocument.Bookmarks.Exists("SysBEGUTitel") = True Then

   If ActiveDocument.Bookmarks.Exists("SysBEGU") = True Then

        Selection.GoTo What:=wdGoToBookmark, Name:="SysBEGUTitel"

        Selection.Extend

        Selection.GoTo What:=wdGoToBookmark, Name:="SysBEGU"

        '       Und die Markierung noch weiter ziehen bis SysBEGUEnde

        Selection.GoTo What:=wdGoToBookmark, Name:="SysBEGUEnde"

   End If

End If

End Sub

 

 

 

InputBox

 

'Die InputBox Eingabe wird immer in eine Variable abelegt. Darum die Klammern!

 

Sub inBox()

Dim strEingabe As String

strEingabe = InputBox("Bitte Namen eingeben.", "Namenseingabe", "Hans Muster")

MsgBox "Sie heissen " & strEingabe

End Sub

 

 

 

Speichern unter anzeigen:

 

 

Sub SpeichernUnter()

With Dialogs(wdDialogFileSaveAs)

   .Name = ""

   .Show

End With

End Sub

 

 

Organisierendialogbox anzeigen:

 

 

Sub Organisieren()

With Dialogs(wdDialogOrganizer)

   .Name = ""

   .Show

End With

End Sub

 

 

 

Text suchen und wenn gefunden MsgBox anzeigen:

 

 

Public Sub TextSuchen()

'Wenn Sie zum Find-Objekt aus dem Range-Objekt gelangt sind, wird die

'Markierung nicht geändert, wenn der Text ermittelt wird, der mit den

'Suchkriterien übereinstimmt. Es wird jedoch das Range-Objekt neu

'definiert. Das folgende Beispiel sucht das erste Auftreten des Worts

'"blue" im aktiven Dokument. Wird das Wort "blue" im Dokument ermittelt,

'wird myRange neu definiert und das Wort "blue" fett formatiert.

 

Set myRange = ActiveDocument.Content

myRange.Find.Execute FindText:="bluqe", Forward:=True

If myRange.Find.Found = True Then

   MsgBox "hallo gefunden"

   'myRange.Bold = True

End If

End Sub

 

 

 

Textteil aus Variable lesen und verändern

 

 

Public Sub TextSuchenInVariablenInhalt()

' Textmarken-Inhalt, welcher in einer Variablen abgelegt ist durchsuchen

' und einen Teil davon Textlich verändern. z.B. Hier Font Kleiner- und Höherstellen

If ActiveDocument.Bookmarks.Exists("produktnamen") = True Then

   Set myRange = ActiveDocument.Bookmarks("produktnamen").Range

   myRange.Find.Execute FindText:="FL", Forward:=True

   If myRange.Find.Found = True Then

        intSchriftgroesse = myRange.Font.Size

        myRange.Font.Size = intSchriftgroesse - 3

        myRange.Font.Position = 3

        '   könnte auch nur mit dieser Zeile für Font.Hochgestellt erfolgen:

        myRange.Font.Superscript = True

   End If

End If

End Sub

 

 

Public Sub TextSuchenInVariablenInhalOKOK()

' Textmarken-Inhalt, welcher in einer Variablen abgelegt ist durchsuchen

' und einen Teil davon Textlich verändern. z.B. Hier Font Kleiner- und Höherstellen

If ActiveDocument.Bookmarks.Exists("produktnamen") = True Then

   Set myRange = ActiveDocument.Bookmarks("produktnamen").Range

   myRange.Find.Execute FindText:="FL ", MatchCase:=True, Forward:=wdForwardAll   ' mit Gross/Kl.schreibung
                                                 beachten und letztes Vorkommen im String

   If myRange.Find.Found = True Then

        myRange.Font.Superscript = True

   End If

End If

End Sub

 

 

 

Ist die Textmarke vorhanden, dann auf diese springen:

 

If ActiveDocument.Bookmarks.Exists("SysUser") = True Then        ' Ist die Textmarke SysAbsatz vorhanden

Selection.GoTo What:=wdGoToBookmark, Name:="SysUser"

With ActiveDocument.Bookmarks

   .DefaultSorting = wdSortByName

   .ShowHidden = True

End With

End If

 

 

 

Textmarken aus einem Dokument lesen und in die Variable strMarksVork speichern:

 

If ActiveDocument.Bookmarks.Count >= 1 Then           'Sind Textmarken vorhanden?

ReDim strMarksVork(1000)                              ' Größe auf 100 Elemente ändern.

ActiveDocument.Bookmarks().Application.Activate       ' Aktuelles Dokument Aktivieren

If ActiveDocument.Bookmarks.Count >= 1 Then

   ReDim strMarksVork(ActiveDocument.Bookmarks.Count - 1)   ' So manchmal die Variabl. abfüllen

   e = 0                                              ' wie es Textmarken gibt.

   For Each strBookmark In ActiveDocument.Bookmarks

        strMarksVork(e) = strBookmark.Name            ' Variable mit TextmarkenNamen abfüllen

        e = e + 1                                     ' Angeben wie hoch die Variable erst. werden muss

   Next strBookmark

End If

 

 

 

Textmarken u. DokName einfügen wenn es diese im aktuellen Dokument nicht gibt:

 

' Textmarken einfügen

' Hier wird abgefragt ob es den eintrag 'Textmarke und Dokumentnamen schon gibt.

' Wenn es diesen im Zusammenfassungs-Dokument schon gibt wird dieser Eintrag nicht

' vorgenommen.

 

For intZählerVork = 0 To e – 1                  'Anzahl Durchläufe festlegen

   Set myRange = ActiveDocument.Content

   myRange.Find.Execute FindText:=strMarksVork(intZählerVork) & vbTab & strDoknameVork, Forward:=True

   If myRange.Find.Found = True Then

        Selection.HomeKey Unit:=wdStory         'An den Beginn des Dokumentes springen

   Else

        Selection.EndKey Unit:=wdStory          'Ans Ende des Dokumentes springen

        Selection.MoveUp Unit:=wdLine, Count:=1 'Eine Zeile nach oben

        Selection.MoveRight Unit:=wdCell        'Tabulator einfügen, Tabelle erweitern

        Selection.TypeText strMarksVork(intZählerVork) & vbTab & strDoknameVork  ' -e darum weil 0 mitgezählt wird

        Count = Count + 1                       ' Counter angeben mit welchem wert gezählt wird

   End If

Next

 

 

 

Beispiel Dokument suchen:

 

'Beispiel zur Execute-Methode (FileSearch-Objekt)

In diesem Beispiel wird im Ordner My Documents nach allen Dateien gesucht, die die Dateinamenerweiterung .doc haben. Für jede gefundene Datei wird anschließend der Pfad und der Name angezeigt. Die Liste der zurückgegebenen Dateien wird außerdem in aufsteigender alphabetischer Reihenfolge sortiert.

 

Set fs = Application.FileSearch

With fs

   .LookIn = "C:\My Documents"

   .FileName = "*.doc"

   If .Execute(SortBy:=msoSortbyFileName, _

        SortOrder:=msoSortOrderAscending) > 0 Then

        MsgBox "There were " & .FoundFiles.Count & " file(s) found."

        For i = 1 To .FoundFiles.Count

             MsgBox .FoundFiles(i)

        Next i

   Else

        MsgBox "There were no files found."

   End If

End With

 

 

 

Alle Textmarken in eine Variable speichern:

 

 

Sub TextmarkenSuche()

'

' Makro1 Makro

' Makro aufgezeichnet am 13. April 2001 von Steiner Pirmin

'

' Anstatt jeden Elementnamen in einem Meldungsfeld anzuzeigen,

' können Sie ein Datenfeld zum Speichern der Informationen verwenden.

' In diesem Beispiel wird das Datenfeld aMarks() zum Speichern des

' Namens jeder Textmarke verwendet, die im aktiven Dokument enthalten ist.

 

If ActiveDocument.Bookmarks.Count >= 1 Then

   ReDim aMarks(ActiveDocument.Bookmarks.Count - 1)

   i = 0

   For Each aBookmark In ActiveDocument.Bookmarks

        aMarks(i) = aBookmark.Name

        i = i + 1

   Next aBookmark

End If

 

 

 

Tabelleninhalte lesen und in Variable speichern:

 

 

Sub Makro11()

' Makro aufgezeichnet am 29. April 2001 von Steiner Pirmin

' TABELLENINHALT IN EINE VARIABLE SPEICHERN

'Dim aCells As String                         ' Dynamisches Datenfeld für Zähler deklarieren

'Dim strTabText As String                     ' Dynamisches Datenfeld für Zähler deklarieren

ReDim strTabText(1000000)                     ' Größe auf 1000 Elemente ändern.

 

If ActiveDocument.Tables.Count >= 1 Then

   Set oTable = ActiveDocument.Tables(1)

   intNummer = oTable.Range.Cells.Count

   ReDim strTabText(intNummer)

   i = 1

   For Each oCell In oTable.Range.Cells

        Set myRange = oCell.Range

        myRange.MoveEnd Unit:=wdCharacter, Count:=-1

        strTabText(i) = myRange.Text

        Selection.TypeText strTabText(i) 'Text einfügen

        Selection.MoveRight Unit:=wdCell 'Tab einfügen

        i = i + 1

   Next oCell

End If

End Sub

 

 

 

Vergleichen von zwei Variablen:

 

 

Sub Vergleich()

Dim intHansAlter As Integer

Dim intSusiAlter As Integer

 

intHansAlter = 7

intSusiAlter = 6

 

If intHansAlter > intSusiAlter Then

   MsgBox "Hans ist älter"

ElseIf intHansAlter = intSusiAlter Then

   MsgBox "Beide sind geleich alt"

Else

   MsgBox "Susi ist älter"

End If

End Sub

 

 

 

Zählerschlaufe

 

 

Sub Zähler()

 

Dim intZähler As Integer                         'Zälervarable als Integer festlegen.

 

For intZähler = 1 To 20 Step 5                        'von 1 bis 20 durchzählen

   'Step 5 ein druchlaufen im 5er Schrittt

   Selection.TypeText "Dies ist die Zählschlaufe Nr.: " & intZähler      'Einfügen Text u. Zähler

   Selection.TypeParagraph                            'Absatzmarke Einfügen

Next intZähler                                     'Wieder an Anfang

 

End Sub

 

 

 

Bedingungsschleife

 

 

Sub Bedingteschleife()

 

Dim intBZähler As Integer                          'Zälervarable als Integer festlegen.

 

intBZähler = 1                                     'Variablenwert definieren

 

Do While intBZähler <= 100                       'Anzahl Durchläufe festlegen

   Selection.TypeText "Dies ist die Bedingungsschlaufe Nr.: " & intBZähler

   Selection.TypeParagraph

   intBZähler = intBZähler + 2                   'Angeben um welchen Wert der Zähler erhöt wird

   Count = Count + 1                             'Counter angeben mit welchem wert gezählt wird

Loop                                             'Wieder an Anfang

End Sub

 

 

 

Bedingungsschleife 2  Bedingung am Schluss der Schlaufe

 

'Bedingungsschleife 2  Bedingung am Schluss der Schlaufe (Einmal wird diese immer durchlaufen!)

 

Sub Bedingteschleife2()

 

Dim intBZähler As Integer                        'Zälervarable als Integer festlegen.

 

intBZähler = 1                                   'Variablenwert definieren

 

Do                                         'Durchläufe festlegen

   Selection.TypeText "Dies ist die Bedingungsschlaufe Nr.: " & intBZähler

   Selection.TypeParagraph

   intBZähler = intBZähler + 2                'Angeben um welchen Wert der Zähler erhöt wird

   Count = Count + 1                          'Counter angeben mit welchem wert gezählt wird

Loop While intBZähler <= 100                  'Wieder an Anfang mit Bedingung_f_h_k_l

End Sub

 

 

 

MousOver

 

' Lässt eine MsgBox erscheinen, wenn der Mauszeiger über die Schaltfläche OK fährt.

'

Private Sub cmdOK_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, _

   ByVal X As Single, ByVal Y As Single)      'Zeile mit leer + _ abgeschlossen und umgebrochen

MsgBox "Test Maus über OK"

End Sub

 

 

 

Feststellen auf welcher Seite der Cursor sich befindet.

 

 

Public Sub MAIN()

 

' Hier wird abgefragt ob der Cursor sich auf der 1. Seite

' befindet

'-------------------------------------------------------------

If WordBasic.SelInfo(3) = 1 Then

   WordBasic.MsgBox "Dies ist die 1. Seite"

End If

 

' Hier wird abgefragt ob der Cursor sich auf der 2. Seite

'befindet

'-------------------------------------------------------------

If WordBasic.SelInfo(3) = 2 Then

   WordBasic.MsgBox "Dies ist die 2. Seite"

End If

 

' Hier wird abgefragt ob der Cursor sich auf der 3. Seite

' befindet

'-------------------------------------------------------------

If WordBasic.SelInfo(3) = 3 Then

   WordBasic.MsgBox "Dies ist die 3. Seite"

End If

 

End Sub

 

 

 

Dokumenteigenschaften setzen

 

In der Regel werden Sie den Makrorecorder benutzen, um die Namen von Objekten, Eigenschaften und Methoden zu erfahren, die Sie in VBA nachbilden möchten. Beim Setzen von Dokumenteigenschaften stoßen Sie dabei auf einen Fehler des Makrorecorders in Word. Er ist nicht in der Lage, diese Operation aufzuzeichnen. Um die Dokumenteigenschaften von VBA aus einzustellen, verwenden Sie die Eigenschaft BuiltInDocumentProperties des ActiveDocument-Objekts und eine Konstante, die die einzelne Eigenschaft angibt. Die folgende Prozedur setzt die Werte für die Eigenschaften Titel, Autor und Kategorie durch die ihr übergebenen Werte.

 

 

Sub DokumenteigenschaftenSetzen(strTitel As String, _

   strAutor As String, strKategorie As String)

 

With ActiveDocument

   .BuiltInDocumentProperties(wdPropertyTitle) = strTitel

   .BuiltInDocumentProperties(wdPropertyAuthor) = strAutor

   .BuiltInDocumentProperties(wdPropertyCategory) = strKategorie

End With

 

End Sub

 

 

 

Public Sub DokumenteigenschaftenSetzen()

On Error GoTo Ende:

'Setzt die Dokumenteigenschaften des aktiven Dokumentes

Dim strTitel As String

Dim strThema As String

Dim strAutor As String

Dim strManager As String

Dim strKategorie As String

Dim strFirma As String

Dim strDocName As String

Dim strKommentar As String

Dim strHyperlink As String

strDocName = ActiveDocument.Name

strTitel = strDocName 'InputBox("Der Titel der Druckvorlage", "Dokumenteigenschaften setzen", strDocName)

If strTitel = "" Then

   'Nichts machen, da Abbrechen gewählt wurde!

Else

   strThema = "Dokumentvorlage für VVEV"

   strAutor = "Pirmin Steiner"

   strManager = "Pirmin Steiner (DO/stp)"

   strKategorie = "Winword Dokumentvorlage"

   strFirma = "GENERALI Personenversicherungen"

   strKommentar = "Erstellt/Geändert am: " & vbCrLf & "Datum: " & Date & vbCrLf & "Zeit:     " & Time & vbCrLf & "Durch:  DO/stp"

   strThema = "Druckvorlage (Winword 2000)"

   strHyperlink = "www.generali.ch"

   With ActiveDocument

        .BuiltInDocumentProperties(wdPropertyTitle) = strTitel

        .BuiltInDocumentProperties(wdPropertyAuthor) = strAutor

        .BuiltInDocumentProperties(wdPropertyManager) = strManager

        .BuiltInDocumentProperties(wdPropertyCategory) = strKategorie

        .BuiltInDocumentProperties(wdPropertyCompany) = strFirma

        .BuiltInDocumentProperties(wdPropertyComments) = strKommentar

        .BuiltInDocumentProperties(wdPropertyHyperlinkBase) = strHyperlink

        .BuiltInDocumentProperties(wdPropertySubject) = strThema

   End With

End If

Ende:

End Sub

 

Sub FileSave()

On Error GoTo Ende:

'Winword Befehl Speichern

'Zusätzlich Dokumenteigenschaften setzen.

'Setzt die Dokumenteigenschaften des aktiven Dokumentes

Dim strTitel As String

Dim strThema As String

Dim strAutor As String

Dim strManager As String

Dim strKategorie As String

Dim strFirma As String

Dim strDocName As String

Dim strKommentar As String

Dim strHyperlink As String

strDocName = ActiveDocument.Name

strTitel = strDocName

If strTitel = "" Then

   'Nichts machen, da Abbrechen gewählt wurde!

Else

   strThema = "Dokumentvorlage für VVEV"

   strAutor = "Pirmin Steiner"

   strManager = "Pirmin Steiner (DO/stp)"

   strKategorie = "Winword Dokumentvorlage"

   strFirma = "GENERALI Personenversicherungen"

   strKommentar = "Erstellt/Geändert am: " & vbCrLf & "Datum: " & Date & vbCrLf & "Zeit:     " & Time & vbCrLf & "Durch:  DO/stp"

   strThema = "Druckvorlage (Winword 2000)"

   strHyperlink = "www.generali.ch"

   With ActiveDocument

        .BuiltInDocumentProperties(wdPropertyTitle) = strTitel

        .BuiltInDocumentProperties(wdPropertyAuthor) = strAutor

        .BuiltInDocumentProperties(wdPropertyManager) = strManager

        .BuiltInDocumentProperties(wdPropertyCategory) = strKategorie

        .BuiltInDocumentProperties(wdPropertyCompany) = strFirma

        .BuiltInDocumentProperties(wdPropertyComments) = strKommentar

        .BuiltInDocumentProperties(wdPropertyHyperlinkBase) = strHyperlink

        .BuiltInDocumentProperties(wdPropertySubject) = strThema

   End With

   ActiveDocument.Save

End If

Ende:

End Sub

 

 

Sub FileSaveAs()

On Error GoTo Ende:

'Winword Befehl Speichern unter...

'Zusätzlich Dokumenteigenschaften setzen.

'Setzt die Dokumenteigenschaften des aktiven Dokumentes

Dim strTitel As String

Dim strThema As String

Dim strAutor As String

Dim strManager As String

Dim strKategorie As String

Dim strFirma As String

Dim strDocName As String

Dim strDocFullName As String

Dim strKommentar As String

Dim strHyperlink As String

strDocFullName = ActiveDocument.FullName

'    ActiveDocument.SaveAs

'ChDir ActiveDocument.AttachedTemplate.Path

With Dialogs(wdDialogFileSaveAs)

   .Name = strDocFullName

   .Show

End With

strDocName = ActiveDocument.Name

strTitel = strDocName

If strTitel = "" Then

   'Nichts machen, da Abbrechen gewählt wurde!

Else

   strThema = "Dokumentvorlage für VVEV"

   strAutor = "Pirmin Steiner"

   strManager = "Pirmin Steiner (DO/stp)"

   strKategorie = "Winword Dokumentvorlage"

   strFirma = "GENERALI Personenversicherungen"

   strKommentar = "Erstellt/Geändert am: " & vbCrLf & "Datum: " & Date & vbCrLf & "Zeit:     " & Time & vbCrLf & "Durch:  DO/stp"

   strTitel = strDocName

   strThema = "Druckvorlage (Winword 2000)"

   strHyperlink = "www.generali.ch"

   With ActiveDocument

        .BuiltInDocumentProperties(wdPropertyTitle) = strTitel

        .BuiltInDocumentProperties(wdPropertyAuthor) = strAutor

        .BuiltInDocumentProperties(wdPropertyManager) = strManager

        .BuiltInDocumentProperties(wdPropertyCategory) = strKategorie

        .BuiltInDocumentProperties(wdPropertyCompany) = strFirma

        .BuiltInDocumentProperties(wdPropertyHyperlinkBase) = strHyperlink

        .BuiltInDocumentProperties(wdPropertySubject) = strThema

        .BuiltInDocumentProperties(wdPropertyComments) = strKommentar

   End With

   ActiveDocument.Save 'Damit die Eigenschaften gespeichert sind.

End If

Ende:

End Sub

 

 

Dokumenteigenschaften alle

 

WdBuiltInProperty-Enumeration

'Gibt eine integrierte Dokumenteigenschaft an.

Name    Wert Beschreibung

wdPropertyAppName  9    Name der  Anwendung.

wdPropertyAuthor   3    Autor.

wdPropertyBytes    22   Byteanzahl.

wdPropertyCategory 18   Kategorie.

wdPropertyCharacters    16   Zeichenanzahl.

wdPropertyCharsWSpaces  30   Zeichenanzahl mit Leerzeichen.

wdPropertyComments 5    Kommentare.

wdPropertyCompany  21   Firma.

wdPropertyFormat   19   Nicht unterstützt.

wdPropertyHiddenSlides  27   Nicht unterstützt.

wdPropertyHyperlinkBase 29   Nicht unterstützt.

wdPropertyKeywords 4    Schlüsselwörter.

wdPropertyLastAuthor    7    Letzter Autor.

wdPropertyLines    23   Zeilenanzahl.

wdPropertyManager  20   Manager.

wdPropertyMMClips  28   Nicht unterstützt.

wdPropertyNotes    26   Hinweise.

wdPropertyPages    14   Seitenanzahl.

wdPropertyParas    24   Absatzanzahl.

wdPropertyRevision 8    Revisionsnummer.

wdPropertySecurity 17   Sicherheitseinstellung.

wdPropertySlides   25   Nicht unterstützt.

wdPropertySubject  2    Betreff.

wdPropertyTemplate 6    Vorlagename.

wdPropertyTimeCreated   11   Erstellt.

wdPropertyTimeLastPrinted     10   Zuletzt gedruckt.

wdPropertyTimeLastSaved 12   Zuletzt gespeichert.

wdPropertyTitle    1    Titel.

wdPropertyVBATotalEdit  13   Anzahl der Bearbeitungen am VBA-Projekt.

wdPropertyWords    15   Wortanzahl.

 

Test

 

 

Sub TestProperties()

On Error Resume Next

 

strWDPropertey10 = ActiveDocument.BuiltInDocumentProperties(wdPropertyAppName)

strWDPropertey11 = ActiveDocument.BuiltInDocumentProperties(wdPropertyAuthor)

strWDPropertey12 = ActiveDocument.BuiltInDocumentProperties(wdPropertyBytes)

strWDPropertey13 = ActiveDocument.BuiltInDocumentProperties(wdPropertyCategory)

strWDPropertey14 = ActiveDocument.BuiltInDocumentProperties(wdPropertyCharacters)

strWDPropertey15 = ActiveDocument.BuiltInDocumentProperties(wdPropertyCharsWSpaces)

strWDPropertey16 = ActiveDocument.BuiltInDocumentProperties(wdPropertyComments)

strWDPropertey17 = ActiveDocument.BuiltInDocumentProperties(wdPropertyCompany)

strWDPropertey18 = ActiveDocument.BuiltInDocumentProperties(wdPropertyFormat)

strWDPropertey19 = ActiveDocument.BuiltInDocumentProperties(wdPropertyHiddenSlides)

strWDPropertey20 = ActiveDocument.BuiltInDocumentProperties(wdPropertyHyperlinkBase)

strWDPropertey21 = ActiveDocument.BuiltInDocumentProperties(wdPropertyKeywords)

strWDPropertey22 = ActiveDocument.BuiltInDocumentProperties(wdPropertyLastAuthor)

strWDPropertey23 = ActiveDocument.BuiltInDocumentProperties(wdPropertyLines)

strWDPropertey24 = ActiveDocument.BuiltInDocumentProperties(wdPropertyManager)

strWDPropertey25 = ActiveDocument.BuiltInDocumentProperties(wdPropertyMMClips)

strWDPropertey26 = ActiveDocument.BuiltInDocumentProperties(wdPropertyNotes)

strWDPropertey27 = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)

strWDPropertey28 = ActiveDocument.BuiltInDocumentProperties(wdPropertyParas)

strWDPropertey29 = ActiveDocument.BuiltInDocumentProperties(wdPropertyRevision)

strWDPropertey30 = ActiveDocument.BuiltInDocumentProperties(wdPropertySecurity)

strWDPropertey31 = ActiveDocument.BuiltInDocumentProperties(wdPropertySlides)

strWDPropertey32 = ActiveDocument.BuiltInDocumentProperties(wdPropertySubject)

strWDPropertey33 = ActiveDocument.BuiltInDocumentProperties(wdPropertyTemplate)

strWDPropertey34 = ActiveDocument.BuiltInDocumentProperties(wdPropertyTimeCreated)

strWDPropertey35 = ActiveDocument.BuiltInDocumentProperties(wdPropertyTimeLastPrinted)

strWDPropertey36 = ActiveDocument.BuiltInDocumentProperties(wdPropertyTimeLastSaved)

strWDPropertey37 = ActiveDocument.BuiltInDocumentProperties(wdPropertyTitle)

strWDPropertey38 = ActiveDocument.BuiltInDocumentProperties(wdPropertyVBATotalEdit)

strWDPropertey39 = ActiveDocument.BuiltInDocumentProperties(wdPropertyWords)

 

MsgBox "strWDPropertey10 = " & strWDPropertey10 & vbCrLf & _

"strWDPropertey11 = " & strWDPropertey11 & vbCrLf & _

"strWDPropertey12 = " & strWDPropertey12 & vbCrLf & _

"strWDPropertey13 = " & strWDPropertey13 & vbCrLf & _

"strWDPropertey14 = " & strWDPropertey14 & vbCrLf & _

"strWDPropertey15 = " & strWDPropertey15 & vbCrLf & _

"strWDPropertey16 = " & strWDPropertey16 & vbCrLf & _

"strWDPropertey17 = " & strWDPropertey17 & vbCrLf & _

"strWDPropertey18 = " & strWDPropertey18 & vbCrLf & _

"strWDPropertey19 = " & strWDPropertey19 & vbCrLf & _

"strWDPropertey20 = " & strWDPropertey20 & vbCrLf & _

"strWDPropertey21 = " & strWDPropertey21 & vbCrLf & _

"strWDPropertey22 = " & strWDPropertey22 & vbCrLf & _

"strWDPropertey23 = " & strWDPropertey23 & vbCrLf & _

"strWDPropertey24 = " & strWDPropertey24

 

MsgBox "strWDPropertey25 = " & strWDPropertey25 & vbCrLf & _

"strWDPropertey26 = " & strWDPropertey26 & vbCrLf & _

"strWDPropertey27 = " & strWDPropertey27 & vbCrLf & _

"strWDPropertey28 = " & strWDPropertey28 & vbCrLf & _

"strWDPropertey29 = " & strWDPropertey29 & vbCrLf & _

"strWDPropertey30 = " & strWDPropertey30 & vbCrLf & _

"strWDPropertey31 = " & strWDPropertey31 & vbCrLf & _

"strWDPropertey32 = " & strWDPropertey32 & vbCrLf & _

"strWDPropertey33 = " & strWDPropertey33 & vbCrLf & _

"strWDPropertey34 = " & strWDPropertey34 & vbCrLf & _

"strWDPropertey35 = " & strWDPropertey35 & vbCrLf & _

"strWDPropertey36 = " & strWDPropertey36 & vbCrLf & _

"strWDPropertey37 = " & strWDPropertey37 & vbCrLf & _

"strWDPropertey38 = " & strWDPropertey38 & vbCrLf & _

"strWDPropertey39 = " & strWDPropertey39

 

End Sub

 

 

Dokumenteigenschaften mit Loop ausgeben (ActiveDocument.BuiltInDocumentProperties)

 

'Subroutine ShowBuiltInDocumentProperties loops through the document's BuiltInDocumentProperties collection, displaying the property values in the Debug window.

' Display the active document's built-in properties.

 

Public Sub ShowBuiltInDocumentProperties()

Dim dp As DocumentProperty

On Error Resume Next

For Each dp In ActiveDocument.BuiltInDocumentProperties

   Debug.Print dp.Name & ": ";

   Debug.Print dp.Value

   If Err.Number <> 0 Then

        Debug.Print "??????????"

        Err.Clear

   End If

Next dp

End Sub

 

 

Dokumenteigenschaften auslesen ohne das Dokument zu öffnen

 

 

Sub DokumenteigenschaftAuslesenOhneOeffnen()

Dim strDokument As String

 

strDokument = "C:\Abfall\GO\dlabr4_erfassung_auto_d.dotx"

Set objDatei = GetObject(strDokument)

MsgBox objDatei.BuiltInDocumentProperties.Item(wdPropertyTitle)

'       Wieder schliessen im Hintergrund

objDatei.Close False

Set objDatei = Nothing

End Sub

 

 

 

 

Benutzerdefinierte Einstellungen erhalten

 

Ändern Sie mit Ihren Prozeduren benutzerdefinierte Einstellungen in Word, gehört es zum guten Programmierstil, daß Sie sie nach Beendigung Ihrer Operationen wiederherstellen. Dazu müssen Sie sie speichern, bevor Sie mit deren Modifikation beginnen.

Öffnen Sie in einer Prozedur beispielsweise Dokumente und müssen dafür den Ordner ändern, der auf der Registerkarte Dateiablage im Dialog Optionen für Dokumente eingestellt ist, speichern Sie die aktuelle Einstellung in einer Variablen, um sie nach dem Öffnen aller Dateien, die Sie für Ihre Prozedur benötigen, wiederherstellen zu können.

 

 

Sub DokumenteÖffnen(strDateiname As String)

 

Dim strBenutzerordner As String

Dim dlgÖffnen As Dialog

Dim lngButton As Long

 

On Error GoTo Err_DokumenteÖffnen:

 

strBenutzerordner = Options.DefaultFilePath(wdDocumentsPath)

Documents.Open FileName:=strBenutzerordner & Application.PathSeparator & strDateiname

Exit Sub

 

Err_DokumenteÖffnen:

If MsgBox("Datei konnte im Ornder " & strBenutzerordner & " nicht gefunden werden." & vbCrLf & " Möchten Sie selbst nach der _

   Datei suchen?", vbYesNo) = vbYes Then

   Set dlgFileOpen = Dialogs(wdDialogFileOpen)

   lngButton = dlgFileOpen.Display

   strDateiname = dlgFileOpen.Name

   If lngButton = -1 Then

        Documents.Open FileName:=strDateiname

Options.DefaultFilePath (wdDocumentsPath) = strBenutzerordner

   End If

End If

 

End Sub

 

 

 

Mehrmaliges Wiederholen

 

Word unterstützt das Wiederholen der letzten Aktion. Diese nützliche Funktion, die schnell über die Taste [F4] aufgerufen werden kann, lässt sich durch eine ähnliche Funktion ergänzen, nämlich das mehrmalige Wiederholen eines Arbeitsschritts. Weisen Sie der Prozdur eine Tastenkombination zu, beziehungsweise fügen Sie eine Schaltfläche auf der Symbolleiste ein, ist sie genauso bequem auszuführen wie die eingebaute Funktion.

 

Sub RepeatLastAction()

 

Dim dummy as Variant

 

dummy = InputBox("Anzahl der Wiederholungen", _

   "Wiederholen der letzten Aktion:", 10)

If IsNumeric(dummy) Then

   dummy=CInt(dummy)

   If dummy>0 Then

        Application.Repeat (dummy)

        End if

   End If

 

End Sub

   Die Prozedur zeigt eine Inputbox an, in die die Zahl der Wiederholungen eingetragen werden kann. Als Standardwert gibt die Prozedur den Wert 10 an. Der Wert wird der Methode Repeat als Parameter übergeben.

 

 

 

Steuerzeichen ersetzen

 

   Importieren Sie Text in Word oder auch in eine andere Office-Anwendung, kommt es häufig vor, dass er irgendwelche Steuerzeichen enthält, die Sie nicht in Ihren Dokumenten haben möchten. Um sie zu löschen, können Sie relativ bequem mit dem ASCII-Code arbeiten. Alle Zeichen, die in einem normalen Text vorkommen, liegen nämlich in dem Bereich zwischen 32 und 127. Einzige Ausnahmen sind das Absatzzeichen, der Zeilenumbruch und der Tabulator, die in der Regel nicht gelöscht werden sollen. Sie haben die ASCII-Codes 13, 10 und 9. Folgende Prozedur entfernt alle übrigen Steuerzeichen aus einem Text und ersetzt sie durch ein Leerzeichen:

 

Sub SteuerzeichenErsetzen()

 

Dim lngPosition As Long

Dim intZeichen As Integer

 

   While lngPosition < ActiveDocument.Range.End

        ActiveDocument.Range(Start:=lngPosition, End:=lngPosition + 1) _

           .Select

        intZeichen = Asc(Selection.Text)

        If (intZeichen < 32 Or intZeichen > 127) And intZeichen <> 13 _

           And intZeichen <> 10 And intZeichen <> 9 Then

             Selection.Text = " "

        End If

        lngPosition = lngPosition + 1

   Wend

 

End Sub

 

 

 

Datei mit fortlaufender Nummer speichern

 

   Im Ordner wird eine Datei mit dem gleichen Dateinamen und der Endung ini erstellt, wo die Nummer gespeichert wird. Wird diese Datei manipuliert, kann es zu Fehlern kommen.

 

Sub DateiSpeichern()

Dim Nr%

Dim dName$

Dim Zielordner$, Dateiname$

 

   'Hier den Pfad verändern

   Zielordner = "c:\eigene dateien\"

   'Hier den Dateinamen verändern

   Dateiname = "SichWiederholenderText"

 

   dName = Zielordner & Dateiname & ".ini"

   Close

   On Error Resume Next

   Open dName For Input As #1

   If Err > 0 Then

        Nr = 1

        Close

        Open dName For Output As #1

        Print #1, Nr

        Close

        Exit Sub

   Else

        Input #1, Nr

        Close

        Open dName For Output As #1

        Print #1, Nr + 1

        Close

   End If

   ActiveDocument.SaveAs Zielordner & Dateiname & Nr

End Sub

 

 

 

Datei mit fortlaufender Nummer speichern 2

   oder mit Vornullen aufgefüllt:

 

   'Im Ordner wird eine Datei mit dem gleichen Dateinamen und der Endung ini erstellt,

   ' wo die Nummer gespeichert wird. Wird diese Datei manipuliert, kann es zu Fehlern kommen.

   ' http://home.datacomm.ch/pirmin.steiner/

 

 

Sub DateiMitFortlaufenderNummerSpeichern()

 

Dim Nr As String

Dim dName$

Dim Zielordner$, Dateiname$

 

   'Hier den Pfad verändern

   Zielordner = "C:\TEMP\"

   'Hier den Dateinamen verändern

   Dateiname = "SichWiederholenderDateiname"

 

   dName = Zielordner & Dateiname & ".ini"

   Close

   On Error Resume Next

   Open dName For Input As #1

   If Err > 0 Then

        Nr = 1

        Close

        Open dName For Output As #1

        Print #1, Nr

        Close

        Exit Sub

   Else

        Input #1, Nr

        Close

        Open dName For Output As #1

        Print #1, Nr + 1

        Close

   End If

   Nr = Format(Nr, "000000000")

   ActiveDocument.SaveAs Zielordner & Dateiname & "_" & Nr

End Sub

 

 

 

Dateieigenschaften auslesen

 

   Die Routine TestB schreibt alle Dokumenteneigenschaften in das aktive Dokument, Routine TestC schreibt ein spezifische Dokumenteneigenschaft (nämlich den Autor) heraus.

 

Sub TestB()

   For i = 1 To 30

        With ActiveDocument.BuiltInDocumentProperties(i)

             On Error Resume Next

             Selection.TypeText _

                   Text:=i & vbTab & .Name & vbTab & .Value & vbCrLf

             On Error GoTo 0

        End With

   Next i

   With ActiveDocument.Content.ParagraphFormat

        .TabStops.Add (CentimetersToPoints(1))

        .TabStops.Add (CentimetersToPoints(8))

   End With

End Sub

 

 

Sub TestC()

   Selection.TypeText _

        Text:=ActiveDocument.BuiltInDocumentProperties("Author").Value

End Sub

 

 

 

In INI-File schreiben und wieder daraus lesen

 

 

Public Sub InILesen()

 

Dim strVariabel  As String                      ' Dynamisches Datenfeld deklarieren

 

   strVariabel = "vreneli"                              ' Variabel definieren

 

 

   'Ins INI-File schreiben

 

   System.PrivateProfileString(FileName:="C:\Eigene Dateien\Makro\Makro.ini", _

   Section:="DokMerker", Key:="strVariabel") = strVariabel

 

 

End Sub

 

 

Public Sub InIEinfügen()

 

Dim strVariabel  As String                      ' Dynamisches Datenfeld deklarieren

 

   'Vom INI-File lesen

   strVariabel = System.PrivateProfileString(FileName:="C:\Eigene Dateien\Makro\Makro.ini", _

   Section:="DokMerker", Key:="strVariabel")

 

   Selection.TypeText strVariabel                  ' Variabel in Text einfügen

 

   Selection.TypeParagraph                         ' Zeilenumbruch einfügen

 

End Sub

 

 

 

Ist eine Datei vorhanden:

 

 

Public Sub DateiVorh()

Dim strDateiVorhanden As String

 

Dim Datei1, Pfad1, Name1

   ' Liefert "AnsEinst.ini" (in die Variable strDateiVorhanden), falls die Datei existiert.

   strDateiVorhanden = Dir("C:\AnsEinst.ini")

 

End Sub

 

 

 

OptionenAnsicht in ein INI-File schreiben und wieder daraus lesen:

 

   ' Erstellt 12.05.2001 Pirmin Steiner

   ' Damit die User nach Ablauf der Makros wieder ihre eigenen Einstellungen

   ' haben, habe ich hier ein Makro geschrieben, das die Einstellungen vor

   ' dem Ablauf der Makros in das InI-File "AnsEinst.ini" im Pfad "C:\"

   ' schreibt.

   ' Am Schluss aller Makros werden dann alle Einstellungen wieder zurückgesetzt.

 

 

 

OptionenAnsichtLesen()

 

Dim blnOptAnsHorizBildl As Boolean

Dim blnOptAnsVertikBildl As Boolean

Dim blnOptAnsLeftScroBar As Boolean

Dim sngOptAnsFormatAnsSeit As Single

Dim blnOptAnsRightRuler As Boolean

Dim blnOptAnsQuikInfo As Boolean

Dim blnOptAnsAnimiText As Boolean

Dim blnOptAnsKonzSchrift As Boolean

Dim blnOptAnsFenstrbrUmbr As Boolean

Dim blnOptAnsPlatzhGrafik As Boolean

Dim blnOptAnsFeldfunkt As Boolean

Dim blnOptAnsTextmarkAnz As Boolean

Dim lngOptAnsFeldSchattier As Long

Dim blnOptAnsTabZeichen As Boolean

Dim blnOptAnsLeerZeichen As Boolean

Dim blnOptAnsAbsatzMarken As Boolean

Dim blnOptAnsBedingtTrennz As Boolean

Dim blnOptAnsAusgblText As Boolean

Dim blnOptAnsAlle As Boolean

Dim blnOptAnsZeichnungen As Boolean

Dim blnOptAnsObjektAnker As Boolean

Dim blnOptAnsTextbegre As Boolean

Dim blnOptAnsHervorhebung As Boolean

Dim blnOptDruckFeldfunkt As Boolean

Dim blnOptDruckVerknAkt As Boolean

Dim blnOptDruckFelderAusdr As Boolean

Dim blnOptDruckAusgeblenTxt As Boolean

Dim blnOptDruckZeichnungsobj As Boolean

Dim blnOptDruckUmgekehrtReih As Boolean

Dim strOptDruckSchachtEinst As String

Dim strOptSpeichDatSpeichUnt As String

 

Dim strDateiVorhanden As String

 

   'Abfragen ob die Datei "AnsEinst.ini" existiert

Dim Datei1, Pfad1, Name1

   'Liefert "AnsEinst.ini" (in die Variable strDateiVorhanden), falls die Datei existiert.

   strDateiVorhanden = Dir("C:\AnsEinst.ini")

 

   On Error Resume Next             'Falls mal ein Eintrag im INI-File fehlt.

 

   If strDateiVorhanden = "AnsEinst.ini" Then

 

        '--- Extras Optionen Einstellungen: Ansicht abfragen ---

 

        'Extras Optionen Ansicht 'Horizontale Bildlaufleiste' abfragen

        blnOptAnsHorizBildl = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsHorizBildl") 'Vom INI lesen

Options.Application.ActiveWindow.DisplayHorizontalScrollBar = blnOptAnsHorizBildl 'Ausführen

 

        'Extras Optionen Ansicht 'Vertikale Bildlaufleiste' abfragen

        blnOptAnsVertikBildl = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsVertikBildl")  'Vom INI lesen

Options.Application.ActiveWindow.DisplayVerticalScrollBar = blnOptAnsVertikBildl 'Ausführen

 

        'Extras Optionen Ansicht ???  abfragen

        blnOptAnsLeftScroBar = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsLeftScroBar") 'Vom INI lesen

Options.Application.ActiveWindow.DisplayLeftScrollBar = blnOptAnsLeftScroBar 'Ausführen

 

        'Extras Optionen Ansicht  wird links 2 cm die Formatvorlagen der Zeilen angezeigt

        sngOptAnsFormatAnsSeit = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="sngOptAnsFormatAnsSeit") 'Vom INI lesen

Options.Application.ActiveWindow.StyleAreaWidth = sngOptAnsFormatAnsSeit 'Ausführen

 

        'Wahr, wenn das vertikale Lineal auf der rechten Seite des Dokumentfensters in der Drucklayoutansicht angezeigt wird.

        blnOptAnsRightRuler = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsRightRuler") 'Vom INI lesen

Options.Application.ActiveWindow.DisplayRightRuler = blnOptAnsRightRuler 'Ausführen

 

        'Extras Optionen Ansicht 'QuikInfo' abfragen

        blnOptAnsQuikInfo = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsQuikInfo") 'Vom INI lesen

Options.Application.ActiveWindow.DisplayScreenTips = blnOptAnsQuikInfo 'Ausführen

 

        'Extras Optionen Ansicht 'Animierter Text' abfragen

        blnOptAnsAnimiText = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsAnimiText")  'Vom INI lesen

Options.Application.ActiveWindow.View.ShowAnimation = blnOptAnsAnimiText 'Ausführen

 

        'Extras Optionen Ansicht 'Konzeptschriftart' abfragen

        blnOptAnsKonzSchrift = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsKonzSchrift") 'Vom INI lesen

Options.Application.ActiveWindow.View.Draft = blnOptAnsKonzSchrift 'Ausführen

 

        'Extras Optionen Ansicht 'Auf Fensterbreite umbrechen' abfragen

        blnOptAnsFenstrbrUmbr = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsFenstrbrUmbr")  'Vom INI lesen

Options.Application.ActiveWindow.View.WrapToWindow = blnOptAnsFenstrbrUmbr 'Ausführen

 

        'Extras Optionen Ansicht 'Platzhalter für Grafiken anzeigen' abfragen

        blnOptAnsPlatzhGrafik = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsPlatzhGrafik")  'Vom INI lesen

Options.Application.ActiveWindow.View.ShowPicturePlaceHolders = blnOptAnsPlatzhGrafik 'Ausführen

 

        'Extras Optionen Ansicht 'Feldfunktonen anzeigen' abfragen

        blnOptAnsFeldfunkt = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsFeldfunkt")  'Vom INI lesen

Options.Application.ActiveWindow.View.ShowFieldCodes = blnOptAnsFeldfunkt 'Ausführen

 

        'Extras Optionen Ansicht 'Textmarken anzeigen' abfragen

        blnOptAnsTextmarkAnz = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsTextmarkAnz") 'Vom INI lesen

Options.Application.ActiveWindow.View.ShowBookmarks = blnOptAnsTextmarkAnz 'Ausführen

 

        'Extras Optionen Ansicht 'Bildschirm-Schattierung für Formularfelder' immer abfragen

        lngOptAnsFeldSchattier = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="lngOptAnsFeldSchattier") 'Vom INI lesen

Options.Application.ActiveWindow.View.FieldShading = lngOptAnsFeldSchattier 'Ausführen

 

        'Extras Optionen Ansicht 'Tabstopzeichen'  abfragen

        blnOptAnsTabZeichen = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsTabZeichen") 'Vom INI lesen

Options.Application.ActiveWindow.View.ShowTabs = blnOptAnsTabZeichen 'Ausführen

 

        'Extras Optionen Ansicht 'Leerzeichen'  abfragen

        blnOptAnsLeerZeichen = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsLeerZeichen") 'Vom INI lesen

Options.Application.ActiveWindow.View.ShowSpaces = blnOptAnsLeerZeichen 'Ausführen

 

        'Extras Optionen Ansicht 'Absatzmarken' abfragen

        blnOptAnsAbsatzMarken = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsAbsatzMarken") 'Vom INI lesen

Options.Application.ActiveWindow.View.ShowParagraphs = blnOptAnsAbsatzMarken 'Ausführen

 

        'Extras Optionen Ansicht 'Bedingte Trennzeichen' abfragen

        blnOptAnsBedingtTrennz = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsBedingtTrennz")  'Vom INI lesen

Options.Application.ActiveWindow.View.ShowHyphens = blnOptAnsBedingtTrennz 'Ausführen

 

        'Extras Optionen Ansicht 'Ausgeblendeten Text' abfragen

        blnOptAnsAusgblText = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsAusgblText")  'Vom INI lesen

Options.Application.ActiveWindow.View.ShowHiddenText = blnOptAnsAusgblText 'Ausführen

 

        'Extras Optionen Ansicht 'ALLE' abfragen

        blnOptAnsAlle = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsAlle") 'Vom INI lesen

Options.Application.ActiveWindow.View.ShowAll = blnOptAnsAlle 'Ausführen

 

        'Extras Optionen Ansicht 'Zeichnungen' abfragen

        blnOptAnsZeichnungen = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsZeichnungen")  'Vom INI lesen

Options.Application.ActiveWindow.View.ShowDrawings = blnOptAnsZeichnungen 'Ausführen

 

        'Extras Optionen Ansicht 'Objektanker' abfragen

        blnOptAnsObjektAnker = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsObjektAnker")  'Vom INI lesen

Options.Application.ActiveWindow.View.ShowObjectAnchors = blnOptAnsObjektAnker 'Ausführen

 

        'Extras Optionen Ansicht 'Textbegrenzungen' abfragen

        blnOptAnsTextbegre = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsTextbegre")  'Vom INI lesen

Options.Application.ActiveWindow.View.ShowTextBoundaries = blnOptAnsTextbegre 'Ausführen

 

        'Extras Optionen Ansicht 'Hervorhebungen'  abfragen

        blnOptAnsHervorhebung = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptAnsHervorhebung")  'Vom INI lesen

Options.Application.ActiveWindow.View.ShowHighlight = blnOptAnsHervorhebung 'Ausführen

 

        '--- Extras Optionen Einstellungen: Drucken abfragen ---

 

        'Extras Optionen Drucken 'Felder aktualisieren' abfragen

        blnOptDruckFeldfunkt = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptDruckFeldfunkt")  'Vom INI lesen

Options.UpdateFieldsAtPrint = blnOptDruckFeldfunkt 'Ausführen

 

        'Extras Optionen Drucken 'Verknüpfungen aktualisieren' abfragen

        blnOptDruckVerknAkt = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptDruckVerknAkt")  'Vom INI lesen

Options.UpdateFieldsAtPrint = blnOptDruckVerknAkt 'Ausführen

 

        'Extras Optionen Drucken 'Feldfunktionen drucken' abfragen

        blnOptDruckFelderAusdr = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptDruckFelderAusdr")  'Vom INI lesen

Options.UpdateFieldsAtPrint = blnOptDruckFelderAusdr 'Ausführen

 

        'Extras Optionen Drucken 'Ausgeblendeter Text drucken' abfragen

        blnOptDruckAusgeblenTxt = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptDruckAusgeblenTxt")  'Vom INI lesen

Options.UpdateFieldsAtPrint = blnOptDruckAusgeblenTxt 'Ausführen

 

        'Extras Optionen Drucken 'Zeichnungsobjekte drucken' abfragen

        blnOptDruckZeichnungsobj = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptDruckZeichnungsobj")  'Vom INI lesen

Options.UpdateFieldsAtPrint = blnOptDruckZeichnungsobj 'Ausführen

 

        'Extras Optionen Drucken 'Drucken umgekehrter Reihenfolge' abfragen

        blnOptDruckUmgekehrtReih = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="blnOptDruckUmgekehrtReih")  'Vom INI lesen

Options.UpdateFieldsAtPrint = blnOptDruckUmgekehrtReih 'Ausführen

 

        'Extras Optionen Drucken 'Standardschacht'  abfragen

        strOptDruckSchachtEinst = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="strOptDruckSchachtEinst")  'Vom INI lesen

Options.DefaultTray = strOptDruckSchachtEinst 'Ausführen

 

        '--- Extras Optionen Einstellungen: abfragen ---

 

        'Optionen Speichern 'Word-Dateien speichern unter' abfragen

        strOptSpeichDatSpeichUnt = System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

           Section:="WordAnsichtEinstellung", Key:="strOptSpeichDatSpeichUnt")  'Vom INI lesen

Options.Application.DefaultSaveFormat = strOptSpeichDatSpeichUnt 'Ausführen

 

 

   End If

End Sub

 

 

 

OptionenAnsichtSchreiben()

 

Dim blnOptAnsHorizBildl As Boolean

Dim blnOptAnsVertikBildl As Boolean

Dim blnOptAnsLeftScroBar As Boolean

Dim sngOptAnsFormatAnsSeit As Single

Dim blnOptAnsRightRuler As Boolean

Dim blnOptAnsQuikInfo As Boolean

Dim blnOptAnsAnimiText As Boolean

Dim blnOptAnsKonzSchrift As Boolean

Dim blnOptAnsFenstrbrUmbr As Boolean

Dim blnOptAnsPlatzhGrafik As Boolean

Dim blnOptAnsFeldfunkt As Boolean

Dim blnOptAnsTextmarkAnz As Boolean

Dim lngOptAnsFeldSchattier As Long

Dim blnOptAnsTabZeichen As Boolean

Dim blnOptAnsLeerZeichen As Boolean

Dim blnOptAnsAbsatzMarken As Boolean

Dim blnOptAnsBedingtTrennz As Boolean

Dim blnOptAnsAusgblText As Boolean

Dim blnOptAnsAlle As Boolean

Dim blnOptAnsZeichnungen As Boolean

Dim blnOptAnsObjektAnker As Boolean

Dim blnOptAnsTextbegre As Boolean

Dim blnOptAnsHervorhebung As Boolean

Dim blnOptDruckFeldfunkt As Boolean

Dim blnOptDruckVerknAkt As Boolean

Dim blnOptDruckFelderAusdr As Boolean

Dim blnOptDruckAusgeblenTxt As Boolean

Dim blnOptDruckZeichnungsobj As Boolean

Dim blnOptDruckUmgekehrtReih As Boolean

Dim strOptDruckSchachtEinst As String

Dim strOptSpeichDatSpeichUnt As String

 

   On Error Resume Next             'Falls mal ein Eintrag im Word fehlt.

 

   '--- Extras Optionen Einstellungen: Ansicht ins INI schreiben ---

 

   'Extras Optionen Ansicht 'Horizontale Bildlaufleiste' abfragen

   blnOptAnsHorizBildl = Options.Application.ActiveWindow.DisplayHorizontalScrollBar

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsHorizBildl") = blnOptAnsHorizBildl 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Vertikale Bildlaufleiste' abfragen

   blnOptAnsVertikBildl = Options.Application.ActiveWindow.DisplayVerticalScrollBar

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsVertikBildl") = blnOptAnsVertikBildl 'Ins INI schreiben

 

   'Extras Optionen Ansicht ???  abfragen

   blnOptAnsLeftScroBar = Options.Application.ActiveWindow.DisplayLeftScrollBar

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsLeftScroBar") = blnOptAnsLeftScroBar 'Ins INI schreiben

 

   'Extras Optionen Ansicht  wird links 2 cm die Formatvorlagen der Zeilen angezeigt

   sngOptAnsFormatAnsSeit = Options.Application.ActiveWindow.StyleAreaWidth

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="sngOptAnsFormatAnsSeit") = sngOptAnsFormatAnsSeit 'Ins INI schreiben

 

   'Wahr, wenn das vertikale Lineal auf der rechten Seite des Dokumentfensters in der Drucklayoutansicht angezeigt wird.

   blnOptAnsRightRuler = Options.Application.ActiveWindow.DisplayRightRuler

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsRightRuler") = blnOptAnsRightRuler 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'QuikInfo' abfragen

   blnOptAnsQuikInfo = Options.Application.ActiveWindow.DisplayScreenTips

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsQuikInfo") = blnOptAnsQuikInfo 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Animierter Text' abfragen

   blnOptAnsAnimiText = Options.Application.ActiveWindow.View.ShowAnimation

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsAnimiText") = blnOptAnsAnimiText 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Konzeptschriftart' abfragen

   blnOptAnsKonzSchrift = Options.Application.ActiveWindow.View.Draft

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsKonzSchrift") = blnOptAnsKonzSchrift 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Auf Fensterbreite umbrechen' abfragen

   blnOptAnsFenstrbrUmbr = Options.Application.ActiveWindow.View.WrapToWindow

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsFenstrbrUmbr") = blnOptAnsFenstrbrUmbr 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Platzhalter für Grafiken anzeigen' abfragen

   blnOptAnsPlatzhGrafik = Options.Application.ActiveWindow.View.ShowPicturePlaceHolders

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsPlatzhGrafik") = blnOptAnsPlatzhGrafik 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Feldfunktonen anzeigen' abfragen

   blnOptAnsFeldfunkt = Options.Application.ActiveWindow.View.ShowFieldCodes

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsFeldfunkt") = blnOptAnsFeldfunkt 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Textmarken anzeigen' abfragen

   blnOptAnsTextmarkAnz = Options.Application.ActiveWindow.View.ShowBookmarks

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsTextmarkAnz") = blnOptAnsTextmarkAnz 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Bildschirm-Schattierung für Formularfelder' immer abfragen

   lngOptAnsFeldSchattier = Options.Application.ActiveWindow.View.FieldShading

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="lngOptAnsFeldSchattier") = lngOptAnsFeldSchattier 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Tabstopzeichen'  abfragen

   blnOptAnsTabZeichen = Options.Application.ActiveWindow.View.ShowTabs

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsTabZeichen") = blnOptAnsTabZeichen 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Leerzeichen'  abfragen

   blnOptAnsLeerZeichen = Options.Application.ActiveWindow.View.ShowSpaces

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsLeerZeichen") = blnOptAnsLeerZeichen 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Absatzmarken' abfragen

   blnOptAnsAbsatzMarken = Options.Application.ActiveWindow.View.ShowParagraphs

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsAbsatzMarken") = blnOptAnsAbsatzMarken 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Bedingte Trennzeichen' abfragen

   blnOptAnsBedingtTrennz = Options.Application.ActiveWindow.View.ShowHyphens

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsBedingtTrennz") = blnOptAnsBedingtTrennz 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Ausgeblendeten Text' abfragen

   blnOptAnsAusgblText = Options.Application.ActiveWindow.View.ShowHiddenText

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsAusgblText") = blnOptAnsAusgblText 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'ALLE' abfragen

   blnOptAnsAlle = Options.Application.ActiveWindow.View.ShowAll

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsAlle") = blnOptAnsAlle 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Zeichnungen' abfragen

   blnOptAnsZeichnungen = Options.Application.ActiveWindow.View.ShowDrawings

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsZeichnungen") = blnOptAnsZeichnungen 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Objektanker' abfragen

   blnOptAnsObjektAnker = Options.Application.ActiveWindow.View.ShowObjectAnchors

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsObjektAnker") = blnOptAnsObjektAnker 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Textbegrenzungen' abfragen

   blnOptAnsTextbegre = Options.Application.ActiveWindow.View.ShowTextBoundaries

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsTextbegre") = blnOptAnsTextbegre 'Ins INI schreiben

 

   'Extras Optionen Ansicht 'Hervorhebungen'  abfragen

   blnOptAnsHervorhebung = Options.Application.ActiveWindow.View.ShowHighlight

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptAnsHervorhebung") = blnOptAnsHervorhebung 'Ins INI schreiben

 

   '--- Extras Optionen Einstellungen: Drucken ins INI schreiben ---

 

   'Extras Optionen Drucken 'Felder aktualisieren' abfragen

   blnOptDruckFeldfunkt = Options.UpdateFieldsAtPrint

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptDruckFeldfunkt") = blnOptDruckFeldfunkt 'Ins INI schreiben

 

   'Extras Optionen Drucken 'Verknüpfungen aktualisieren' abfragen

   blnOptDruckVerknAkt = Options.UpdateFieldsAtPrint

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptDruckVerknAkt") = blnOptDruckVerknAkt 'Ins INI schreiben

 

   'Extras Optionen Drucken 'Feldfunktionen drucken' abfragen

   blnOptDruckFelderAusdr = Options.UpdateFieldsAtPrint

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptDruckFelderAusdr") = blnOptDruckFelderAusdr 'Ins INI schreiben

 

   'Extras Optionen Drucken 'Ausgeblendeter Text drucken' abfragen

   blnOptDruckAusgeblenTxt = Options.UpdateFieldsAtPrint

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptDruckAusgeblenTxt") = blnOptDruckAusgeblenTxt 'Ins INI schreiben

 

   'Extras Optionen Drucken 'Zeichnungsobjekte drucken' abfragen

   blnOptDruckZeichnungsobj = Options.UpdateFieldsAtPrint

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptDruckZeichnungsobj") = blnOptDruckZeichnungsobj 'Ins INI schreiben

 

   'Extras Optionen Drucken 'Drucken umgekehrter Reihenfolge' abfragen

   blnOptDruckUmgekehrtReih = Options.UpdateFieldsAtPrint

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="blnOptDruckUmgekehrtReih") = blnOptDruckUmgekehrtReih 'Ins INI schreiben

 

   'Extras Optionen Drucken 'Standardschacht' abfragen

   strOptDruckSchachtEinst = Options.DefaultTray

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="strOptDruckSchachtEinst") = strOptDruckSchachtEinst 'Ins INI schreiben

 

   '--- Extras Optionen Einstellungen: abfragen ---

 

   'Optionen Speichern 'Word-Dateien speichern unter' einstellen

   strOptSpeichDatSpeichUnt = Options.Application.DefaultSaveFormat

   System.PrivateProfileString(FileName:="C:\AnsEinst.ini", _

   Section:="WordAnsichtEinstellung", Key:="strOptSpeichDatSpeichUnt") = strOptSpeichDatSpeichUnt 'Ins INI schreiben

 

End Sub

 

 

 

Public Sub OptionenAnsichtEinstellung()

 

   On Error Resume Next             'Falls mal ein Eintrag im Word fehlt.

 

   '--- Extras Optionen Einstellungen: Ansicht ---

 

   'Extras Optionen Ansicht 'Horizontale Bildlaufleiste' aktivieren

Options.Application.ActiveWindow.DisplayHorizontalScrollBar = True

 

   'Extras Optionen Ansicht 'Vertikale Bildlaufleiste' aktivieren

Options.Application.ActiveWindow.DisplayVerticalScrollBar = True

 

   'Extras Optionen Ansicht ???  aktivieren

   'Options.Application.ActiveWindow.DisplayLeftScrollBar = True

 

   'Extras Optionen Ansicht  wird links 0 cm die Formatvorlagen der Zeilen angezeigt

   'Options.Application.ActiveWindow.StyleAreaWidth = CentimetersToPoints(0)

 

   'Wahr, wenn das vertikale Lineal auf der rechten Seite des Dokumentfensters in der Drucklayoutansicht angezeigt wird.

Options.Application.ActiveWindow.DisplayRightRuler = True

 

   'Extras Optionen Ansicht 'QuikInfo' aktivieren

Options.Application.ActiveWindow.DisplayScreenTips = True

 

   'Extras Optionen Ansicht 'Animierter Text' aktivieren

Options.Application.ActiveWindow.View.ShowAnimation = True

 

   'Extras Optionen Ansicht 'Konzeptschriftart' aktivieren

Options.Application.ActiveWindow.View.Draft = False

 

   'Extras Optionen Ansicht 'Auf Fensterbreite umbrechen' aktivieren

Options.Application.ActiveWindow.View.WrapToWindow = False

 

   'Extras Optionen Ansicht 'Platzhalter für Grafiken anzeigen' aktivieren

Options.Application.ActiveWindow.View.ShowPicturePlaceHolders = False

 

   'Extras Optionen Ansicht 'Feldfunktonen anzeigen' aktivieren

Options.Application.ActiveWindow.View.ShowFieldCodes = False

 

   'Extras Optionen Ansicht 'Textmarken anzeigen' aktivieren

Options.Application.ActiveWindow.View.ShowBookmarks = True

 

   'Extras Optionen Ansicht 'Bildschirm-Schattierung für Formularfelder' immer aktivieren

Options.Application.ActiveWindow.View.FieldShading = wdFieldShadingAlways

 

   'Extras Optionen Ansicht 'Tabstopzeichen'  aktivieren

Options.Application.ActiveWindow.View.ShowTabs = True

 

   'Extras Optionen Ansicht 'Leerzeichen'  aktivieren

Options.Application.ActiveWindow.View.ShowSpaces = True

 

   'Extras Optionen Ansicht 'Absatzmarken' aktivieren

Options.Application.ActiveWindow.View.ShowParagraphs = True

 

   'Extras Optionen Ansicht 'Bedingte Trennzeichen' aktivieren

Options.Application.ActiveWindow.View.ShowHyphens = True

 

   'Extras Optionen Ansicht 'Ausgeblendeten Text' aktivieren

Options.Application.ActiveWindow.View.ShowHiddenText = True

 

   'Extras Optionen Ansicht 'ALLE' aktivieren

Options.Application.ActiveWindow.View.ShowAll = True

 

   'Extras Optionen Ansicht 'Zeichnungen' aktivieren

Options.Application.ActiveWindow.View.ShowDrawings = True

 

   'Extras Optionen Ansicht 'Objektanker' aktivieren

Options.Application.ActiveWindow.View.ShowObjectAnchors = True

 

   'Extras Optionen Ansicht 'Textbegrenzungen' aktivieren

Options.Application.ActiveWindow.View.ShowTextBoundaries = True

 

   'Extras Optionen Ansicht 'Hervorhebungen'  aktivieren

Options.Application.ActiveWindow.View.ShowHighlight = True

 

   '--- Extras Optionen Einstellungen: Drucken ---

 

   'Optionen Drucken 'Felder aktualisieren'  aktivieren

Options.UpdateFieldsAtPrint = True

 

   'Optionen Drucken 'Verknüpfungen aktualisieren'  aktivieren

Options.UpdateLinksAtPrint = True

 

   'Optionen Drucken 'Feldfunktionen drucken'  aktivieren

Options.PrintFieldCodes = False

 

   'Optionen Drucken 'Ausgeblendeter Text drucken'  aktivieren

Options.PrintHiddenText = False

 

   'Optionen Drucken 'Zeichnungsobjekte drucken'  aktivieren

Options.PrintDrawingObjects = True

 

   'Optionen Drucken 'Drucken umgekehrter Reihenfolge'  aktivieren

Options.PrintReverse = False

 

   'Optionen Drucken 'Standardschacht' einstellen

Options.DefaultTray = "Druckereinstellungen verwenden"

 

   '--- Extras Optionen Einstellungen: Speichern ---

 

   'Optionen Speichern 'Word-Dateien speichern unter' einstellen

Options.Application.DefaultSaveFormat = ""

 

End Sub

 

 

 

Im Add-Ins überprüfen ob das generali.dot installiert ist.

 

 

Sub GlobaleVorlageInstalliert()

   For Each ad In AddIns

        If ad.Installed = True Then

             If ad.Name = "generali.dot" Then

                MsgBox ad.Name & " ist installiert"

             End If

        End If

   Next ad

End Sub

 

 

   oder

 

 

Sub AddInInstalliert()

   'Feststellen, ob AddIn installiert ist

   If AddIns("Generali.dotm").Installed = True Then

        MsgBox "Generali.dotm add-in is installed"

   Else

        MsgBox "Generali.dotm add-in is not installed"

   End If

End Sub

 

 

Makro aus Makro ausführen.

 

   ' Aufruf des Makros 'Kind' aus diesem Makro heraus.

 

Public Sub Mutter()

   WordBasic.MsgBox "Dies ist das Makro 'Mutter' vor dem ExtrasAusführen."

   WordBasic.ToolsMacro Name:="Kind", Run:=1

   WordBasic.MsgBox "Dies ist das Makro 'Mutter' nach dem ExtrasAusführen."

End Sub

 

   ' Dieses Makro wird aus dem Makro Mutter aufgerufen

 

Public Sub Kind()

   WordBasic.MsgBox "Dies ist das Makro Kind."

End Sub

 

 

 

Text gespiegelt wiedergeben

 

   ' Markierter Text in Variable einlesen und gespiegelt wieder einfühgen.

 

Sub Spiegeln()

   If Selection.Type <> wdSelectionNormal Then

        MsgBox "Es ist kein Text markiert."

        End

   End If

   For i = Len(Selection.Text) To 1 Step -1

        strT = strT & Mid(Selection.Text, i, 1)

   Next i

   Selection.Text = strT

End Sub

 

 

 

Suchen ob es das Wort im Dokument gibt

 

 

Public Sub IstWortVorhanden()

   Set myRange = ActiveDocument.Content

   myRange.Find.Execute FindText:="100stel", Forward:=True

   If myRange.Find.Found = True Then

        MsgBox "gefunden"

   Else

        MsgBox "nicht gefunden"

   End If

End Sub

 

 

 

Abfragen ob eine Frage mit Ja oder nein beantwortet wurde.

 

 

Public Sub AbfragenJaNein()

Dim intFrageDrucken As Integer

   intFrageDrucken = MsgBox("Soll das Dokument mit den aufgelisteten Modulen ausgedruckt werden ?", vbYesNo + vbQuestion, _

   " Module Drucken ...")

   If intFrageDrucken = 6 Then

        MsgBox "Das Dokument wird jetzt gedruckt"

   End If

   If intFrageDrucken = 7 Then

        MsgBox "Das Dokument wird nicht ausgedruckt!"

   End If

End Sub

 

 

 

Subrutine aus einer Prozedur aufrufen.

 

   ' Erstellt 18.07.2001 Pirmin Steiner

   ' Beispiel wie aus einer Prozedur eine Unterfunktion

   ' aufgerufen werden kann. Nach der Unterfunktion wird

   ' die laufende Prozedur zuende gelaufen.

 

Sub SubrutineAufrufen()

   Selection.TypeText Text:="Die ist ein Text."

Subrutine     'Unterfunktion aufrufen

End Sub

 

Private Sub Subrutine()

   MsgBox "Diese ist die Subrutine von der Prozedur SubrutineAufrufen."

End Sub

 

 

 

Word Assistent aufrufen mit Text

 

   ' Jedoch nicht fertig getestet (enthält diverse Variablen?!)

 

Public Sub Assistent()

   'Private Function BlaseAnzeigen()

   Set oBlase = Assistant.NewBalloon

   With oBlase

        .Mode = msoModeModal

        .BalloonType = msoBalloonTypeButtons

        .Icon = msoIconTip

        .Heading = asTitle & "   (DO/stp)"

        tmp = "Diese Routine druckt alle Module einer Dokumentenvorlage oder eines "

        tmp = tmp & "Dokumentes." & vbCrLf & vbCrLf & "Als erstes werden Sie "

        .Text = tmp & "aufgefordert, eine Vorlage oder ein Dokument zu öffnen."

        .Button = msoButtonSetOkCancel

        BlaseAnzeigen = .Show

   End With

   'End Function

End Sub

 

 

 

Default Printer einstellen und abrufen:

 

 

Sub Makro1()

   ' Gibt mit MsgBox den aktuell eingestellten Printer aus.

   MsgBox "The name of the active printer is " & ActivePrinter

 

   ' Stellt den Standardprinter ein.

   ActivePrinter = ""

 

   ' Gibt mit MsgBox den aktuell eingestellten Printer aus.

   MsgBox "The name of the active printer is " & ActivePrinter

End Sub

 

 

 

Textmarkeninhalt auswerten

 

 

Sub WertTextmarkeAbFragen()

Dim strSysEditLesen As String

   'Ist die Textmarke SysEdit vorhanden...

   If ActiveDocument.Bookmarks.Exists("SysEdit") = True Then

     'Textmarkeninhalt in Variable lesen

     strSysEditLesen = ActiveDocument.Bookmarks("SysEdit").Range.Text

     If strSysEditLesen = "1" Then

        MsgBox "Der Inhalt der Textmarke ist: " & strSysEditLesen & " !"

     End If

   End If

End Sub

 

 

 

AddIns anhängen und abhängen

 

 

Sub AddInsAnhängen()

   ' AddIns anhängen......

   AddIns("C:\pgm\autotext.dot").Installed = True

   With ActiveDocument

        .UpdateStylesOnOpen = False

        .AttachedTemplate = "Normal"

   End With

End Sub

 

Sub AddInsAbhängen()

   '   AddIns abhängen......

   AddIns("C:\pgm\autotext.dot").Installed = False

   With ActiveDocument

        .UpdateStylesOnOpen = False

        .AttachedTemplate = "Normal"

   End With

End Sub

 

 

 

Add Ins Anzeigen

 

   For Each aAddIn In AddIns

        MsgBox aAddIn.Name

   Next aAddIn

 

 

 

Anhängen und oder Abhängen der AddIn

 

 

Sub AutoTexte()

   ' Erstellt 31.08.2001 DO/stp

   ' Anhängen oder Abhängen der AddIn Autotext.dot

   '

Dim strAutoText As String

   For Each ad In AddIns

        If ad.Installed = True Then

             If ad.Name = "autotext.dot" Then

                strAutoText = 1

             Else

                strAutoText = 0

             End If

        End If

   Next ad

   If strAutoText = 0 Then

        '   AddIns anhängen......

        AddIns("C:\pgm\autotext.dot").Installed = True

        With ActiveDocument

             .UpdateStylesOnOpen = False

             .AttachedTemplate = "Normal"

        End With

   End If

   If strAutoText = 1 Then

        '   AddIns abhängen......

        AddIns("C:\pgm\autotext.dot").Installed = False

        With ActiveDocument

             .UpdateStylesOnOpen = False

             .AttachedTemplate = "Normal"

        End With

   End If

End Sub

 

 

 

Ein Programm starten

 

 

Public Sub Programmstarten()

Dim Ergebnis

   Ergebnis = Shell("C:\WINNT\system32\CALC.EXE", 1)    ' Rechner starten.

End Sub

 

 

 

Fensteransichten bei Word

 

   'Hier wird das aktive Fenster maximiert, wenn es

   'vollbild hat.

   If ActiveDocument.ActiveWindow _

        .WindowState = wdWindowStateMaximize Then _

§ActiveDocument.ActiveWindow.WindowState = wdWindowStateNormal

 

   'Hier wird das aktive Fenster maximiert, wenn es minimiert ist.

   If ActiveDocument.ActiveWindow _

        .WindowState = wdWindowStateMinimize Then _

§ActiveDocument.ActiveWindow.WindowState = wdWindowStateNormal

 

 

 

Auf welcher Seite steht der Coursor

 

   ' Erstellt 06.08.2001 DO/stp

   ' Gibt eine MsgBox heraus auf welcher Seite der Cursor steht.

   ' Bei einer Markierung wird der Schluss der Markierung angegeben.

 

 

Sub SeiteWelche()

   MsgBox "Die selektierte Seite ist die " & Selection.Information(wdActiveEndPageNumber) & ". von gesammt " _

        & Selection.Information(wdNumberOfPagesInDocument) & " Seiten."

End Sub

 

 

 

Seitennummer in Variable

 

   ' Erstellt 06.08.2001 DO/stp

   ' Die Seitennummer wird in die Variable SeitenNummervar abgefüllt.

 

 

Public Sub SeitenNrInVariable()

Dim SeitenNummervar As Variant

   SeitenNummervar = Selection.Information(wdActiveEndPageNumber)

End Sub

 

 

 

Beginn Seite X

 

 

Public Sub BeginnSeite()

Dim SeitenNummervar As Variant

   SeitenNummervar = Selection.Information(wdActiveEndPageNumber)            'Welche Seite ist der Corusor

   Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:=SeitenNummervar 'Auf Beginn dieser Seite springen

End Sub

 

 

 

Makro nach einer Gewissen Zeit laufen lassen

 

   ' Es kann in einem Projekt ein Makro aufgerufen werden und dieses erst nach einer gewissen Zeit laufen gelassen werden.

   ' Hier wird ein Makro aufgerufen und dieses erst nach 6 Sekunden laufen gelassen.

 

   Application.OnTime When:=Now + TimeValue("00:00:06"), _

        Name:="TemplateProject.OptionenAnsichtLesen.OptionenAnsichtLesen"

 

 

 

Ist ein Dokument im Word offen?

 

 

Public Sub TestOptionen()

   ' Ist minimum ein Fenster in Word aktiv.

   If Documents.Count >= 1 Then

        MsgBox ActiveDocument.Name '

   Else

        '   Anderenfalls wird zuerst ein leeres Dokument geöffnte und danach

        '   wieder geschlossen.

        MsgBox "Es ist kein Dokument geöffnet."

        Documents.Add DocumentType:=wdNewBlankDocument

        MsgBox "Es ist jetzt ein neues Dokument geöffnet." & " " & vbLf & "Der Name ist " & ActiveDocument.Name

        ActiveDocument.Close

   End If

End Sub

 

 

 

Fenster nach Namen Aktivieren

 

 

Public Sub FensterNachNamenAktivieren()

Dim strDocName As String

   'Dokumentnamen in Variable lesen

   strDocName = ActiveDocument.Name

   Documents(strDocName).Activate

   '***********************************************************************

   'Hier wird das aktive Fenster minimiert, wenn es vollbild hat.

   If Documents(strDocName).ActiveWindow.WindowState = wdWindowStateMaximize Then _

   Documents(strDocName).ActiveWindow.WindowState = wdWindowStateMinimize

 

   'Hier wird das aktive Fenster minimiert, wenn es maximiert ist.

   If Documents(strDocName).ActiveWindow.WindowState = wdWindowStateNormal Then _

   Documents(strDocName).ActiveWindow.WindowState = wdWindowStateMinimize

   '***********************************************************************

End Sub

 

 

 

Ist die Seitenvorschau aktiv?

 

   If PrintPreview = True Then

        ActiveDocument.ClosePrintPreview

   End If

 

 

 

DokumentNamen / oder Variable auf count Anzahl erweitern

 

 

Public Sub DocListe()

Dim intDocZähler As Integer                      'Zälervarable als Integer festlegen.

Dim strDateiname() As String                   'Anzahl der Variablen auf 10 festlegen

   ReDim strDateiname(10)                                  ' Größe auf 100 Elemente ändern.

   ' So kann eine Variable mit einer Nummer versehen werden und damit muss diese nur einmal geschrieben werden.

   intDocZähler = Documents.Count                   'Variablenwert definieren

   For Each aDoc In Documents

        aName = aDoc.Name

        Count = Count + 1                            'Counter angeben mit welchem wert gezählt wird

        a = Count

        strDateiname(a) = aName

 

        '   Hier wird ins UserEinstellungen.ini eingetragen welche Dokumente

        '   der User geöffnet hat.

        System.PrivateProfileString(FileName:="C:\UserEinstellungen.ini", _

           Section:="WordAnsichtDokumentfenster", Key:="strDateiname" & a) = strDateiname(a) 'Ins INI schreiben

   Next aDoc

   '   Hier wird

End Sub

 

   Kommt von:

 

Public Sub DocsListe()

   For Each aDoc In Documents

        aName = aDoc.Name

        '    MsgBox aName

   Next aDoc

End Sub

 

 

 

Dateien in einem Ordner alle Löschen

 

 

Public Sub DateienTempLöschen()

   On Error GoTo Ende:                   'Falls mal alle Dateien schon gelöscht sind.

   ChangeFileOpenDirectory "C:\temp\"

   Kill "*.*"                            ' Alle Dateien löschen

   Ende:

End Sub

 

 

 

Installierte Schriftarten

 

   'Listet die installierten Schriftarten in einem Dokument auf.

 

Public Sub SchriftartenListe()

   Documents.Add

   For Each dieseSchriftart In FontNames

        With Selection

             .InsertAfter dieseSchriftart & vbCr

             .MoveUp Unit:=wdParagraph, Count:=1

             .MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend

             .Font.Name = dieseSchriftart

             .MoveDown Unit:=wdParagraph, Count:=1

        End With

   Next

End Sub

 

 

 

Windows Tips holen in eine Variable

 

 

Sub WinTipsHolen()

Dim Tip As String, TipNr As Integer

 

   Documents.Add

   Do

        Tip = System.PrivateProfileString("", "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Tips", LTrim$(Str$(TipNr)))

        If Tip > "" Then

             Selection.InsertAfter Format(TipNr, _

                   "00: ") & Tip & Chr$(13)

             TipNr = TipNr + 1

        End If

   Loop While Tip > ""

   Selection.Collapse _

        Direction:=wdCollapseEnd

End Sub

 

 

 

Ist eine Textmarke vorhanden

 

   If ActiveDocument.Bookmarks.Exists("SysPolice") = True Then

        Application.Run "ProjectGenerali.VorDemDruckenPolice.VorDemDruckenPolice"                  ' Modul ausführen

   End If

 

 

 

Office Assistent Sichtbar und Animieren

 

 

Sub AssistentSichtbarMachen()

   'Macht den Office Assistent Sichtbar und Animiert diesen.

   With Application.Assistant

        .Visible = True

        .Sounds = True

        .Animation = msoAnimationBeginSpeaking

   End With

End Sub

 

 

 

Word Ausblenden oder Einblenden

 

 

Public Sub WordAusblenden()

   'Mit diesem Befehl kann Word ausgeblendet (False) oder wieder

   'eingeblendet werden.

   Application.Visible = True

End Sub

 

 

 

Datum Rechnen

 

 

Private Sub DatumRechnen()

   ' DateDiff-Funktion (Beispiel)

   ' In diesem Beispiel wird die DateDiff-Funktion verwendet,

   ' um die Anzahl von Tagen, die zwischen einem vorgegebenen Datum

   ' und dem heutigen Tag liegen, anzuzeigen.

Dim Datum1 As Date    ' Variablen deklarieren.

Dim Msg

   Datum1 = InputBox("Geben Sie ein Datum ein")

   Msg = "Tage von heute an: " & DateDiff("d", Now, Datum1)

   MsgBox Msg

End Sub

 

 

 

Datumsformat definieren

 

Dim Datum1, Datum2, Datum3

   Datum1 = Date    ' Datum zuweisen.

   Datum2 = Date    ' Datum zuweisen.

   Datum3 = Date    ' Datum zuweisen.

   Jahr1 = Year(Datum1)

   Monat1 = Month(Datum2)

   Tag1 = Day(Datum3)

   '

   Monat1 = Format(Monat1, "00")

   Tag1 = Format(Tag1, "00")

   '

Dim Zeit1, Zeit2, Zeit3

   Zeit1 = Time    ' Zeitangabe zuweisen.

   Zeit2 = Time    ' Zeitangabe zuweisen.

   Zeit3 = Time    ' Zeitangabe zuweisen.

   Stunde1 = Hour(Zeit1)

   Minute1 = Minute(Zeit2)

   Sekunde1 = Second(Zeit3)

   '

   Stunde1 = Format(Stunde1, "00")

   Minute1 = Format(Minute1, "00")

   Sekunde1 = Format(Sekunde1, "00")

 

 

 

Zufalls Zahl generieren

 

 

Public Sub ZufallZahl()

   ' Rnd-Funktion (Beispiel)

   ' In diesem Beispiel wird die Rnd-Funktion verwendet,

   ' um eine zufällige ganze Zahl im Bereich von 1 bis 12 zu generieren.

Dim Wert1

   Wert1 = Int((12 * Rnd) + 1)    ' Zufallszahl im Bereich von 1 bis 6

   ' generieren.

End Sub

 

 

 

Dateien suchen und auflisten

 

 

Public Sub DateiSuchenAuflist()

   ' Sucht in einem vorgegebenen Verzeichnis nach Dateien und listete diese

   ' in einer MsbBox den Vollen Namen inkl. Pfad der Datei aus.

   Set fs = Application.FileSearch

   With fs

        .LookIn = "C:\Aabfalltest"

        .FileName = "*.dot"

        If .Execute > 0 Then

             MsgBox "There were " & .FoundFiles.Count & " file(s) found."     'Hier wird angegeben wievile Datein gefunden wurden.

             For i = 1 To .FoundFiles.Count

                MsgBox .FoundFiles(i)

             Next i

        Else

             MsgBox "There were no files found."

        End If

   End With

End Sub

 

 

   Oder noch besser

 

 

Sub Dateien_Zaehlen()

   '  Einfach nur die Anzahl der Dateien zurückgeben, welche im Verzeichnis sind.

Dim fso As Object

   Set fso = CreateObject("Scripting.FileSystemObject")

   MsgBox fso.GetFolder("H:\cfg\VVxV_Fehler").Files.count

   Set fso = Nothing

End Sub

 

 

Ein Teil von einer Variable abfragen (Left, Mid, Right)

 

   ' Fragt die ersten 5 Zeichen der Variable ab ob diese mit "Check" beginnen.

   If Left(strBenötigterDrucker, 5) = "Check" Then

        strDrucker = strSpezialDuplex

   End If

 

   Weitere Befehle sind: Left, Mid, Right.

   Mit Trim können leerzeichen dazwischen eleminiert oder unbeachtet werden.

 

 

Len(Feldname)

 

   Len(Feldname) man die aktuelle Länge eines Strings ermitteln.

 

   intActivePrinter = Len(strActivePrinter) 'ergibt eine Zahl wie lang der String ist (38)

 

   Zum Leerzeichen entfernen gibt es die Funktion Space

 

 

 

 

Ein Dialogbox nur 9 Sekunden anzeigen

 

 

Public Sub ere()

   ' Ein Dialogbox nur 9 Sekunden anzeigen

   Dialogs(wdDialogViewZoom).Show TimeOut:=9000

End Sub

 

 

 

UserForm nur eine gewisse Zeit am Bildschirm anzeigen

 

   ' Zusätzlich muss natürlich noch einen UserForm erstellt werden, hier Zuch

 

Sub Main()

   Zuch.Show (modal)                                               'Damit das Modul trotz MsgBox weiterläuft

   Application.OnTime When:=Now + TimeValue("00:00:10"), _         'Modul nach best. Zeit laufen lassen

   Name:="TemplateProject.Einschreiben.Main"                       'damit die UserForm ausgeblendet werden k.

End Sub

 

   ' Einschreiben Modul

 

Sub Main()

   Unload Zuch

End Sub

 

 

 

Beginn- und Endpunkt definieren u. ohne Markieren formatieren

 

   Set myRange = ActiveDocument.Bookmarks("SysVtleistungB").Range

   myRange.SetRange Start:=myRange.Start, _

        End:=ActiveDocument.Bookmarks("SysVtleistungtextLeistungE").Range.End

   With myRange

        myRange.ParagraphFormat.KeepWithNext = True

        myRange.ParagraphFormat.KeepTogether = True

   End With

   myRange.Select                                                                'myRange markieren

 

   'Bis ans Ende des Dokuments markieren oder definieren

   Set myrange = ActiveDocument.Bookmarks("SysPapierPolice").Range

   myrange.SetRange Start:=myrange.Start, _

        End:=ActiveDocument.Content.End

   myrange.Select

 

 

 

Inhalt einer Textmarke ausgeben

 

 

Sub TextmarkenInhalt()

   ' Gibt den Inhalt der Textmarke zurück.

   ' Bei GoTo und Select wird auch bei leerer Tm ein Wert zurückgegeben.

   strTextmarkenInhalt = ActiveDocument.Bookmarks("gebunden").Range.Text

   MsgBox strTextmarkenInhalt

End Sub

 

 

 

Textmarken Inhalt in eine Variable füllen, mit Zähler

 

Dim strTextmarkenInhalt() As String

Dim intxZähler As Integer                            'Zälervarable als Integer festlegen.

   ReDim strTextmarkenInhalt(intTextmarkenZähler)                     ' Größe auf x Elemente ändern.

   'Hier wird der Inhalt der Textmarke in eine Variable gefüllt

   For intxZähler = 0 To intTextmarkenZähler - 1 '                           'von 1 bis 20 durchzählen

        strTextmarkenInhalt(a) = ActiveDocument.Bookmarks(strMarks(intxZähler)).Range.Text

        Selection.TypeText "" & strTextmarkenInhalt(a)

        a = a + 1

   Next intxZähler                                    'Wieder an Anfang

 

 

 

Textmarken im Dokument zählen

 

 

Public Sub AnzahlTextmarken()

Dim intAnzahlTBS As Integer

   intAnzahlTBS = ActiveDocument.Bookmarks.Count

End Sub

 

 

 

Autotext Name und Inhalt ausgeben einer Druckvorlage

 

 

Public Sub AutoTextAusgeben()

   'Gibt den Namen und der Inhalt des Autotextes einer Druckvorlage aus.

   Set myTemplate = ActiveDocument.AttachedTemplate

   MsgBox "Name des Autotextes: " & myTemplate.AutoTextEntries(1).Name & vbCr _

        & "Inhalt des Autotextes: " & myTemplate.AutoTextEntries(1).Value

End Sub

 

 

 

AutoText einfügen 1:

 

   'Selection.Collapse Direction:=wdCollapseEnd

   ActiveDocument.AttachedTemplate.AutoTextEntries("copy").Insert _

        Where:=Selection.Range, RichText:=True

 

 

AutoText einfügen 2:

 

   ' Um einen AutoText direkt aus einer angehängten Dokumentvorlage Add-In einzufügen, kann folgender Befehl verwendet

   ' werden.

 

   Templates("C:\PGM\autotext.dot").AutoTextEntries(strSysDbklein).Insert Where:=Selection.Range

 

 

 

Suchen Ersetzten im ganzen Dokument 1

 

Das folgende Beispiel sucht das Auftreten des Worts "hello" im aktiven Dokument und ersetzt dieses Wort durch "hi".

   Set myRange = ActiveDocument.Content

   myRange.Find.Execute FindText:="hi", ReplaceWith:="hello", _

        Replace:=wdReplaceAll

 

   oder:

 

   In diesem Beispiel wird im aktiven Dokument jede Instanz des Wortes "Start" gesucht und durch "Ende" ersetzt. Die Suchoperation ignoriert Formatierung und beachtet die Groß-/Kleinschreibung des zu suchenden Textes ("Start").

   Set myRange = ActiveDocument.Range(Start:=0, End:=0)

   With myRange.Find

        .ClearFormatting

        .Text = "Start"

        With .Replacement

             .ClearFormatting

             .Text = "End"

        End With

        .Execute Replace:=wdReplaceAll, _

           Format:=True, MatchCase:=True, _

           MatchWholeWord:=True

   End With

 

 

 

Suchen Ersetzten im ganzen Dokument 2

 

   'In diesem Beispiel wird im aktiven Dokument jede Instanz des Wortes

   '"Start" gesucht und durch "Ende" ersetzt. Die Suchoperation ignoriert

   'Formatierung und beachtet die Groß-/Kleinschreibung des zu suchenden

   'Textes ("Start").

 

   Set myRange = ActiveDocument.Range(Start:=0, End:=0)

   With myRange.Find

        .ClearFormatting

        .Text = "'/"

        With .Replacement

             .ClearFormatting

             .Text = "End"

        End With

           .Execute Replace:=wdReplaceAll, _

           Format:=True, MatchCase:=True, _

           MatchWholeWord:=True

   End With

 

 

 

Variable für andere Prozeduren und Module mit dem Inhalt verfügbar machen

 

   ' Die Variable muss am Anfang ausserhalb der Pulic xx() und End Sub deklariert werden, wie folgt.

Option Explicit

Public strAbfrage1 As String

 

 

 

Formatvorlage abfragen welche

 

   ' Gibt den Namen der Formatvorlage zurück in der der Coursor steht.

   ' Dies ist jedoch mit einem Autotext verbunden.

   Set myentry = NormalTemplate.AutoTextEntries.Add(Name:="rsvp", _

        Range:=Selection.Range)

   MsgBox myentry.StyleName

 

   ' Hier wird effektiv abgefragt um welche Formatvorlage es sich handelt.

   If Selection.Style = "Unsichtbar" Then

        MsgBox "Ja die Markierung ist mit der Formatvorlage Unsichtbar versehen."

   End If

 

 

 

Formatvorlagen kopieren

 

 

Sub StandardFormatvorlageKopieren()

   'Kopiert die Standardformatvorlage ins Aktuelle Dokument

Dim strDocName As String

   strDocName = ActiveDocument.FullName

   Application.OrganizerCopy Source:="H:\daten\winword\dot2k\Normal.dot", _

   Destination:=strDocName, Name:="Standard", Object:= _

   wdOrganizerObjectStyles

End Sub

 

   Oder Besser:

 

Sub StandardFormatvorlageKopieren2()

   ' Mit NormalTemplate wird automatisch das Normal.dot als Quelle gewählt.

Dim strDocName As String

   strDocName = ActiveDocument.FullName

   Application.OrganizerCopy Source:=NormalTemplate, _

   Destination:=strDocName, Name:="Standard", Object:= _

   wdOrganizerObjectStyles

End Sub

 

   Oder ev. besser mit NormalTemplate als fixer Teil:

 

Sub StandardFormatvorlageKopieren3()

Dim strDocName As String

   strDocName = ActiveDocument.FullName

   Application.OrganizerCopy Source:="H:\Templates\Normal.dotm", _

   Destination:=strDocName, Name:="FussSeitennum", Object:= _

   wdOrganizerObjectStyles

End Sub

 

 

 

Mit Loop alle Autotexte ausgeben

 

 

Public Sub AutoTextAusgebenAlsText()

   'On Error GoTo Ende:

   'Gibt den Namen und der Inhalt des Autotextes einer Druckvorlage aus.

   'myTemplate.AutoTextEntries(1) = des Ersten Autotextes

Dim intBZähler As Integer

   intBZähler = 1

   Do While intBZähler <= 100                      'Anzahl Durchläufe festlegen

        Set myTemplate = ActiveDocument.AttachedTemplate

        Selection.TypeText Text:="Name des Autotextes:" & vbCr & vbCr & myTemplate.AutoTextEntries(intBZähler).Name & vbCr & vbCr _

           & "Inhalt des Autotextes:" & vbCr & vbCr & myTemplate.AutoTextEntries(intBZähler).Value

        intBZähler = intBZähler + 1                'Angeben um welchen Wert der Zähler erhöt wird

        Count = Count + 1                          'Counter angeben mit welchem wert gezählt wird

        Selection.TypeParagraph

        Selection.TypeParagraph

        Selection.TypeParagraph

        Selection.TypeText Text:="------------------------------------------------------------"

        Selection.TypeParagraph

   Loop                                           'Wieder an Anfang

   Ende:

End Sub

 

 

 

Abhängen der Sprachabhängigen Autotextvorlage nach dem Editieren

 

   If strEdit = "1" Then

        If ActiveDocument.Bookmarks.Exists("SysDokSprache") = True Then

             intDokSprache = ActiveDocument.Bookmarks("SysDokSprache").Range.Text

             If intDokSprache = "1" Then

                strDokSprache = "d"

             ElseIf intDokSprache = "2" Then

                strDokSprache = "f"

             ElseIf intDokSprache = "3" Then

                strDokSprache = "i"

             ElseIf intDokSprache = "4" Then

                strDokSprache = "e"

             End If

             strAutoTextVorhanden = "autotext_" & strDokSprache & ".dot"

             For Each ad In AddIns

                If ad.Installed = True Then

                        If ad.Name = strAutoTextVorhanden Then

                        AddIns.Add FileName:="C:\pgm\" & strAutoTextVorhanden, Install:=False

                        End If

                End If

             Next ad

        End If

   End If

 

 

 

Alle Verwendeten Formatvorlagen

 

 

Sub AlleVerwendetenFormatvorlagen()

   'Gibt alle verwendeten Formatvorlagen in einem Dokument retour.

   Set mydoc = ActiveDocument

   Msg = "Styles in use:" & vbCr

   For Each sty In mydoc.Styles

        If sty.InUse = True Then

             With mydoc.Content.Find

                .ClearFormatting

                .Text = ""

                .Style = sty

                .Execute Format:=True

                If .Found = True Then

                        Msg = Msg & sty & vbCr

                End If

             End With

        End If

   Next sty

   MsgBox Msg

End Sub

 

 

 

Sub BasisFormatvorlage()

   'Gibt die Basis-Formatvorlage des Markierten Textes zurück

   base = ActiveDocument.Styles(wdStyleBodyText).BaseStyle

   MsgBox base

End Sub

 

 

 

Alle Formatvorlagen in einem Dokument

 

 

Sub AlleVerwendetenFormatvorlagenAlle()

Dim intZaehlFormatvorl As Integer

   ReDim strFormatvorl(300)

Dim e As Integer

   'Gibt alle Formatvorlagen in einem Dokument retour.

   Set mydoc = ActiveDocument

   For Each sty In mydoc.Styles

        If sty.InUse = True Then

             With mydoc.Content.Find

                .ClearFormatting

                .Text = ""

                .Style = sty

                .Execute Format:=True

                strFormatvorl(e) = sty

                e = e + 1

             End With

        End If

   Next sty

End Sub

 

 

 

Tabulatoren löschen und neue setzten

 

 

Public Sub TabulatorenLöschenSetzen()

   'Tabs händling

   For Each para In ActiveDocument.Content.Paragraphs

        '   Löscht alle Tabs die auf 9.5 cm gesetzt sind

        para.TabStops(CentimetersToPoints(9.5)).Clear

        '   Setzt diesen auf 10 cm

        ActiveDocument.DefaultTabStop = CentimetersToPoints(1.25)

        Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(10), _

           Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces

        Selection.MoveDown Unit:=wdLine, Count:=1

   Next para

End Sub

 

 

 

Abfragen Seitenrand und neu setzen

 

   'Punkt (1 cm = 28,35 Punkt). Die geänderte Maßeinheit wird als Single zurückgegeben.

 

 

Sub SeitenrandSetzten()

Dim strLinkerSeitrand As Single

Dim strRechterSeitrand As Single

   strLinkerSeitrand = ActiveDocument.PageSetup.LeftMargin

   If strLinkerSeitrand = "56.7" Then

        '    Nichts zu machen

   Else

        ActiveDocument.PageSetup.LeftMargin = "56.7"    ' Ist Inches und ist genau 2 cm

   End If

   strRechterSeitrand = ActiveDocument.PageSetup.RightMargin

   If strRechterSeitrand = "56.7" Then

        '    Nichts zu machen

   Else

        ActiveDocument.PageSetup.RightMargin = "56.7"   ' Ist Inches und ist genau 2 cm

   End If

End Sub

 

 

 

If X = Wert1 oder Wert2

 

   If ActiveDocument.Bookmarks.Exists("verteilschluesselplan") = True Then

        strTextmarkenInhaltvertschlplan = ActiveDocument.Bookmarks("verteilschluesselplan").Range.Text

        If (strTextmarkenInhaltvertschlplan = "201" Or strTextmarkenInhaltvertschlplan = "202") Then

             MsgBox "Ja es ist eines von Beiden…!"

        End If

   End If

 

 

 

Suchen Ersetzen mit Hochkomma "

 

' Erstellt: 26.01.2005 ITS/stp

' Um einen bestimmten Text aus der TKW-Tabelle zu entfernen der nur beim Kombi

' nicht erscheinen soll wurde dieses Modul erstellt.

' Ist ein Hack der entfernt werden kann wenn die TBS-Variable aus den RKW-Tabellen entfernt

' wurde.

' Ist halt momentan so, dass die Kombipolicedokumente eingefügt werden und die Twindokumente

' immer noch wie bis anhin laufen sollen.

'

 

Public Sub MAIN()

'

'Extras Optionen Ansicht 'Ausgeblendeten Text' aktivieren

Options.Application.ActiveWindow.View.ShowHiddenText = True

 

'Extras Optionen Ansicht 'ALLE' aktivieren

Options.Application.ActiveWindow.View.ShowAll = True

 

'Extras Optionen Ansicht 'Feldfunktonen anzeigen' ausschalten

Options.Application.ActiveWindow.View.ShowFieldCodes = True

 

'On Error GoTo Ende:

Dim intBZähler As Integer                  'Zälervarable als Integer festlegen.

'

strZeichen = Chr(34)

'

' wird anschliessend der Text gelöscht

intBZähler = 1                             'Variablenwert definieren

Do While intBZähler <= 15                  'Anzahl Durchläufe festlegen

   Set myRange = ActiveDocument.Content

   myRange.Find.Execute FindText:=">= " & Chr(34) & "1" & Chr(34), Forward:=True

   If myRange.Find.Found = True Then

        Selection.Find.ClearFormatting

        With Selection.Find

             .Text = ">= " & Chr(34) & "1" & Chr(34)

             '            .Replacement.Text = "= " & Chr(34) & "2" & Chr(34)

             .Forward = True

             .Wrap = wdFindContinue

             .Format = False

             .MatchCase = False

             .MatchWholeWord = False

             .MatchWildcards = False

             .MatchSoundsLike = False

             .MatchAllWordForms = False

        End With

        Selection.Find.Execute

        Selection.TypeText Text:="= " & Chr(34) & "2" & Chr(34)

        '        Selection.Delete Unit:=wdCharacter, count:=1

   End If

   intBZähler = intBZähler + 1           'Angeben um welchen Wert der Zähler erhöt wird

   count = count + 1                     'Counter angeben mit welchem wert gezählt wird

Loop                                     'Wieder an Anfang

'

Selection.HomeKey Unit:=wdStory

Ende:

End Sub

 

 

 

Textmarke: Empty-Eigenschaft

 

'In diesem Beispiel wird festgestellt, ob die Textmarke "temp" existiert und leer ist.

 

If ActiveDocument.Bookmarks.Exists("temp") = True Then

   If ActiveDocument.Bookmarks("temp").Empty = True Then _

        MsgBox "The Temp bookmark is empty"

End If

 

 

 

 

Sub DatumZeitSeparat()

 

' Liefert die einzelnen Angaben des Datums und der Zeit in separate Variablen.

'

Dim Datum1, Jahr1

Datum1 = Date    ' Datum zuweisen.

Datum2 = Date    ' Datum zuweisen.

Datum3 = Date    ' Datum zuweisen.

Jahr1 = Year(Datum1)    ' Jahr1 enthält 1969.

Monat1 = Month(Datum2)

Tag1 = Day(Datum3)

Dim Zeit1, Sekunde1, Stunde1

Zeit1 = Time    ' Zeitangabe zuweisen.

Zeit2 = Time    ' Zeitangabe zuweisen.

Zeit3 = Time    ' Zeitangabe zuweisen.

Stunde1 = Hour(Zeit1)

Minute1 = Minute(Zeit2)

Sekunde1 = Second(Zeit3)


End Sub

 

 

 

Normal.dot saven

 

 

Sub NormalDotSave()

' Um das Normal.dot des Users zu saven.

On Error GoTo Fehler:

Dim Datum1, Jahr1

Datum1 = Date    ' Datum zuweisen.

Datum2 = Date    ' Datum zuweisen.

Datum3 = Date    ' Datum zuweisen.

Jahr1 = Year(Datum1)    ' Jahr1 enthält 1969.

Monat1 = Month(Datum2)

Tag1 = Day(Datum3)

Dim Zeit1, Sekunde1, Stunde1

Zeit1 = Time    ' Zeitangabe zuweisen.

Zeit2 = Time    ' Zeitangabe zuweisen.

Zeit3 = Time    ' Zeitangabe zuweisen.

Stunde1 = Hour(Zeit1)

Minute1 = Minute(Zeit2)

Sekunde1 = Second(Zeit3)

'

Documents.Open FileName:="H:\daten\winword\dot2k\Normal.dot"

ActiveDocument.SaveAs FileName:="H:\daten\winword\dot2k\Normal_save_" & _

Jahr1 & "." & Monat1 & "." & Tag1 & "_" & Stunde1 & "." & Minute1 & "." & Sekunde1 & ".dot"

ActiveDocument.Close

GoTo Ende:

Fehler:

MsgBox "Das Normal.dot konnte nicht gesavt werden."

On Error Resume Next

ActiveDocument.Close

Ende:

End Sub

 

 

 

Fenster "Alle Fenster in der Taskbar anzeigen" umschalten

 

' Erstellt: 21.10.2010 ITS/P.Steiner

' Um die Fenster "Alle Fenster in der Taskbar anzeigen" umzuschalten.

' Benötigt der User vermutlich mehrfach. Falls das VVEV das Dokument

' nicht fertig aufbereitet und auf FALSE stehen bleibt.

' Wir aufgerufen mit dem Short-Cut Ctrl + Alt + -

'

 

Public Sub ShowWindowsInTaskbarEinAus()

'

On Error GoTo ShowWinTaskbarEinAusEnde:

'

If Documents.count < 1 Then

   Documents.Add DocumentType:=wdNewBlankDocument

   strDoknameNewX = ActiveDocument.Name

   blnShowWindowsInTaskbarS = Application.ShowWindowsInTaskbar

   If blnShowWindowsInTaskbarS = True Then

        Application.ShowWindowsInTaskbar = False

   End If

   If blnShowWindowsInTaskbarS = False Then

        Application.ShowWindowsInTaskbar = True

   End If

   Documents(strDoknameNewX).Close SaveChanges:=wdDoNotSaveChanges

Else

   '       Der User hat also schon ein Dokument offen. Dann dieses in die Variable abspeichern.

   strDoknameAktivesDokumentUser = ActiveDocument.Name

   blnShowWindowsInTaskbarS = Application.ShowWindowsInTaskbar

   If blnShowWindowsInTaskbarS = True Then

        Application.ShowWindowsInTaskbar = False

   End If

   If blnShowWindowsInTaskbarS = False Then

        Application.ShowWindowsInTaskbar = True

   End If

   Documents(strDoknameAktivesDokumentUser).Activate

End If

ShowWinTaskbarEinAusEnde:

End Sub

 

 

 

Word Warnungen ausgeschalte und wieder einschalten

 

' Hier werden die Warnungen ausgeschaltet!

Application.DisplayAlerts = False

ActiveDocument.SaveAs FileName:=Output_$, AddToRecentFiles:=False

'    WordBasic.FileSaveAs Name:=Output_$, _

'        Format:=0, LockAnnot:=0, _

'        Password:=""

' Hier werden die Warnungen wieder eingeschaltet!

Application.DisplayAlerts = True

 

 

 

Briefdatum auf den Briefen mit x Tagen erhöhen

 

' Erstellt 18.07.2005 ITS/ P. Steiner

' Damit das Briefdatum auf den Briefen mit 10 Tagen später aufgedruckt wird

' wird bei jedem Dokument das Briefdatum abgefragt, 10 dazugerechnet und

' geprüft ob das neue Datum auf einen Samstag oder Sonntag zu liegen kommt.

' Wenn ja, wird im ersten Fall 2 Tage dazu-, im zweiten Fall 1 Tag dazugerechnt.1

' 12.10.2010 ITS/P.Steiner

' Ergänzt und im Generali.dotm fix eingebaut.

' Definiert werden muss nur die Variable "intBriefdatumPlus" im Modul "PfadFunktion".

' Da gibt man der Variable mit um wie viele Tage man das Briefdatum verschieben will.

' Wenn die Variable dort mit 0 bestückt wird, läuft dieses Modul nicht ab und es wird

' das Briefdatum belassen wie es ist.

' Dieses Modul wird, wenn die Variable < 0 ist mDrucken hierhin geleitet.

'

Dim Datum1 As Date    ' Variablen deklarieren.

Dim IntervallTyp As Variant 'um auch minus zu rechnen

Dim Zahl As Integer

Dim strBriefdatum As Date

Dim intWochentag As Integer

'

 

Public Sub MAIN()

'strBriefdatum = Format(Date, "dd. mmmm yyyy")

'

'Extras Optionen Ansicht 'Ausgeblendeten Text' aktivieren

Options.Application.ActiveWindow.View.ShowHiddenText = True

 

'Extras Optionen Ansicht 'ALLE' aktivieren

Options.Application.ActiveWindow.View.ShowAll = True

 

' Variable intBriefdatumPlus um soviel soll es erhöt werden.

 

If ActiveDocument.Bookmarks.Exists("briefdatum") = True Then

   strBriefdatum = ActiveDocument.Bookmarks("briefdatum").Range.Text  ' TM Inhalt in Variable lesen

   '        strBriefdatum & intBriefdatumPlus

   IntervallTyp = "d"    ' "d" gibt Tag als Intervall an.

   Datum1 = strBriefdatum

   Zahl = intBriefdatumPlus  ' Original ohne Rechnung (Sa oder So)

   strDatumNeu = DateAdd(IntervallTyp, Zahl, Datum1)

   intWochentag = Format(strDatumNeu, "w")

   If intWochentag = 7 Then 'Wenns ein Samstag trifft.

        Zahl = intBriefdatumPlus + 2

        strDatumNeu = DateAdd(IntervallTyp, Zahl, Datum1)

   End If

   If intWochentag = 1 Then 'Wenns ein Sonntag trifft.

        Zahl = intBriefdatumPlus + 1

        strDatumNeu = DateAdd(IntervallTyp, Zahl, Datum1)

   End If

 

   '       Textmarke wieder neu Abfüllen und Textmarke wieder setzen

   If ActiveDocument.Bookmarks.Exists("briefdatum") Then

        Set rng = ActiveDocument.Bookmarks("briefdatum").Range

        rng.Text = strDatumNeu

        ActiveDocument.Bookmarks.Add "briefdatum", rng

   End If

   '

End If

'Extras Optionen Ansicht 'Ausgeblendeten Text' aktivieren

Options.Application.ActiveWindow.View.ShowHiddenText = False

 

'Extras Optionen Ansicht 'ALLE' aktivieren

Options.Application.ActiveWindow.View.ShowAll = False

 

End Sub

 

 

 

Die 2 letzten Editierten Dokumentnamen in einer ini-Datei ablegen

 

' Um sicherzustellen, dass im Ini welches nicht gelöscht wird, nur die 2 letzten Editierten Dokumente

' abgelegt werden.

' Das Speicherdatum des gerade Editier-Dokument wird im Format "yyyymmddhhmmss" definiert. Um im Anschluss

' die Datums vergleichen zu können. Mittels reiner Zahl.

' Somit werden immer die 2 letzen Dokumentnamen in dem Ini abgelegt.

'

 

Sub IniEintragLetzteDokumente()

 

Dim intDokLoop As Integer

Dim strDokZeit1 As String

Dim strDokZeit2 As String

Dim strDokumentZeitZahl As String

 

' Resumen Next daher, da in den Ini-File am Beginn noch keine Einträge vorhanden sind.

On Error Resume Next

 

ActiveDocument.Save

strDoknameAktuell = ActiveDocument.Name

 

strDokumentZeitZahl = Format(FileDateTime(strTempPfad & strDoknameAktuell), "yyyymmddhhmmss")

 

'Letzter Dokumentname aus dem Eitieren abfragen

strDokZeit1 = System.PrivateProfileString(FileName:=strIniDateiPfad & strDoknameEditIniDatei, _

Section:="LetzteDokumenteImEditieren", Key:="Dokumentzeit1") 'Vom INI lesen

strDokZeit2 = System.PrivateProfileString(FileName:=strIniDateiPfad & strDoknameEditIniDatei, _

Section:="LetzteDokumenteImEditieren", Key:="Dokumentzeit2") 'Vom INI lesen

 

If strDokZeit1 = "" Then

   intDokLoop = 1

ElseIf strDokZeit2 = "" Then

   intDokLoop = 2

ElseIf strDokZeit1 > strDokZeit2 Then

   intDokLoop = 2

ElseIf strDokZeit1 < strDokZeit2 Then

   intDokLoop = 1

Else

   intDokLoop = 1

End If

 

' Für letztes Dokument im Editieren

' Dateiname des letzten Dokuments ins INI speichern. Damit es später wieder abgerufen werden kann

System.PrivateProfileString(FileName:=strIniDateiPfad & strDoknameEditIniDatei, _

Section:="LetzteDokumenteImEditieren", Key:="Dokumentname" & intDokLoop) = strDoknameAktuell 'Ins INI schreiben

System.PrivateProfileString(FileName:=strIniDateiPfad & strDoknameEditIniDatei, _

Section:="LetzteDokumenteImEditieren", Key:="Dokumentzeit" & intDokLoop) = strDokumentZeitZahl 'Ins INI schreiben

 

End Sub

 

 

 

~Dateien der Add-Ins von Word löschen

 

' Erstellt: ITS/P.Steiner 27.06.2012

' Um die von einem Absturz (noch offenen) ~Dateien der Add-Ins von Word

' zu löschen, werden diese mittels dieses Moduls gelöscht.

' Da unter Citrix die Bat-Dateien gesperrt sind, werden diese mittels Makro

' gelöscht. Obwohl dies nicht gerade elegant ist, da Word ja schon offen ist.

' Leider funktioniert das Löschen aller ~Dateien im ganzen Home unter VBA nicht.

' Daher werden die Dateien halt aufgelistet.

' Zuerst wird das Attribut der Datei von Versteckt auf Normal gestellt

' um diese im Anschluss zu löschen.

' Wird mit dem ShortCut Ctrl + Alt + M gestartet

'

 

Public Sub NochOffeneKorDatLoe()

 

Dim strDateiVorhandenMeldung As String

Dim strDateiVorhanden As String

Dim strNormalUDatei As String

Dim strGeneraliUDatei As String

Dim strGeneraliRibbUDatei As String

Dim strAutTextUDatei As String

Dim strAutTextDUDatei As String

Dim strAutTextFUDatei As String

Dim strAutTextIUDatei As String

Dim strAutTextEUDatei As String

 

' ev. mit Pfadfunktion

 

On Error Resume Next

 

strNormalUDatei = "H:\Templates\~$Normal.dotm"

SetAttr strNormalUDatei, vbNormal

strDateiVorhanden = Dir(strNormalUDatei)

If strDateiVorhanden <> "" Then

   strDateiVorhandenMeldung = strNormalUDatei

   Kill (strNormalUDatei)

End If

 

strGeneraliUDatei = "H:\Templates\WordStartUp\~$nerali.dotm"

SetAttr strGeneraliUDatei, vbNormal

strDateiVorhanden = Dir(strGeneraliUDatei)

If strDateiVorhanden <> "" Then

   strDateiVorhandenMeldung = strDateiVorhandenMeldung & vbCrLf & strGeneraliUDatei

   Kill (strGeneraliUDatei)

End If

 

strGeneraliRibbUDatei = "H:\Templates\WordStartUp\~$NERALI_Ribbon.dotm"

SetAttr strGeneraliRibbUDatei, vbNormal

strDateiVorhanden = Dir(strGeneraliRibbUDatei)

If strDateiVorhanden <> "" Then

   strDateiVorhandenMeldung = strDateiVorhandenMeldung & vbCrLf & strGeneraliRibbUDatei

   Kill (strGeneraliRibbUDatei)

End If

 

strAutTextUDatei = "H:\Templates\Autotext\~$totext.dotx"

SetAttr strAutTextUDatei, vbNormal

strDateiVorhanden = Dir(strAutTextUDatei)

If strDateiVorhanden <> "" Then

   strDateiVorhandenMeldung = strDateiVorhandenMeldung & vbCrLf & strAutTextUDatei

   Kill (strAutTextUDatei)

End If

 

strAutTextDUDatei = "H:\Templates\Autotext\~$totext_d.dotx"

SetAttr strAutTextDUDatei, vbNormal

strDateiVorhanden = Dir(strAutTextDUDatei)

If strDateiVorhanden <> "" Then

   strDateiVorhandenMeldung = strDateiVorhandenMeldung & vbCrLf & strAutTextDUDatei

   Kill (strAutTextDUDatei)

End If

 

strAutTextFUDatei = "H:\Templates\Autotext\~$totext_f.dotx"

SetAttr strAutTextFUDatei, vbNormal

strDateiVorhanden = Dir(strAutTextFUDatei)

If strDateiVorhanden <> "" Then

   strDateiVorhandenMeldung = strDateiVorhandenMeldung & vbCrLf & strAutTextFUDatei

   Kill (strAutTextFUDatei)

End If

 

strAutTextIUDatei = "H:\Templates\Autotext\~$totext_i.dotx"

SetAttr strAutTextIUDatei, vbNormal

strDateiVorhanden = Dir(strAutTextIUDatei)

If strDateiVorhanden <> "" Then

   strDateiVorhandenMeldung = strDateiVorhandenMeldung & vbCrLf & strAutTextIUDatei

   Kill (strAutTextIUDatei)

End If

 

strAutTextEUDatei = "H:\Templates\Autotext\~$totext_e.dotx"

SetAttr strAutTextEUDatei, vbNormal

strDateiVorhanden = Dir(strAutTextEUDatei)

If strDateiVorhanden <> "" Then

   strDateiVorhandenMeldung = strDateiVorhandenMeldung & vbCrLf & strAutTextEUDatei

   Kill (strAutTextEUDatei)

End If

 

If strDateiVorhandenMeldung <> "" Then

   '    MsgBox strDateiVorhandenMeldung

   MsgBox strDateiVorhandenMeldung, _

        vbExclamation, " ~Dateien welche gelöscht wurden ..."

Else

   MsgBox "Es wurden keine ~Dateien gelöscht.", vbInformation, " Dateien welche gelöscht wurden ..."

End If

 

End Sub

 

 

 

Alle Hyperlinks in einem Dokument entfernen

 

 

Sub Makroname()

Dim i As Long

With ActiveDocument

   For i = 1 To .Hyperlinks.Count

        .Hyperlinks(1).Delete

   Next i

End With

End Sub

 

 

 

Hyperlink in Variable laden und bearbeiten

 

' Inhalt von Hyperlink in eine Variable laden und diesen mit einem zusätzlichen Wert ergänzen

For Each aHyperlink In ActiveDocument.Hyperlinks

   If InStr(LCase(aHyperlink.Address), "") <> 0 Then 'Wenn er nicht leer ist

        strHyperlinkOld = aHyperlink.Name

        aHyperlink.Address = "GugusA" & strHyperlinkOld & "GugusB"

   End If

Next aHyperlink

 

 

 

CreateTextFile-Methode

 

'Der folgende Code veranschaulicht, wie Sie mit der CreateTextFile-Methode eine Textdatei erstellen und öffnen:

 

Sub CreateAfile()

Set fs = CreateObject("Scripting.FileSystemObject")

Set a = fs.CreateTextFile("c:\temp\testfile.txt", True)

a.WriteLine ("Dies ist ein Test.")

a.Close

End Sub

 

 

 

Macro-Eigenschaft

 

'Beispiel zur MacroContainer-Eigenschaft

'In diesem Beispiel wird der Name des Dokuments oder der Vorlage, in dem sich das Modul mit der laufenden Prozedur 'befindet, gespeichert.

Set cntnr = MacroContainer

MsgBox cntnr.Name

 

'Folgender Code liefert den Modulname des Moduls

Set cntnr = MacroContainer

MsgBox cntnr.VBProject.Application.ActiveVBProject.Application.ActiveCodePane.CodeModule.Name

 

oder:

 

' Modulname in eine Variable schreiben. (Achtung bei Dokumenten aus Vorlagen!!)

strModulName = Application.VBE.ActiveCodePane.CodeModule

 

 

oder:

 

 

Public Sub ModulnamenErmitteln()

For Each VBPro In ActiveDocument.VBProject.VBComponents

   If VBPro.Type = 1 Then _

        strModulname = Module & VBPro.Name

Next VBPro

End Sub

 

 

 

Alle Projektnamen ermitteln

 

 

Sub Projektliste()

Module = ""

Klassenmodule = ""

Forms = ""

Mappen = ""

For Each VBPro In ActiveDocument.VBProject.VBComponents

   If VBPro.Type = 1 Then _

        Module = Module & VBPro.Name & Chr(13)

   If VBPro.Type = 2 Then _

        Klassenmodule = Klassenmodule & VBPro.Name & Chr(13)

   If VBPro.Type = 3 Then _

        Forms = Forms & VBPro.Name & Chr(13)

   If VBPro.Type = 100 Then _

        Mappen = Mappen & VBPro.Name & Chr(13)

Next VBPro

MsgBox "***Module***" & Chr(13) & Module & Chr(13) & "***Klasenmodule***" & Chr(13) & Klassenmodule & Chr(13) & "***Userforms***" & Chr(13) & Forms & Chr(13) & "***Arbeitsmappe und Tabellen***" & Chr(13) & Mappen

End Sub

 

 

 

Projektnamen ermitteln und setzen

 

 

Sub Projektname_ermitteln()

MsgBox ActiveDocument.VBProject.Name

End Sub

 

 

Sub Projektname_setzen()

ActiveDocument.VBProject.Name = "MeinVBA"

End Sub

 

 

 

Makro ändert Makro

 

' Ein hochinteressantes Thema: 'Makro ändert Makro'

' Dieses Beispiel ändert eine Zeile im Code:

 

Const SuchZeile = "    MsgBox ""VBA macht Spaß !"""

Const NeueZeile = "    MsgBox ""VBA macht großen Spaß !"""

 

 

Sub VBAZeileÄndern()

Set VBE = Application.VBE.ActiveCodePane.CodeModule

With VBE

   For x = 1 To .CountOfLines

        If .Lines(x, 1) = NeueZeile Then

             .ReplaceLine x, SuchZeile

             Exit Sub

        End If

        If .Lines(x, 1) = SuchZeile Then

             .ReplaceLine x, NeueZeile

             Exit Sub

        End If

   Next x

End With

End Sub

 

 

Sub Testen()

MsgBox "VBA macht Spaß !"

End Sub

 

 

 

Variable abfragen ob diese einen bestimmten Wert enthält

 

InStr-Funktion (Beispiel)

In diesem Beispiel wird die InStr-Funktion verwendet, um die Position des ersten Auftretens einer Zeichenfolge innerhalb einer anderen Zeichenfolge zurückzugeben.

 

Dim SuchText, SuchZeichen, Pos1

Suchtext ="XXpXXpXXPXXP"    ' Zu durchsuchende

' Zeichenfolge.

SuchZeichen = "P"    ' Nach "P" suchen.

 

' Reiner Textvergleich ab Position 4. Das Ergebnis ist 6.

Pos1 = Instr(4, Suchtext, SuchZeichen, 1)

 

' Binärer Vergleich ab Position 1. Das Ergebnis ist 9.

Pos1 = Instr(1, Suchtext, SuchZeichen, 0)

 

' Standardmäßig wird der Vergleich binär durchgeführt

' (wenn das letzte Argument nicht angegeben wird).

Pos1 = Instr(Suchtext, SuchZeichen)    ' Liefert 9.

 

Pos1 = Instr(1, Suchtext, "W")    ' Liefert 0.

 

 

Ein produktives Beispiel:

 

Dim strTextmarkenInhalt As String

 

 

Public Sub MAIN()

If ActiveDocument.Bookmarks.Exists("produkt") = True Then

   strTextmarkenInhalt = ActiveDocument.Bookmarks("produkt").Range.Text  ' TM Inhalt in Variable lesen

Dim SuchText, SuchZeichen, Position

   SuchText = strTextmarkenInhalt   ' Zu durchsuchende

   ' Zeichenfolge.

   SuchZeichen = "hc"    ' Nach "P" suchen.

   ' Binärer Vergleich ab Position 1.

   Position = InStr(1, SuchText, SuchZeichen, 0)

End If

If Position > 0 Then

   'Messagebox; ob das richtige Papier im Schacht 6 eingelegt ist.

   Load Assistance

   Assistance.Show

   'Seite einrichten auf Schacht 6 und auf Ganzes Dokument

   With ActiveDocument.PageSetup

        .FirstPageTray = 258

        .OtherPagesTray = 258

        .OddAndEvenPagesHeaderFooter = False

   End With

   'Text auswechseln, welcher neu mit der Assistance zu tun hat.

 

End If

End Sub

 

 

' Feststellen ob es sich um eine Copy handelt.

' Falls es sich um eine Kopie handelt. Wird das Copy Zeichen eingefügt.

If ActiveDocument.Bookmarks.Exists("drvorlbez") = True Then                     'Existiert die Textmarke

   strDrvorlBez = ActiveDocument.Bookmarks("drvorlbez").Range.Text             'Textmarkeninhalt in Variable

   '       Nach enthaltenen Zeichen Suchen

Dim SuchText, SuchZeichen, Position

   SuchText = strDrvorlBez   ' Zu durchsuchende

   SuchZeichen = "kopie"     ' Nach "kopie" suchen.

   ' Binärer Vergleich ab Position 1.

   Position = InStr(1, SuchText, SuchZeichen, 0)

   If Position > 0 Then

        Application.Run "TemplateProject.AlsKopie.MAIN"

   End If

End If

 

oder

 

 

Textteil in Variable finden

 

 

Sub TextInVariableFinden()

Dim strGanzerText As String

Dim strSuchText As String

Dim intGefunden As Integer

 

strGanzerText = "xxxxxxxXxxxx"

strSuchText = "X"

intGefunden = InStr(strGanzerText, strSuchText)

If intGefunden > 0 Then

   MsgBox "Der Textteil wurde im Variableninhalt gefunden"

Else

   MsgBox "Der Textteil wurde NICHT gefunden"

End If

 

End Sub

 

 

 

Neue Formatvorlage basieren auf der vorherigen erstellen

 

 

Sub Neue_Formatvorlage_Definieren()

' Erstellt: 04.05.2006 ITS/stp

'Erstellt eine neue Formatvorlage bestehend aus der bisherigen darunterliegenden Formatvorlage

On Error GoTo SupEnde:

strAlteStyle = Selection.Paragraphs.Style

strNeueStyle = InputBox("Bitte Namen für neue Formatvorlage eingeben: ", "Namenseingabe", strAlteStyle)

'strNeueStyle

 

ActiveDocument.Styles.Add Name:=strNeueStyle, _

   Type:=wdStyleTypeParagraph

With ActiveDocument.Styles(strNeueStyle)

   .AutomaticallyUpdate = False

   .BaseStyle = strAlteStyle

End With

ActiveDocument.Styles(strNeueStyle).LanguageID = wdSwissGerman

ActiveDocument.Styles(strNeueStyle).NoProofing = False

ActiveDocument.Styles(strNeueStyle).Frame.Delete

Selection.Style = ActiveDocument.Styles(strNeueStyle)

SupEnde:

If Documents.count < 1 Then

   Application.WindowState = wdWindowStateMinimize

End If

End Sub

 

 

 

AutoText direkt einfügen

 

strTextmarkenInhaltvertschlplan = ActiveDocument.Bookmarks("verteilschluesselplan").Range.Text

' Fügt den formatierten Autotext in der Variable strTextmarkenInhaltvertschlplan ein.

 

Selection.Collapse Direction:=wdCollapseEnd

ActiveDocument.AttachedTemplate.AutoTextEntries(strTextmarkenInhaltvertschlplan).Insert _

   Where:=Selection.Range, RichText:=True

 

oder wenn der Autotext schon bekannt ist:

 

Selection.Collapse Direction:=wdCollapseEnd

ActiveDocument.AttachedTemplate.AutoTextEntries("copy").Insert _

   Where:=Selection.Range, RichText:=True

 

 

 

Ist ein Autotext im Dokument vorhanden?

 

For Each i In ActiveDocument.AttachedTemplate.AutoTextEntries

   ' Lcase ist kleinschreibung…

   If LCase(i.Name) = "copy" Then

        MsgBox "AutoText ist vorhanden!"

   End If

Next i

 

 

 

MsgBox definiert ausgeben

 

MsgBox "Die Dokumente können mit der derzeitigen Einstellung nicht aus der Vertragsverwaltung " & vbCrLf & "gedruckt werden." & vbCrLf & vbCrLf & "Die Sicherheitseinstellung von Winword wurde automatisch geändert !" & vbCrLf & vbCrLf & "Die Anwendung Winword wird im Anschluss geschlossen !" & vbCrLf & "Starten Sie Winword erneut." & vbCrLf & vbCrLf & "Falls diese Fehlermeldung beim Drucken von Dokumenten aus der Vertragsverwaltung" & vbCrLf & "erscheint, muss der GV unterbrochen und wieder neu aufgenommen werden !" & vbCrLf & vbCrLf & "Wenn Sie diesen Fehler mehrmals erhalten wenden Sie sich bitte an die Abteilung ITS !", _

   vbExclamation, " Änderung der Macro-Sicherheitseinstellung in Winword ..."

 

oder

 

MsgBox "Folgenden Shortcut sind im Generali.dot definiert :" & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + A" & vbTab & "Zeigt diese Messagebox an" & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + B" & vbTab & "Zeigt die Registry-Druckereinstellung an" & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + D" & vbTab & "Setzt die Duplex-Textmarke im Dokument" & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + G" & vbTab & "Zeigt die installierte Version des Generali.dot an" & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + H" & vbTab & "Erstellt eine Sicherheitskopie vom Normal.dot" & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + J" & vbTab & "Zeigt die installierte Version des Autotext.dot an" & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + K" & vbTab & "Startet den Microsoft Explorer" & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + O" & vbTab & "Öffnet das Dokument doutput.doc aus dem Temp-Verzeichnis   " & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + ö" & vbTab & "Zeigt die Dateien aus dem " & strTempPfad & " Ordner" & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + P" & vbTab & "Positioniert alle offenen Winword-Fenster" & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + Q" & vbTab & "Entfernt den Inhalt einer Textmarke" & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + T" & vbTab & "Erstellt eine Textmarke aus der Markierung" & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + X" & vbTab & "Erstellt eine Textmarke ohne zu Markieren" & vbCrLf & _

"S-Cut:" & "   " & "Alt + Strg + ," & vbTab & "Öffnet das Generali.dot aus dem AutoStart" & vbCrLf & vbCrLf & _

"06.06.2006  ITS/stp", vbExclamation, " Alle Shortcut des Generali.dot auf einen Blick ..."

 

 

 

AutoText in aktive Dokumentvolage aufnehmen

 

' Nimmt den Autotext mit dem Namen "Blue" in die Aktive Dokumentvorlage auf

Set myTemplate = ActiveDocument.AttachedTemplate

 

myTemplate.AutoTextEntries.Add Name:="Blue", _

   Range:=Selection.Range

 

 

 

AutoText aus eignem Template ausgeben

 

' Autotext einfügen aus eigenem Template

Set myTemplate = ActiveDocument.AttachedTemplate

myTemplate.AutoTextEntries("atLogoGenerali").Insert Where:=Selection.Range

 

 

 

Aus einem Sting die einzelnen Werte auslesen

 

 

Sub StringAuslesen()

 

Dim strListe As String

Dim arrSplit As Variant

Dim intZaehler As Integer

 

strListe = "Wert1,Wert2,Wert3,Wert4"

arrSplit = Split(strListe, ",")

 

For intZaehler = LBound(arrSplit) To UBound(arrSplit)

   MsgBox arrSplit(intZaehler)

Next intZaehler

 

End Sub

 

 

 

Prüfen ob ein Ordner existiert

 

 

Sub Ordner_vorhanden()

' Prüfen ob ein Ordner existiert

If Dir("C:\test", vbDirectory) <> "" Then

   MsgBox "Ordner vorhanden"

Else

   MsgBox "Ordner nicht vorhanden"

End If

End Sub

 

oder

 

 

Sub Ordner_vorhanden2()

Dim Pfad As String

Pfad = "C:\_export_prod_2008.04.25\doc"

 

If Dir(Pfad, vbDirectory) = "" Then

   MsgBox "Pfad existiert nicht!"

Else

   MsgBox "Pfad existiert"

End If

 

End Sub

 

 

 

Prüfen ob ein Ordner vorhanden ist und ob er leer ist oder nicht

 

 

Sub Ordner_vorhanden_inhalt()

' Prüfen ob ein Ordner vorhanden ist und ob er leer ist oder nicht.

If Dir("C:\test", vbDirectory) <> "" Then

 

   Set fs = Application.FileSearch

   With fs

        .LookIn = "C:\test"

        .Filename = "*.*"

 

        If .Execute > 0 Then

             MsgBox "Ordner gefunden und es wurden " & .FoundFiles.Count & " file(s) gefunden."

             ' Dannn alle Files auflisten

             For i = 1 To .FoundFiles.Count

                MsgBox .FoundFiles(i)

             Next i

        Else

             MsgBox "Keine Dateien"

        End If

   End With

Else

   MsgBox "Ordner nicht vorhanden"

End If

End Sub

 

 

 

Ordner erstellen, wenn dieser nicht schon vorhanden ist

 

 

Sub Ordner_erstellen()

' Ordner erstellen, wenn dieser nicht schon vorhanden ist

Dim oFSO As Object              'für das FileSystemObject

Set oFSO = CreateObject("Scripting.FileSystemObject")

If Not oFSO Is Nothing Then

   If Not oFSO.FolderExists("C:\test2") Then

        If oFSO.CreateFolder("C:\test2") <> "" Then

             MsgBox "OK, Ordner neu angelegt!"

        Else

             MsgBox "Ordner konnte nicht neu angelegt werden!"

        End If

   Else

        MsgBox "Ordner existiert bereits!"

   End If

   Set oFSO = Nothing

End If

End Sub

 

 

 

Liefert den Pfadseparator vom Pfad (z.B. / oder \)

 

' Gibt das Zeichen zurück, mit dem Ordnernamen voneinander getrennt werden. Diese Eigenschaft gibt einen umgekehrten Schrägstrich (\) zurück.

 

MsgBox ActiveDocument.Path & Application.PathSeparator & ActiveDocument.Name

 

 

 

Vertikales und Horizontales Lineal im Winword wieder anzeigen lassen

 

 

Public Sub Lineale_In_Ansicht_anzeigen()

For Each myWindow In Windows

   With myWindow

        .View.Type = wdPrintView

        .DisplayRulers = True

        .DisplayVerticalRuler = True

   End With

Next myWindow

End Sub

 

 

 

Nummerisch oder handelt es sich um ein Datum

 

' Eine Abfrage ob es sich um einen numerischen Ausdruck handelt

If IsNumeric(strEingabe) = True Then

   ' Gibt Wahr zurück bei zutreffen

   end if

 

 

   ' Eine Abfrage ob es sich um ein Datum handelt.

   If IsDate(strEingabe) = True Then

        ' Gibt Wahr zurück bei zutreffen

        end if

 

        '        If (strTextmarkenInhaltvertschlplan = "201" Or strTextmarkenInhaltvertschlplan = "202" _

        '        Or strTextmarkenInhaltvertschlplan = "203" Or strTextmarkenInhaltvertschlplan = "204") Then

 

 

        ' Datum umwandeln

 

        datumswert = "01.2.08"

        datum_zeit_string = Format(Date, "dd.mm.yyyy")  ' ergibt 01.02.2008

 

  

 

Datei ohne Extension (z.B. .doc oder .dot) in eine Variable packen  InStr-Funktion

 

        strDoknamePDF = ActiveDocument.Name                    'DokName in Variable strDokname speichern

        'Dateinamen kürzen. So, dass dieser ohne Endung (Extension besteht)

        pos = InStr(strDoknamePDF, ".")

        If pos > 0 Then

             strDoknamePDF = Left(strDoknamePDF, pos - 1)

        End If

 

        oder:

 

 

Public Sub Filename_ohne_extension()

        strDoknamePDF = ActiveDocument.Name                'DokName in Variable strDokname speichern

        Set objFso = CreateObject("Scripting.FileSystemObject")

        strDoknamePDFroh = objFso.GetBaseName(strDoknamePDF)

End Sub

 

        oder:

 

  

 

InStrRev-Funktion

 

        Gibt die Position eines Vorkommnisses einer Zeichenfolge in einer anderen Zeichenfolge vom Ende der Zeichenfolge gesehen an

 

        strDoknamePDF = ActiveDocument.Name                    'DokName in Variable strDokname speichern

        'Dateinamen kürzen. So, dass dieser ohne Endung (Extension besteht)

        'Funktioniert bei langen Dateinamen nicht :-(

        pos = InStrRev(strDoknamePDF, ".")

        If pos > 0 Then

             strDoknamePDF = Left(strDoknamePDF, pos - 1)

        End If

 

  

 

Dateiendung einer Datei ermitteln

 

'Die Dateiendung steht nach dem letzten Punkt im Dateinamen.

 

Public Sub DateiEndungAbfragen()

Dim strDateinamen As String

Dim strDateiNurEndung As String

        'strDateinamen = ActiveDocument.Name

        strDateinamen = "DateinamenBeispiel.dotx"

        pos = InStrRev(strDateinamen, ".")

        ' Dateiendung mit Punkt

        If pos > 0 Then

             strDateiNurEndung = Mid(strDateinamen, Len(Left(strDateinamen, pos - 1)) + 1)

             'oder

             strDateiNurEndung2 = LCase(Mid(strDateinamen, pos + 0))

        End If

 

        ' Dateiendung ohne Punkt

        If pos > 0 Then

             strDateiNurEndungOhnePunkt = Mid(strDateinamen, Len(Left(strDateinamen, pos)) + 1)

             'oder

             strDateiNurEndungOhnePunkt2 = LCase(Mid(strDateinamen, pos + 1))

             'oder

             strDateiNurEndungOhnePunkt3 = Mid(strDateinamen, InStrRev(strDateinamen, ".") + 1)

        End If

End Sub

 

 

Dateiname aus Pfad ermitteln

 

 

Sub DateiNameAusPfadErmitteln()

Dim strPfad As String

        strPfad = "C:\Test\Ordner1\Test\Ordner1\Test\Ordner1\Test\Ordner1\logfile.txt"

        MsgBox Mid(strPfad, InStrRev(strPfad, "\") + 1)

End Sub

 

  

 

Angemeldeter User ermitteln

 

Public strAngemeldeterBenutzer As String

 

Private Declare Function apiGetUserName Lib "advapi32.dll" _

        () '  Alias "GetUserNameA" ( _

           ByVal lpBuffer As String, _

§nSize As Long) As Long

 

 

Function fOSUserName() As String

Dim lngLen As Long, lngX As Long

Dim strUserName As String

 

        strUserName = String$(254, 0)

        lngLen = 255

        lngX = apiGetUserName(strUserName, lngLen)

        If lngX <> 0 Then

             fOSUserName = Left$(strUserName, lngLen - 1)

        Else

             fOSUserName = ""

        End If

        strAngemeldeterBenutzer = fOSUserName

End Function

 

        oder einfach

 

        strAngemeldeterUserF = CreateObject("WScript.Network").UserName

        strAngemeldeterUserF = LCase(strAngemeldeterUserF)             ' Auf Kleinbuchstaben ummodeln, wenn nötig

 

  

 

Active Directory Informationen des angemeldeten Benutzers lesen

 

 

Sub ActiveDirectoryAuslesen()

        ' Definition der Variablen für die Tabellenausgabe

 

Dim dvVorname               As String

Dim dvInitialen             As String

Dim dvNachname              As String

Dim dvAnzeigename           As String

Dim dvBeschreibung          As String

Dim dvBuero                 As String

Dim dvRufnummer             As String

Dim dvEmail                 As String

Dim dvWebseite              As String

Dim dvStrasse               As String

Dim dvPostfach              As String

Dim dvOrt                   As String

Dim dvBundesland            As String

Dim dvPostleitzahl          As String

Dim dvLand                  As String

Dim dvBenutzeranmeldename   As String

Dim dvRufnummernPrivat      As String

Dim dvRufnummernPager       As String

Dim dvRufnummernMobil       As String

Dim dvRufnummernFax         As String

Dim dvRufnummernIPTelefon   As String

Dim dvAnmerkungen           As String

Dim dvPosition              As String

Dim dvAbteilung             As String

Dim dvFirma                 As String

Dim dvsysInfo               As String

Dim dvMitarbeiter           As String

 

        'Variablen für AD-Abfrage

Dim varQuery As String

Dim objSystemInfo As Object

Dim objBenutzer As Object

 

        ' Active Directory Informationen des angemeldeten Benutzers lesen

        Set objSystemInfo = CreateObject("ADSystemInfo")

        varQuery = "LDAP://" & objSystemInfo.UserName

 

        ' Zeiger auf das AD-Objekt des Benutzers setzen

        ' damit können wir alle AD-Felder abfragen

 

        Set objBenutzer = GetObject(varQuery)

 

        ' Füllen der Variablen

 

        dvVorname = objBenutzer.givenname

        dvInitialen = objBenutzer.initials

        dvNachname = objBenutzer.sn

        dvAnzeigename = objBenutzer.DisplayName

        dvBeschreibung = objBenutzer.Description

        dvBuero = objBenutzer.physicalDeliveryOfficeName

        dvRufnummer = objBenutzer.telephoneNumber

        dvEmail = objBenutzer.mail

        dvWebseite = objBenutzer.wWWHomepage

        dvStrasse = objBenutzer.streetAddress

        dvPostfach = objBenutzer.postOfficeBox

        dvOrt = objBenutzer.L

        dvBundesland = objBenutzer.st

        dvPostleitzahl = objBenutzer.postalCode

        dvLand = objBenutzer.CO

        dvBenutzeranmeldename = objBenutzer.sAMAccountName  ' P-Nummer

        dvRufnummernPrivat = objBenutzer.homePhone

        dvRufnummernPager = objBenutzer.pager

        dvRufnummernMobil = objBenutzer.mobile

        dvRufnummernFax = objBenutzer.facsimileTelephoneNumber

        dvRufnummernIPTelefon = objBenutzer.ipPhone

        dvAnmerkungen = objBenutzer.info

        dvPosition = objBenutzer.Title

        dvAbteilung = objBenutzer.department

        dvFirma = objBenutzer.company

        dvsysInfo = objBenutzer.manager

 

        ' Überprüfe das Auslesen aus der ActiveDirectory

        MsgBox "Der Vorname " & [dvAnzeigename] & " wurde ausgelesen."

 

End Sub

 

 

Warteschlaufe einbauen

 

Subrutine für Warteschlaufe

 

        Wird aufgerufen im Makro mit:

 

        Wait (Sekunden)

 

 

Public Sub Wait(sngSeconds As Single)
Dim sngStart
As Single
Dim sngTimer
As Single
sngStart = Timer
While Format(sngTimer - sngStart, "Fixed") < sngSeconds
    sngTimer = Timer
    DoEvents
Wend
End Sub

  

 

Datei Move   /   Datei verschieben

 

        Die unscheinbare VBA-Anweisung Name kann nicht nur Dateien umbenennen sondern auch verschieben oder sogar gleichzeitig umbenennen und verschieben. Das Verschieben funktioniert allerdings nur wenn sich das Zielverzeichnis (also der Ort, wohin die Datei verschoben werden soll) auf dem gleichen Laufwerk befindet wie das Quellverzeichnis der Datei. Das Verschieben einer Datei beispielsweise von Laufwerk C: nach Laufwerk D: kann mit der Name-Anweisung somit nicht durchgeführt werden. Das laufwerkübergreifende Verschieben lässt sich nur mit dem FileSystemObject-Objekt oder mit der Windows API-Funktion MoveFile bewerkstelligen.

 

        'Das Codebeispiel #1 zeigt die Lösungsvariante mit dem VBA-Befehl Name zum Verschieben einer Datei. Wenn im

        'Zielverzeichnis bereits eine gleichnamige Datei existiert, tritt der Laufzeitfehler 58 "Datei existiert bereits"

        'auf.

 

Sub MoveFile1()

        Name "C:\AlteDateien\EineDatei.xls" As "C:\NeueDateien\EineDatei.xls"

End Sub

 

        'Das Beispiel #2 verwendet ebenfalls den Befehl Name, wobei die Datei verschoben und gleichzeitig umbenannt wird.

        'Auch hier tritt bei bereits vorhandener Datei der Laufzeitfehler 58 "Datei existiert bereits" auf.

 

Sub MoveFile2()

        Name "C:\AlteDateien\AlterDateiname.xls" As "C:\NeueDateien\NeuerDateiname.xls"

End Sub

 

        'Das Beispiel #3 verwendet die API-Funktion MoveFile. Wenn im Zielverzeichnis bereits eine gleichnamige Datei

        'existiert, gibt die Funktion den Wert 0 zurück. Die Datei wird in diesem Fall nicht verschoben.

        Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal _

           lpExistingFileName As String, ByVal lpNewFileName As String) As Long

 

Sub MoveFile3()

Dim lngRetVal As Long

        lngRetVal = MoveFile("C:\AlteDateien\EineDatei.xls", "C:\NeueDateien\EineDatei.xls")

        If lngRetVal = 0 Then

             MsgBox "Fehler beim Verschieben der Datei."

        End If

End Sub

 

        'Im Beispiel #4 wird eine Datei anhand der API-Funktion MoveFile verschoben und umbenannt. Wenn im Zielverzeichnis

        'die Datei bereits existiert, gibt die Funktion den Wert 0 zurück. Die Datei wird in diesem Fall nicht verschoben

        'und umbenannt.

 

Sub MoveFile5()

        CreateObject("Scripting.FileSystemObject").MoveFile "C:\AlteDateien\EineDatei.xls", "C:\NeueDateien\EineDatei.xls"

End Sub

 

        'Mit Variablen:

        CreateObject("Scripting.FileSystemObject").MoveFile strDateiVorhandenFull, strTempfull

 

 

        Methoden

 

        Die nachstehende Tabelle zeigt die Methoden des FileSystemObject-Objektes:

 

        Methode    Beschreibung

        FileSystemObject.BuildPath      Hängt einen Namen an einen Pfad an.

        FileSystemObject.CopyFile Kopiert eine Datei.

        FileSystemObject.CopyFolder     Kopiert einen Ordner.

        FileSystemObject.CreateFolder   Erstellt einen Ordner.

        FileSystemObject.CreateTextFile Erstellt eine Textdatei.

        FileSystemObject.DeleteFile     Löscht eine Datei.

        FileSystemObject.DeleteFolder   Löscht einen Ordner.

        FileSystemObject.DriveExists    Überprüft die Existenz eines Laufwerkes.

        FileSystemObject.FileExists     Überprüft die Existenz einer Datei.

        FileSystemObject.FolderExists   Überprüft die Existenz eines Ordners.

        FileSystemObject.GetAbsolutePathName Gibt aus einer angegebenen Pfadangabe einen vollständigen und

        eindeutigen Pfad zurück.

        FileSystemObject.GetBaseName    Gibt eine Zeichenfolge zurück, die den Basisnamen der letzten

        Komponente (ohne Dateinamenerweiterung) eines Pfades enthält.

        FileSystemObject.GetDrive Referenziert das angegebene Laufwerk.

        FileSystemObject.GetDriveName   Gibt den Namen des Laufwerkes im angegebenen Pfad zurück.

        FileSystemObject.GetExtensionName Gibt eine Zeichenfolge zurück, die den Erweiterungsnamen der

        letzten Komponente eines Pfades enthält.

        FileSystemObject.GetFile   Referenziert die angegebene Datei.

        FileSystemObject.GetFileName    Gibt den Namen einer Datei zurück.

        FileSystemObject.GetFolder      Referenziert den angegebenen Ordner.

        FileSystemObject.GetParentFolderName Gibt eine Zeichenfolge zurück, die den Namen des übergeordneten

        Ordners der letzten Komponenten in einem angegebenen Pfad enthält.

        FileSystemObject.GetSpecialFolder Gibt den Pfad des angegebenen Spezialordners zurück.

        FileSystemObject.GetTempName    Gibt einen willkürlich erstellten Namen einer temporären Datei bzw.

        eines temporären Ordners zurück, die bzw. der nützlich beim

        Durchführen von Operationen ist, die eine temporäre Datei oder

        einen temporären Ordner erfordern.

        FileSystemObject.MoveFile     Verschiebt eine Datei.

        FileSystemObject.MoveFolder     Verschiebt einen Ordner.

        FileSystemObject.OpenTextFile   Öffnet eine Textdatei.

 

  

 

Cursor-Eigenschaft

 

        'In diesem Beispiel wird eine Meldung in der Statusleiste angezeigt, und der Zeiger wechselt in seine

        '"beschäftigte" Form

 

Sub Corsor_Statusleitentext()

        System.Cursor = wdCursorWait

        Application.StatusBar = " ...is noch Kaffee da? "

        Application.StatusBar = False 'zurücksetzen

        System.Cursor = wdCursorNormal

End Sub

 

  

 

Welche Position hat eine Textmarke (Nummerierung nach Position im Dokument)

 

        ' Gibt die Nummer der Textmarke, die den Anfang der angegebenen Auswahl oder des Bereichs einschließt, zurück. Wenn

        ' keine entsprechende Textmarke existiert, wird 0 (Null) zurückgegeben. Die Nummer entspricht der Position der

        ' Textmarke im Dokument, 1 für die erste Textmarke, 2 für die zweite, usw. Long Nur-Lese-Zugriff.

 

        ' Postion fix einer bestimmten Textmarke abfragen.

        intSysRKWLoesungAbsBPosition = ActiveDocument.Bookmarks("SysRKWLoesungAbsB").Range.PreviousBookmarkID

        intSysRKWLoesungAbsEPosition = ActiveDocument.Bookmarks("SysRKWLoesungAbsE").Range.PreviousBookmarkID

 

 

        ' Oder nachdem auf eine Texmarke gesprungen wurde, abfragen welche Position diese hatte:

        ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:="SysRKWLoesungAbsB"

        intSysRKWLoesungAbsBPosition = Selection.BookmarkID                 ' Abfragen auf welcher Position die TM ist

 

        ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:="SysRKWLoesungAbsE"

        intSysRKWLoesungAbsEPosition = Selection.BookmarkID                 ' Abfragen auf welcher Position die TM ist

 

  

 

Abfragen ob ein Laufwerk besteht

 

 

Sub CheckIfDriveExists1()

Const strDrive As String = "C:\"

        If CreateObject("Scripting.FileSystemObject").DriveExists(strDrive) = True Then

             MsgBox "Das Laufwerk existiert.", vbInformation

        Else

             MsgBox "Das Laufwerk existiert nicht.", vbInformation

        End If

End Sub

 

        oder Dateisystem ausgeben (bei nichtvorhandensein gibts einen Fehler):

 

 

Public Sub GetFileSystem2()
  MsgBox CreateObject("Scripting.FileSystemObject").GetDrive("C:").FileSystem

End Sub

 

        oder

 

        'Variable mit dem File-Name

        strDateiName = "FaxFormular.ini"

        ' Überprüfen ob das Laufwerk "H:\" vorhanden ist und es sich um ein Generali (p-user) handelt

        ' Ansonsten wird in das Verzeichnis geschrieben in welchem das Normal.dot liegt

Const strDrive As String = "H:\"

        ' Gibt es das Laufwerk H:\

        If CreateObject("Scripting.FileSystemObject").DriveExists(strDrive) = True Then

             strAngemeldeterUserF = CreateObject("WScript.Network").UserName

             strAngemeldeterUserF = LCase(strAngemeldeterUserF)             ' Auf Kleinbuchstaben ummodeln

             '   Handelt es sich um einen P-User

             If Left(strAngemeldeterUserF, 1) = "p" Then                    ' Links 1. Wert

                strAngemeldeterUserFN = Right(strAngemeldeterUserF, 6)     ' Rechts 6. Werte

                If IsNumeric(strAngemeldeterUserFN) = True Then

                        '           Variable mit Pfad und Dateiname abfüllen

                        strDateiNamePfad = "H:\" & strDateiName

                End If

             End If

        Else

             '   Sonst da abspeichern wo das Normal.dot liegt:

             strDateiNamePfad = Options.DefaultFilePath(wdUserTemplatesPath) & Application.PathSeparator & strDateiName

        End If

 

  

 

Wörter suchen (Rückgabe die Anzahl wieviel mal das gesuchte Wort vorkommt)

 

 

Sub WortZaehlen()

        Titel = "Zeichenfolge zählen"

        Q = Chr(34)

        Antwort = InputBox("Nach welcher Zeichenfolge soll gesucht werden?", Titel)

        If Antwort = "" Then Exit Sub

        With ActiveDocument.Range.Find

             .Text = Antwort

             '.MatchWholeWord = True

              '.MatchCase = True

             While .Execute

                Anz = Anz + 1

             Wend

        End With

        strT = "Für die Zeichenfolge " & Q & Antwort & Q & " wurden " & Anz & " Entsprechungen gefunden."

        MsgBox strT, vbInformation, Titel

End Sub

 

        oder:

 

 

Sub WortZaehlen2()

        Application.ScreenUpdating = False

        Titel = "Wort zählen"

        Antwort = InputBox("Nach welchem Wort soll gesucht werden?", Titel)

        If Antwort = "" Then Exit Sub

Dim oRange As Range, Anz As Long

        Set oRange = Selection.Range

        ActiveDocument.Range(0, 0).Select

        With Selection.Find

             .ClearFormatting

             .Text = Antwort

             .Execute

             While .found = True

                Anz = Anz + 1

                .Execute

             Wend

        End With

        oRange.Select

        Application.ScreenUpdating = True

        Q = Chr(34)

        strT = "Für das Wort " & Q & Antwort & Q & " wurden " & _

        Anz & " Entsprechungen gefunden."

        MsgBox strT, vbInformation, Titel

End Sub

 

        oder

 

 

Public Sub MAIN()

 

Dim strSuchtext As String

Dim count As Integer

        strSuchtext = "0"

        With Selection.Find

             .Text = strSuchtext

             .Forward = True

             .Wrap = wdFindContinue

             .Format = False

             .MatchCase = False

             .MatchWholeWord = False

             .MatchWildcards = False

             .MatchSoundsLike = False

             .MatchAllWordForms = False

             While Selection.Find.Execute

                Selection.Text = ""

                Selection.ParagraphFormat.KeepTogether = False

                Selection.ParagraphFormat.KeepWithNext = False

                count = count + 1

             Wend

        End With

        MsgBox count

End Sub

 

  

 

Zeichen aus Inhalt einer Veriable entfernen

 

        Zeichen1 = Chr(91)    ' Liefert [

        Zeichen2 = Chr(93)    ' Liefert ]

        Zeichen3 = Chr(33)    ' Liefert !

 

        strVariable = "[044444444444444444444XY001000]"

 

        ' Jetzt das Zeichen [ aus der Variable entfernen (also Replacen mit null)

        strNeueVariable = Replace(strVariable, Chr(91), "")

 

        ' Dann das Zeichen ] aus der Variable enternen (also Replacen mit null)

        strFertigeVariable = Replace(strNeueVariable, Chr(93), "")

 

        ' Oder den Wert XY mit mm vertrauschen

        strFertigeVariableRep = Replace(strNeueVariable, "XY", "mm")

 

  

 

Textmarken neu füllen und dabei erhalten

 

 

Public Sub TextmarkeAbfullenUBehalten()

        strBMName = "SysGugus"

        strBMText = "NeuerText"

 

        If ActiveDocument.Bookmarks.Exists(strBMName) Then

             Set rng = ActiveDocument.Bookmarks(strBMName).Range

             rng.Text = strBMText

             ActiveDocument.Bookmarks.Add strBMName, rng

        End If

End Sub

 

        Und mit einer neuen Font und Color ausstatten:

        strGeschaeftsstelle = "Hier der Text der draufkommt"

        intFehler = 1

        If ActiveDocument.Bookmarks.Exists("SysGeschaeftsstelle") Then

             Set rng = ActiveDocument.Bookmarks("SysGeschaeftsstelle").Range

             rng.Text = strGeschaeftsstelle

             ActiveDocument.Bookmarks.Add "SysGeschaeftsstelle", rng

             If intFehler = 1 Then

                rng.Font.Color = wdColorRed

                rng.Font.Bold = True

             End If

        End If

 

  

 

Feldfunktion lesbar darstellen

 

        ' Möchte man diese Feldfunktionen aber dokumentieren oder anderen zeigen,

        ' Funktion in die Zwischenablage kopiert - nie die Feldfunktion an sich.

 

 

Sub ChangeFieldCode()

        AddIns("H:\cfg\autotext\" & "autotext.dot").Installed = True  ' Optional

        ActiveWindow.View.ShowFieldCodes = True

        Selection.WholeStory    ' Alles Markieren

 

Dim ff As Field

Dim rng As Range, rngSel As Range

Dim str As String

 

        Set rngSel = Selection.Range

        For Each ff In rngSel.Fields

             ff.ShowCodes = True

        Next ff

        str = rngSel.Text

        str = Replace(str, Chr(19), "{")

        str = Replace(str, Chr(21), "}")

        rngSel.Text = str

        rngSel.Copy

 

        Selection.MoveLeft Unit:=wdCharacter, Count:=1

End Sub

 

  

 

Sprache abfragen

 

 

Sub subTrainingAction(control As IRibbonControl)

        '

        '   Abfragen ob die Sprache Deutsch ist. Sonst französicher Link anzeigen.

        If Application.LanguageSettings.LanguagePreferredForEditing(MsoLanguageID.msoLanguageIDGerman) = True Then

             MsgBox "Deutsch"

        Else

             MsgBox "andere Sprache"

        End If

End Sub

 

  

 

Fenster händling

 

        If Application.WindowState = wdWindowStateMaximize Then

             Application.WindowState = wdWindowStateNormal

             strApplicationLeft = Application.Left

             strApplicationTop = Application.Top

             strApplicationWidth = Application.Width

             strApplicationHeight = Application.Height

        Else

             strApplicationLeft = Application.Left

             strApplicationTop = Application.Top

             strApplicationWidth = Application.Width

             strApplicationHeight = Application.Height

        End If

        '   FensterPosition festlegen

        Application.Move Left:=0, Top:=530

        Application.Resize Width:=270, Height:=200

 

        '   FenstePosition wieder zurückstellen

        Application.Move Left:=strApplicationLeft, Top:=strApplicationTop

        Application.Resize Width:=strApplicationWidth, Height:=strApplicationHeight

 

  

 

Fensterhändling 2

 

        iWindowCount = Application.Windows.Count    ' Anzahl Dokumente

        sWindowName = Application.Windows.Item(i)   ' Name Dokument ?!

        sWindowNameWW = Application.Documents(i)    ' Name Dokument ?!

 

        Fensterposition in die Variable lesen

        strWindowLeft = Windows(1).Left

        strWindowTop = Windows(1).Top

        strWindowWidth = Windows(1).Width

        strWindowHeight = Windows(2).Height

 

 

             Aus einem String letztes Zeichen enfernen und TM mit neuem Inhalt wieder setzen

 

        ' Fragt die TM nach dem Inhalt ab

        ' Wenn das letzte Zeichen eine Absatzmarke ist, wird die TM mit dem neuen Inhalt wieder gesetzt.

 

 

Sub LetztesSteuerzeichenenfernenTMneusetzen()

Dim intTextmarkenInhaltleztesZeichen As Integer

Dim strTextmarkenInhalt As String

 

        If ActiveDocument.Bookmarks.Exists("bankverbindung") Then

             strTextmarkenInhalt = ActiveDocument.Bookmarks("bankverbindung").Range.Text  ' TM Inhalt in Variable lesen

             '   Abfragen welches das letzte Zeichen ist

             intTextmarkenInhaltleztesZeichen = Asc(Right(strTextmarkenInhalt, 1))

             '   Letztes Zeichen aus dem String der TM entfernen

             strTextmarkenInhalt = Left(strTextmarkenInhalt, Len(strTextmarkenInhalt) - 1)

             '   Wenn das letzte Zeichen eine Absatzmarke (CHR13) ist dann die Textmarke neu setzen.

             If intTextmarkenInhaltleztesZeichen = 13 Then

                '   Textmarke neu setzen ohne Letztes Zeichen

                Set rng = ActiveDocument.Bookmarks("bankverbindung").Range

                rng.Text = strTextmarkenInhalt

                ActiveDocument.Bookmarks.Add "bankverbindung", rng

             End If

        End If

End Sub

 

  

 

Text aus Variablen-Inhalt entfernen

 

 

Public Sub VariableVeraendern()

        strdateinamelang = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadatum_test.doc [Kompatibilitätsmodus]"

        If Right(strdateinamelang, 23) = " [Kompatibilitätsmodus]" Then

             strZaehlenZeichen = Len(strdateinamelang)

             '    MsgBox strZaehlenZeichen

             strZaehlenKurz = strZaehlenZeichen - 23

             strdateinameOK = Left(strdateinamelang, strZaehlenKurz)

        Else

             MsgBox "no"

        End If

 

End Sub

 

  

 

Word Hidden (unsichtbar) setzen und wieder aufheben

 

        Application.Visible = False

 

        Application.Visible = True

 

  

 

WordPositionAendern  (Alle Fenster gleich anordnen in Position Normal)

 

 

Public Sub WordPositionAendern()

Dim intWindowCount As Integer

Dim intZaehlerFenster As Integer

Dim a As Integer

        On Error Resume Next

        a = 1

        intZaehlerFenster = 1

        '   Hier werden alle aktiven Fenster maximiert.

        Application.WindowState = wdWindowStateNormal

        ' Dokumente Zählen

        intWindowCount = Application.Windows.count

 

        If intWindowCount = 0 Then

             Application.Move Left:=0, Top:=150

             Application.Resize Width:=615, Height:=293

        Else

             Do While intZaehlerFenster <= intWindowCount                   'Anzahl Durchläufe festlegen

                '       Höhe und Breite des Wordfensters im Maximierten Zustand ändern.

                Windows(a).Left = 0

                Windows(a).Top = 150

                Windows(a).Width = 615

                Windows(a).Height = 293

                intZaehlerFenster = intZaehlerFenster + 1                  'Counter angeben mit welchem wert gezählt wird

                a = intZaehlerFenster

             Loop                                                           'Wieder an Anfang

        End If

End Sub

 

  

 

Sprache der Installierten Office Version abfragen und auch sonstig.

 

 

Sub SprachAbfrageVBA()

 

        'http://msdn.microsoft.com/en-us/library/aa432459.aspx

 

        'msoLanguageIDExeMode  4  Execution mode language

        strsprachemsoLanguageIDExeMode = Word.Application.LanguageSettings.LanguageID(msoLanguageIDExeMode)

 

        '  msoLanguageIDInstall 1 Install language.   installierte Sprache

        strsprachemsoLanguageIDInstall = Word.Application.LanguageSettings.LanguageID(msoLanguageIDInstall)

 

        ' msoLanguageIDHelp  3 Help language.

        strsprachemsoLanguageIDHelp = Word.Application.LanguageSettings.LanguageID(msoLanguageIDHelp)

 

        'msoLanguageIDUI  2 User interface language

        strsprachemsoLanguageIDUI = Word.Application.LanguageSettings.LanguageID(msoLanguageIDUI)

 

        'msoLanguageIDUIPrevious 5 User interface language used prior to the current user interface language.

        strsprachemsoLanguageIDUIPrevious = Word.Application.LanguageSettings.LanguageID(msoLanguageIDUIPrevious)

 

        strAlleWerte = "strsprachemsoLanguageIDExeMode " & vbTab & strsprachemsoLanguageIDExeMode & vbCrLf & _

        "strsprachemsoLanguageIDInstall " & vbTab & strsprachemsoLanguageIDInstall & vbCrLf & _

        "strsprachemsoLanguageIDHelp " & vbTab & strsprachemsoLanguageIDHelp & vbCrLf & _

        "strsprachemsoLanguageIDUI " & vbTab & vbTab & strsprachemsoLanguageIDUI & vbCrLf & _

        "strsprachemsoLanguageIDUIPrevious " & vbTab & strsprachemsoLanguageIDUIPrevious

        MsgBox strAlleWerte

End Sub

 

  

 

Link aufrufen, je nach Sprache.

 

Public Sub()

        '   E-Learning von GENERALI anzeigen

        '   Abfragen ob die Sprache Deutsch ist. Sonst französicher Link anzeigen. (deutsch = 1031 / franz = 1036)

        '   Word.Application.LanguageSettings.LanguageID(msoLanguageIDUIPrevious) = User interface language used prior to the current user interface language

        If Word.Application.LanguageSettings.LanguageID(msoLanguageIDUIPrevious) = "1031" Then

             ActiveDocument.FollowHyperlink _

                   Address:="http://genadlmosp001.....ch/Integrated/MosSrv/index.htm?stg=prod_Office_2010__de_&sco=act974914&id=_winauth", _

§NewWindow:=True, AddHistory:=True

        Else

             ActiveDocument.FollowHyperlink _

                   Address:="http://genadlmosp001.....ch/Integrated/MosSrv/index.htm?stg=prod_Office_2010__fr_&sco=act974914&id=_winauth", _

§NewWindow:=True, AddHistory:=True

        End If

        End sub

 

  

 

Diverse Infos über PC und User ... alles was in Dos-Eingabeaufforderung unter Set aufgeführt ist.

 

        'Beispiel TempPfad holen

        strIniDateiPfad = Environ("TEMP") & "\"

        strUserName = Environ("USERNAME")

 

        Man würde den Username auch wie folgt erhalten:

        strAngemeldeterUserG = CreateObject("WScript.Network").UserName

 

        Help unter Dos(cmd) mit SET alle Angaben daraus.

 

  

 

Alle Vorlagen in einem Verzeichnis von .dot in .dotx abspeichern

 

 

Sub SaveAllAsDOTX()

Dim strFileName As String

Dim strDocName As String

Dim strPath As String

Dim oDoc As Document

Dim fDialog As FileDialog

        Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)

        With fDialog

             .Title = "Select folder and click OK"

             .AllowMultiSelect = False

             .InitialView = msoFileDialogViewList

             If .Show <> -1 Then

                MsgBox "Cancelled By User", , "List Folder Contents"

                Exit Sub

             End If

             strPath = fDialog.SelectedItems.Item(1)

             If Right(strPath, 1) <> "\" Then strPath = strPath + "\"

        End With

        If Documents.Count > 0 Then

             Documents.Close SaveChanges:=wdPromptToSaveChanges

        End If

        If Left(strPath, 1) = Chr(34) Then

             strPath = Mid(strPath, 2, Len(strPath) - 2)

        End If

        strFileName = Dir$(strPath & "*.dot")

        While Len(strFileName) <> 0

             Set oDoc = Documents.Open(strPath & strFileName)

             strDocName = ActiveDocument.FullName

             intPos = InStrRev(strDocName, ".")

             strDocName = Left(strDocName, intPos - 1)

             strDocName = strDocName & ".dotx"

             oDoc.SaveAs FileName:=strDocName, _

             FileFormat:=wdFormatXMLTemplate

             oDoc.Close SaveChanges:=wdDoNotSaveChanges

             strFileName = Dir$()

        Wend

End Sub

 

  

 

Dateiendung ermitteln

 

        Antwort = "Normal_Building_Blocks.dotx"

        If Len(Antwort) > 0 Then

             For iOffset = Len(Antwort) To 1 Step -1

                If Mid(Antwort, iOffset, 1) = "." Then

                        '   Letzten Punkt gefunden

                        sExtension = Mid(Antwort, iOffset + 1)

                        sFilename = Left(Antwort, iOffset - 1)

                        Exit For

                End If

             Next

             strDateiendung = "." & sExtension

        End If

 

        ‚ strDateiendung liefert die Endung mit .dotx

 

  

 

ZeitMessung

 

 

Public Function ZeitMessung()

Dim StartZeit As Currency, Dauer As Currency

        DoEvents

        StartZeit = Timer

 

        '  Hier steht der Code,

        '  dessen Laufzeit gemessen werden soll

        Stop

        Dauer = Format(Timer - StartZeit, "0.00")

        MsgBox "Dauer:  " & Dauer & " s", , "Laufzeitmessung"

        Debug.Print Dauer

End Function

 

  

 

Pfad zu Dateiname in Fenstertitel von Word anzeigen

 

 

Public Sub WindowTitleInfo()

        ' Pfad im Titelbalken von Word anzeigen

        If Windows.Count > 0 Then

             If Left(ActiveDocument.Name, 8) = "Dokument" Then

                ActiveWindow.Caption = ActiveDocument.Name & " - ungespeichert!"

             Else

                strWoerter = ActiveDocument.BuiltInDocumentProperties(wdPropertyWords)

                '  Change the window's caption

                ActiveWindow.Caption = ActiveDocument.FullName & "  " & Format(ActiveDocument.BuiltInDocumentProperties _

                   (wdPropertyCharsWSpaces), "(#,##0 Zeichen -" & " " & strWoerter & " Wörter)")

             End If

        End If

End Sub

 

  

 

Module löschen

 

        http://www.chf-online.de/vba/makrosdel.htm

 

        Das Löschen von Forms, Modulen oder Klassen zur Laufzeit aus einer Vorlage geht erfolgt direkt über die Angabe des Namens. Befindet sich z.B. das Modul Modul1 in der Dokumentvorlage normal.dot, kann es mit folgendem Aufruf gelöscht werden:

        Achtung:

        Das Modul o.a. wird direkt und ohne Sicherheitsabfrage gelöscht. Es wird auch nicht, wie beim manuellen Löschen in der IDE, erst ein export angeboten!

 

 

Sub Modulloeschen()

        With NormalTemplate.VBProject.VBComponents

             .Remove .Item("Modul2")

        End With

End Sub

 

 

        Dieser direkte Aufruf beinhaltet aber auch ein Risiko: Wird das Makro ein zweites mal aufgerufen oder stimmt der Modul-Name nicht, wird die Fehlermeldung 9 ("Index außerhalb des gültigen Bereichs") ausgegeben, da das angegebene Modul nicht mehr in der Liste der Module vorhanden ist.

        Um Fehler zu vermeiden, sollte daher vor dem Löschen zuerst geprüft werden, ob das Modul, die Form oder die Klasse in der Dokumentvorlage vorhanden ist. Dieses kann nur mit einer Prüfung aller enthaltenen Komponenten (VBComponents) erreicht werden. Dazu wird eine Laufvariable i verwendet, die über alle Komponenten läuft. Der zu entfernde (Modul-)Name wird in der Variablen sName eingetragen. Nur wenn der Name gefunden wird, wird das Modul entfernt und anschließend die Suche beendet, da der Name eineindeutig ist.

 

 

Sub Moduleloeschen2()

Dim i As Integer

Dim sName As String

        For i = 1 To NormalTemplate.VBProject.VBComponents.Count

             sName = NormalTemplate.VBProject.VBComponents.Item(i).Name

             If sName = "Modul2" Then

                With NormalTemplate.VBProject.VBComponents

                        .Remove .Item(sName)

                End With

                Exit For

             End If

        Next i

End Sub

 

 

 

Sub Modulloeschen3()

        '   Von einem AktivenDokument (Template) ein Modul löschen

        Set VBComp = ActiveDocument.VBProject.VBComponents("VorDemDrucken")

        Application.ActiveDocument.VBProject.VBComponents.Remove VBComp

End Sub

 

  

 

Modul Importieren

 

        Mit der Import-Methode können einem Projekt ein Formular, ein Modul, eine Klasse usw. hinzugefügt werden. Diese müssen in Form einer Datei vorliegen und besitzen eine der folgenden Endungen (*.frm,*.bas,*.cls).

 

 

Sub ModulImport()

Dim sName As String

        sName = "C:\TEMP\VorDemDrucken.bas"

        ActiveDocument.VBProject.VBComponents.Import (sName)

End Sub

 

 

Verweise des aktuellen Projektes ermitteln

 

        http://www.chf-online.de/vba/vbeverweise.htm

 

        Häufig möchte man wissen, welche Verweise in einem Projekt verwendet werden.

        Z.B. wenn ein Makro auf einem anderen Rechner nicht funktioniert und Fehlermeldungen zurückliefert. Mit folgendem kleinen Makro wird für das aktuelle Projekt ActiveVBPRoject die Beschreibung der Verweise nacheinander in einer MessageBox ausgegeben.

 

 

Sub VBEVerweise()

        For i = 1 To VBE.ActiveVBProject.References.Count

             msg = msg & VBE.ActiveVBProject.References.Item(i).Description & vbCrLf

        Next i

        antw = MsgBox(msg, vbInformation, "Auflistung der Verweise")

End Sub

 

 

Ist ein Modul Vorhanden / Löschen / Importieren / Umbenennen

 

 

Private Sub ModulVorhandenLoeschenImportieren()

        For i = 1 To ActiveDocument.VBProject.VBComponents.Count

             If ActiveDocument.VBProject.VBComponents.Item(i).Name = "VorDemDrucken" Then

                Set modul = ActiveDocument.VBProject.VBComponents("VorDemDrucken")

                ActiveDocument.VBProject.VBComponents.Remove modul

                Set modul = Nothing

                Set modul = ActiveDocument.VBProject.VBComponents.Import("C:\Abfall\Modul\VorDemDrucken.bas")

                modul.Name = "Modul_NeuerName"

                Exit Sub

             End If

        Next i

End Sub

 

 

Modul Umbenennen

 

 

Public Sub ModulUmbenennen()

        For i = 1 To ActiveDocument.VBProject.VBComponents.Count

             If ActiveDocument.VBProject.VBComponents.Item(i).Name = "VorDemDrucken" Then

                Set modul = ActiveDocument.VBProject.VBComponents("VorDemDrucken")

                modul.Name = "Modul_NeuerName"

                Exit Sub

             End If

        Next i

End Sub

 

 

Modul Importieren

 

        ' Mudulname welcher importiert werden soll

        sName = "C:\Abfall\Modul\VorDemDrucken.bas"

        ActiveDocument.VBProject.VBComponents.Import (sName)

 

 

        Modul Anzahl abfragen

 

        intModulCount = ActiveDocument.VBProject.VBComponents.Count

 

 

Modul Exportieren

 

 

Public Sub ModulExport()

        For i = 1 To ActiveDocument.VBProject.VBComponents.Count

             If ActiveDocument.VBProject.VBComponents.Item(i).Name = "VorDemDrucken" Then

                Set modul = ActiveDocument.VBProject.VBComponents("VorDemDrucken")

                modul.Export "C:\temp\" & modul.Name & ".bas"

                Exit Sub

             End If

        Next i

End Sub

 

 

  

 

Datei Suchen und Anzahl der Seiten auflisten und zusammenzählen

 

 

Sub DateiSuchenAnzahlSeiten()

 

        On Errog GoTo Fehler:

Dim strPfadNamen As String

Dim strDateiNamenPfad As String

Dim strAnzahlSeitenTotal As Integer

Dim strFilename As String

Dim strFName As String

Dim strPfadNeuA As String

 

        ' Pfad mittels InputBox abfragen

        strDateiNamenPfad = InputBox("Bitte nachfolgend den ganzen Pfad eingeben von welchem die Vorlagen mit den Textmarken ins Textmarken- vorkommen.dot" & _

        " aufgenommen werden müssen." & vbCrLf & vbCrLf & "z.B.    E:\daten\winword\vorlagen_produktiv\001", " Angabe des Pfades des Ordner der die Dokumente enthält.")

 

        strFilename = "*.doc"

        strPfadNeuA = strDateiNamenPfad & "\"

 

 

        If strDateiNamenPfad = Empty Then

             ' Nichts da nichts eingegeben wurde oder Abbrechen gewählt wurde.

        Else

 

             strFName = Dir(strPfadNeuA & strFilename)

 

             Do While strFName <> ""

 

                '               Dokument Schreibgeschützt öffnen

                Documents.Open FileName:=strPfadNeuA & strFName, ReadOnly:=True

                '-----------------------------------------------------------------------

 

                strAktivDocName = ActiveDocument.Name

 

                '                '  Anzahl Seiten in die Veriable lesen.

                strAnzahlSeiten = ActiveDocument.ComputeStatistics(wdStatisticPages)

 

                strAnzahlSeitenTotal = strAnzahlSeitenTotal + strAnzahlSeiten

 

                '   Ins Ini schreiben Pfad.

                System.PrivateProfileString(FileName:=strPfadNeuA & "AnzSeiten.ini", _

                   Section:="Dokumente Seiten zählen / Pfad", key:=strDateiNamenPfad & "\") = vbTab & "" & vbTab & "Datum des Eintrags  " & Date & " / " & Time 'Ins INI schreiben

 

 

                '   Ins Ini schreiben wie viele Seiten das Dokument hatte.

                System.PrivateProfileString(FileName:=strPfadNeuA & "AnzSeiten.ini", _

                   Section:="Dokumente Seiten zählen", key:=strAktivDocName) = vbTab & strAnzahlSeiten & vbTab & "Datum des Eintrags  " & Date & " / " & Time 'Ins INI schreiben

 

 

                '   Ins Ini schreiben wie viele Seiten es Total hatte.

                System.PrivateProfileString(FileName:=strPfadNeuA & "AnzSeiten.ini", _

                   Section:="Dokumente Seiten zählen Total", key:="Total Seiten gezählt: ") = vbTab & strAnzahlSeitenTotal & vbTab & "Datum des Eintrags  " & Date & " / " & Time 'Ins INI schreiben

 

                '-----------------------------------------------------------------------

                '               Dokument wird ohne Speichern geschlossen

                ActiveDocument().Close SaveChanges:=wdDoNotSaveChanges

                '            End If

                strFName = Dir()

             Loop

 

        End If

 

        GoTo Ende:

        Fehler:

        MsgBox "Es muss ein Pfad eingegeben werden der auf diesem PC auch verbunden ist." & vbCrLf & _

        "Der Pfad sollte z.B. wie folgt eingegeben werden: E:\daten\winword\vorlagen_produktiv\001", _

           vbCritical, " Textmarkenvorkommen aller Vorlagen erstellen..."

 

        Ende:

 

End Sub

 

  

 

Code für Dokumente in einem Verzeichnis alle bearbeiten

 

        ' Angepasst: 11.05.2011 ITS/P.Steiner

        ' Construct für Dokumente gemäss einem Verzeichnis zu bearbeiten

 

Sub DateiSuchenAnzahlSeiten()

 

        On Errog GoTo Fehler:

Dim strPfadNamen As String

Dim strDateiNamenPfad As String

Dim strAnzahlSeitenTotal As Integer

Dim strFilename As String

Dim strFName As String

Dim strPfadNeuA As String

 

        ' Pfad mittels InputBox abfragen

        strDateiNamenPfad = InputBox("Bitte nachfolgend den ganzen Pfad eingeben von welchem die Vorlagen mit den Textmarken ins Textmarken- vorkommen.dot" & _

        " aufgenommen werden müssen." & vbCrLf & vbCrLf & "z.B.    E:\daten\winword\vorlagen_produktiv\001", " Angabe des Pfades des Ordner der die Dokumente enthält.")

        ' Sucht in einem vorgegebenen Verzeichnis nach Dateien und listete diese

        ' in einer MsbBox den Vollen Namen inkl. Pfad der Datei aus.

 

        strFilename = "*.doc"

        strPfadNeuA = strDateiNamenPfad & "\"

 

        If strDateiNamenPfad = Empty Then

             ' Nichts da nichts eingegeben wurde oder Abbrechen gewählt wurde.

        Else

             strFName = Dir(strPfadNeuA & strFilename)

             Do While strFName <> ""

 

                '               Dokument Schreibgeschützt öffnen

                Documents.Open FileName:=strPfadNeuA & strFName, ReadOnly:=True

                '--------------- B e g i n n   D o k u m e n t h ä n d l i n g ---------------------------------

 

                strAktivDocName = ActiveDocument.Name

 

                ' Hier der Teil was mit dem grad geöffneten Dokument geschehen soll

 

 

                '--------------- E n d e       D o k u m e n t h ä n d l i n g ---------------------------------

                '

                '               Dokument wird ohne Speichern geschlossen

                ActiveDocument().Close SaveChanges:=wdDoNotSaveChanges

                '            End If

                strFName = Dir()

             Loop

        End If

        GoTo Ende:

        Fehler:

        MsgBox "Es muss ein Pfad eingegeben werden der auf diesem PC auch verbunden ist." & vbCrLf & _

        "Der Pfad sollte z.B. wie folgt eingegeben werden: E:\daten\winword\vorlagen_produktiv\001", _

           vbCritical, " Textmarkenvorkommen aller Vorlagen erstellen..."

        Ende:

End Sub

 

  

 

Formatvorlage Kopieren 2010

 

 

Sub FormatvorlageKopieren()

        ' Kopieren der Formatvorlage Kopfzeile vom Normal.dotm in die aktuell geöffnete Vorlage

 

        strNormalDotm = NormalTemplate

        strAktivDocName = ActiveDocument.FullName

 

        Application.OrganizerCopy Source:=NormalTemplate, Destination:=strAktivDocName, Name:="Kopfzeile", Object:=wdOrganizerObjectStyles

 

End Sub

 

  

 

Kopfzeilen und Fusszeilen löschen

 

 

Sub DeleteHeaderFooter()

Dim oRange As Range

        For Each oRange In ActiveDocument.StoryRanges

             If oRange.Information(wdHeaderFooterType) <> -1 Then

                'oRange.Select

                oRange.Delete

             End If

        Next oRange

End Sub

 

 

Alle Felder in Kopfzeilen und Fusszeilen Aktualisieren

 

 

Sub AlleFelderAktualisieren()

Dim rngDoc As Range

Dim oDoc As Document

        Set oDoc = ActiveDocument

        For Each rngDoc In oDoc.StoryRanges

             rngDoc.Fields.Update

             While Not (rngDoc.NextStoryRange Is Nothing)

                Set rngDoc = rngDoc.NextStoryRange

                rngDoc.Fields.Update

             Wend

        Next rngDoc

End Sub

 

Felder Sperren und wieder Freigeben (Feldsperre)

 

 

Sub FelderSperrenOderNicht()

        '   Bezieht sich auf die Markierten Felder

        Selection.WholeStory              '  Alles Markieren

        Selection.Fields.Locked = False   '= Feldsperre aufheben  (Ctrl + Shift + F11)

        Selection.Fields.Locked = True    '= Sperren              (Ctrl + F11)

End Sub

 

  

 

Abfragen ob Felder im Dokument gesperrt sind

 

 

Sub TestObLocked()

        'In diesem Beispiel wird eine Meldung angezeigt, wenn einige Felder im aktiven Dokument geschützt sind.

 

        Set theFields = ActiveDocument.Fields

        If theFields.Locked = wdUndefined Then

             MsgBox "Some fields are locked"

        ElseIf theFields.Locked = False Then

             MsgBox "No fields are locked"

        ElseIf theFields.Locked = True Then

             MsgBox "All fields are locked"

        End If

End Sub

 

  

 

Autotext aus aktivem Template löschen

 

        Autotext aus aktiver Vorlage entfernen

 

        Set myTemplate = ActiveDocument.AttachedTemplate

        myTemplate.AutoTextEntries("autotextname1").Delete

 

        oder

 

        ActiveDocument.AttachedTemplate.AutoTextEntries("autotextname2").Delete

 

  

 

Text suchen und markieren im Dokument

 

 

        ' Ganzes Dokument definieren und dann was gesucht wird und auswählen

        Set myrange = ActiveDocument.Range(Start:=0, End:=0)

        myrange.Find.Execute FindText:="vertrag"

        myrange.Select

 

  

 

Feldfunktion welche in Textmarke eingepackt ist. Update / Unlink

 

        If ActiveDocument.Bookmarks.Exists("SysVertragsspracheUnlink") = True Then

             ActiveDocument.Bookmarks("SysVertragsspracheUnlink").Range.Fields.Update

             ActiveDocument.Bookmarks("SysVertragsspracheUnlink").Range.Fields.Unlink

        End If

        'oder so

        With ActiveDocument.Bookmarks("SysVertragsspracheUnlink").Range.Fields

             .Update

             .Unlink

        End With

 

  

 

Abfrage ob das Dokument schon mit der letzten Änderung gespeichert wurde

 

 

Sub IstDocSchonGeSavet()

Dim doc As Word.Document

        Set doc = ActiveDocument

        strWertObDocgespeichert = doc.Saved

 

        If strWertObDocgespeichert = False Then

             MsgBox "Dokument muss noch gespeichert werden!"

        End If

End Sub

 

  

 

Datum Zeit in Zahl darstellen

 

        ' Die Variablen müssen/können hier als Integer definiert werden. Falls ein Option Explicit vorhanden ist.

 

        intJahr = Year(Date)

        intMonat = Format(Date, "mm")

        intTag = Format(Date, "dd")

        intStunde = Format(Time, "hh")

        intMinute = Format(Time, "nn")

        intSekunde = Format(Time, "ss")

        strDatumZeit = intJahr & intMonat & intTag & intStunde & intMinute & intSekunde

     strDatumZeit2 = intJahr & "." & intMonat & "." & intTag & "-" & intStunde & "." & intMinute & "." & intSekunde

 

        oder in einen ganzen String ausgeben:

        ZeitZahl = Format(FileDateTime("C\Temp\gugus.doc"), "yyyymmddhhmmss")

        Ergibt die Ausgabe des Datums in einer Zahl 20120327091253

        yyyymmtthhmmss

 

  

 

Dokumente von der RecentFiles-Auflistung öffnen

 

        'In diesem Beispiel wird jedes Dokument in der RecentFiles-Auflistung geöffnet.

 

Sub OpenRecentFiles()

Dim rFile As RecentFile

        For Each rFile In RecentFiles

             rFile.Open

        Next rFile

End Sub

 

 

Feststellen, ob ein Dokument geöffnet ist

 

        'Um zu ermitteln, ob ein Dokument geöffnet ist, können Sie die Documents-Auflistung mithilfe der For Each...Next-Anweisung durchlaufen. Im folgenden Beispiel wird das Dokument Sample.doc aktiviert, wenn das Dokument geöffnet ist, oder Sample.doc wird geöffnet, wenn dieses Dokument momentan nicht geöffnet ist.

 

 

Sub ActivateOrOpenDocument()

Dim doc As Document

Dim docFound As Boolean

 

        For Each doc In Documents

             If InStr(1, doc.Name, "sample.doc", 1) Then

                doc.Activate

                docFound = True

                Exit For

             Else

                docFound = False

             End If

        Next doc

 

        If docFound = False Then Documents.Open FileName:="Sample.doc"

End Sub

 

  

 

Nur die 2 letzten Dokumente im ini-File ablegen

 

 

Sub IniEintragMitDenZweiLetztenDokumenten()

 

        ' Wird im Editieren benötigt.

        ' Inkl. Nachfrage welches die letzte aktuelle Datei ist, von 2 Dateien

 

Dim intDokLoop As Integer

Dim strDokZeit1 As String

Dim strDokZeit2 As String

 

        ' Resumen Next daher, da in den Ini-File am Beginn noch keine Einträge vorhanden sind.

        On Error Resume Next

 

        PfadAngabenHolen 'Funktion zum Ermitteln aller nötigen Pfade aller Dateien (Modul: PfadFunktion)

 

        strDoknameAktuell = ActiveDocument.Name

 

        '   Ab hier im PrepareEditieren eintragen:

 

        DokumentZeitZahl = Format(FileDateTime(strTempPfad & strDoknameAktuell), "yyyymmddhhmmss")

 

        'Letzter Dokumentname aus dem Eitieren abfragen

        strDokZeit1 = System.PrivateProfileString(FileName:=strIniDateiPfad & strDoknameEditIniDatei, _

           Section:="LetzteDokumenteImEditieren", Key:="Dokumentzeit1") 'Vom INI lesen

        strDokZeit2 = System.PrivateProfileString(FileName:=strIniDateiPfad & strDoknameEditIniDatei, _

           Section:="LetzteDokumenteImEditieren", Key:="Dokumentzeit2") 'Vom INI lesen

 

        If strDokZeit1 = "" Then

             intDokLoop = 1

        ElseIf strDokZeit2 = "" Then

             intDokLoop = 2

        ElseIf strDokZeit1 > strDokZeit2 Then

             intDokLoop = 2

        ElseIf strDokZeit1 < strDokZeit2 Then

             intDokLoop = 1

        Else

             intDokLoop = 1

        End If

 

        '   Neu für letztes Dokument im Editieren

        '   Dateiname des letzten Dokuments ins INI speichern. Damit es später wieder abgerufen werden kann

        System.PrivateProfileString(FileName:=strIniDateiPfad & strDoknameEditIniDatei, _

           Section:="LetzteDokumenteImEditieren", Key:="Dokumentname" & intDokLoop) = strDoknameAktuell 'Ins INI schreiben

        System.PrivateProfileString(FileName:=strIniDateiPfad & strDoknameEditIniDatei, _

           Section:="LetzteDokumenteImEditieren", Key:="Dokumentzeit" & intDokLoop) = DokumentZeitZahl 'Ins INI schreiben

 

End Sub

 

  

 

SendWindowMessage

 

        ' Muss über SendWindowMessage ein Feedbach an die Druckaktivität

        ' zurückgegeben werden. Nämlich.

        For Each taskLoop In Tasks

             If taskLoop.Name = ddetopic$ Then

                taskLoop.SendWindowMessage 1024, 0, 0

             End If

        Next taskLoop

 

        oder

 

        ' Über SendWindowMessage das Editier-Dokument

        ' in den Vordergrund holen

Dim taskLoop As Task

        strDocName = ActiveDocument.Name

        strDocNameTemp = strDocName & " - Microsoft Word"

        For Each taskLoop In Tasks

             If taskLoop.Name = strDocNameTemp Then

                taskLoop.Activate

             End If

        Next taskLoop

 

  

 

Löschen von Dateien welche Schreibgeschützt, Verseteckt unw. sind

 

        ' Mit SetAttr das Attributt der Datei zuerst auf Normal setzen und dann lsöchen.

        ' Kill wird generell nicht in den Abfall sonder def. gelöscht.

        '

        SetAttr "C:\Abfall\Gugus\" & "Testdokument.docx", vbNormal

 

        Zu gebrauchen bei liegengelassenen Word-Dateien

        SetAttr "C:\Abfall\Gugus\" & "~$kument12 - Kopie.docx", vbNormal

        Kill "C:\Abfall\Gugus\" & "~$kument12 - Kopie.docx"

 

  

 

Registry ändern für im Explorer alle Dateien anzeigen

 

        aSec = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"

        'Ausgeblendete Dateien anzeigen

        System.PrivateProfileString(FileName:="", Section:=aSec, Key:="Hidden") = "00000001"

        ' Geschützte Systemdateien anzeigen

        System.PrivateProfileString(FileName:="", Section:=aSec, Key:="ShowSuperHidden") = "00000001"

 

        um zum Beispiel den Explorer und die Versteckten- und System-Dateien anzuzeigen:

        Shell "Explorer.exe /e, H:\Templates\WordStartUp\", vbNormalFocus

        Shell "Explorer.exe /e, H:\Templates\Autotext\", vbNormalFocus

 

  

 

Öffent den Pfad des aktuellen Files und markiert das betroffene File

 

        'Noch nicht getestet

 

Sub PfadOeffnen()

Dim Pfad

Dim Filename

 

        Pfad = ActiveWorkbook.Path

        Filename = ActiveWorkbook.Name

 

        If Pfad <> "" Then

             If Dir(Pfad, vbDirectory) <> "" Then

                If Right(Pfad, 1) <> "\" Then Pfad = Pfad & "\"

                Shell "Explorer.exe /select," & Pfad & Filename, vbNormalFocus

             Else

                MsgBox "Path " & Pfad & " does not exist!"

             End If

        Else

             MsgBox "not saved yet"

        End If

 

End Sub

 

  

 

Liestet alle Zeichen des CHR() auf

 

 

Sub zeichenauflisten()

 

Dim intzaheler As Integer

        intzaheler = 1

        Selection.Text = intzaheler & vbTab

        Selection.EndKey Unit:=wdLine

        Do While intzaheler <= 255

             Selection.Text = Chr(intzaheler) '

             Selection.EndKey Unit:=wdLine

             intzaheler = intzaheler + 1

 

             Selection.TypeParagraph

             Selection.Text = intzaheler & vbTab

             Selection.EndKey Unit:=wdLine

        Loop

 

        Selection.Text = Chr(11) 'Weicher Zeilenumbruch

        Selection.Text = Chr(13) 'Absatzmarke  (Wird daher der obere Loop etwas durcheinander gebracht)

End Sub

 

  

 

Auf ganzem Verzeichnis alle Druckvorlagen den Drucker Einzugs-Schacht mittels TM festlegen

 

 

        ' Erstellt 22.08.2012 ITS/P.Steiner

        ' Um auf allen Druckvorlagen aus einem Verzeichnis zu definieren aus welchem Einzugsschacht

        ' das Papier gezogen wird.

        ' Dies mittels setzen einer Textmarke mit der Angabe aus welchem Schacht die Druckvorlage

        ' das Papier bezieht.

        ' Am Schluss wird ein Protokoll im selben Verzeichnis ausgegeben.

        '

Dim strTextmarkeDatei() As String

Dim strDateien() As String                              ' Dynamisches Datenfeld deklarieren

Dim strDruckerEinstellungSchacht() As String

Dim intZaehler As Integer

Dim strPfadNeuA As String

Dim intZaehlerMax As Integer

 

 

Public Sub SchachtTMSetzen()

 

        'On Error GoTo Fehler:

Dim strPfadNamen As String

Dim strDateiNamenPfad As String

Dim strAnzahlSeitenTotal As Integer

Dim strFilename As String

Dim strFName As String

 

Dim strDateienTemp As String

Dim SuchText, SuchZeichen

Dim SuchZeichenPolice As String

Dim Pos As Integer

Dim PosPol As Integer

Dim PosPolkop As Integer

Dim intTrennblaetterZahl As Integer

Dim intZahlPolicen As Integer

Dim SuchZeichenPolicekopie As String

 

Dim strTextmarkeSchachtsetzen As String

Dim strSchachtdefinition As String

 

        ReDim strDateien(1000000)

        ReDim strTextmarkeDatei(1000000)

        ReDim strDruckerEinstellungSchacht(1000000)

        intZaehler = 0

        intTrennblaetterZahl = 0

        intZahlPolicen = 0

 

        ' Pfad mittels InputBox abfragen

        strDateiNamenPfad = InputBox("Bitte nachfolgend den ganzen Pfad eingeben aus welchem alle enthaltenen Dateinamen aufgelistet" & _

        " werden sollen." & vbCrLf & vbCrLf & "z.B.    H:\DOutputSaveVVEV\pdf" & vbCrLf & _

        "          (ohne \ am Schluss)", " Angabe des Pfades des Ordner der die Dateien enthält")

 

        strFilename = "*.dot*"

        strPfadNeuA = strDateiNamenPfad & "\"

 

        ' Hier werden die Warnungen ausgeschaltet!

        Application.DisplayAlerts = False

 

        If strDateiNamenPfad = Empty Then

             '    Nichts eingegeben oder Abbrechen wurde gewählt.

             GoTo Ende:

        Else

             strFName = Dir(strPfadNeuA & strFilename)

             Do While strFName <> ""

                '

                strDateien(intZaehler) = strFName

                '       Ab hier --------------------------------------------------------------------

 

                '       Dokument öffnen

                ChangeFileOpenDirectory strPfadNeuA ' strPfadSpVork Variabel beinhaltet den Pfad für die zu öffnende Datei

                Documents.Open FileName:=strFName, _

                ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _

                PasswordDocument:="", PasswordTemplate:="", Revert:=False, _

                WritePasswordDocument:="3", WritePasswordTemplate:="", Format:= _

                wdOpenFormatAuto

                '       Beginn Dokument

                Selection.HomeKey Unit:=wdStory

 

                '       Schacht abfragen

                With ActiveDocument.Styles(wdStyleNormal).Font

                        If .NameFarEast = .NameAscii Then

                        .NameAscii = ""

                        End If

                        .NameFarEast = ""

                End With

 

                strSchachtdefinition = ActiveDocument.PageSetup.FirstPageTray

 

                If strSchachtdefinition = wdPrinterUpperBin Then             'Schacht 1

                        strTextmarkeSchachtsetzen = "SysEinzugsSchacht1"

                        strDruckerEinstellung = "Schacht 1"

                ElseIf strSchachtdefinition = wdPrinterLowerBin Then         'Schacht 2

                        strTextmarkeSchachtsetzen = "SysEinzugsSchacht2"

                        strDruckerEinstellung = "Schacht 2"

                ElseIf strSchachtdefinition = wdPrinterLargeCapacityBin Then 'Schacht 3

                        strTextmarkeSchachtsetzen = "SysEinzugsSchacht3"

                        strDruckerEinstellung = "Schacht 3"

                ElseIf strSchachtdefinition = 256 Then                       'Schacht 4

                        strTextmarkeSchachtsetzen = "SysEinzugsSchacht4"

                        strDruckerEinstellung = "Schacht 4"

                ElseIf strSchachtdefinition = wdPrinterDefaultBin Then       'Standardfach 5 (also 4)

                        strTextmarkeSchachtsetzen = "SysEinzugsSchacht4"

                        strDruckerEinstellung = "Schacht Standardausgabefach"

                ElseIf strSchachtdefinition = 257 Then                       'Schacht 5

                        strTextmarkeSchachtsetzen = "SysEinzugsSchacht5"

                        strDruckerEinstellung = "Schacht 5"

                ElseIf strSchachtdefinition = 258 Then                       'Schacht 6

                        strTextmarkeSchachtsetzen = "SysEinzugsSchacht6"

                        strDruckerEinstellung = "Schacht 6"

                ElseIf strSchachtdefinition = 259 Then                       'Schacht 7

                        strTextmarkeSchachtsetzen = "SysEinzugsSchacht7"

                        strDruckerEinstellung = "Schacht 7"

                ElseIf strSchachtdefinition <> "0" Then                       'Schacht 7

                        strTextmarkeSchachtsetzen = "SysFehlerSchacht"

                        strDruckerEinstellung = "FehlerSchachtDefinition"

                End If

 

                '       Da der Schacht 3 bei einer Altlast nicht per Treiber gesteuert werden konnte.

                If ActiveDocument.Bookmarks.Exists("SysSchacht3") = True Then

                        strTextmarkeSchachtsetzen = "SysEinzugsSchacht3"

                End If

 

                strTextmarkeDatei(intZaehler) = strTextmarkeSchachtsetzen

                strDruckerEinstellungSchacht(intZaehler) = strDruckerEinstellung

                '       Textmarke setzen

                '       Achtung für Briefpapier wurde manchmal Standard oder Schacht 5 gesetzt

                Selection.HomeKey Unit:=wdStory

                Selection.MoveDown Unit:=wdParagraph, Count:=3, Extend:=wdMove

                ActiveDocument.Bookmarks.Add strTextmarkeSchachtsetzen

                ActiveDocument.ActiveWindow.Close SaveChanges:=wdSaveChanges 'Dokument schliessen mit speichern

 

                '       Variablen leeren

                strTextmarkeSchachtsetzen = ""

                strDruckerEinstellung = ""

                '       Bis hier -------------------------------------------------------------------

 

                intZaehler = intZaehler + 1

                strFName = Dir()

 

             Loop

             intZaehlerMax = intZaehler

 

             '   Protokoll erstellen:

             ProtokollErstellen

 

        End If

 

        ' Hier werden die Warnungen wieder eingeschaltet!

        Application.DisplayAlerts = True

 

        GoTo Ende:

        Fehler:

        MsgBox "Es muss ein Pfad eingegeben werden der auf diesem PC auch verbunden ist." & vbCrLf & _

        "Der Pfad sollte z.B. wie folgt eingegeben werden: E:\daten\winword\vorlagen_produktiv\001", _

           vbCritical, " Textmarkenvorkommen aller Vorlagen erstellen..."

        Ende:

 

End Sub

 

 

        ' Erstellt 19. April 2001 Pirmin Steiner

        ' Dieses Makro erstellt eine Liste mit allen Textmarkennamen und Dokumentnamen in denen sie vorkommen.

        ' Das Verzeichnis in welchem die Vorlagen liegen kann am Beginn des Moduls in einem InpuBox angegeben werden.

        ' Jedes Dokument daraus wird geöffnet, und nach Textmarken durchsucht.

        ' Geändert: 27.10.2008 ITS/Pirmin Steiner

        ' Damit dieses Makro etwas schneller abgeht wurden die Textmarken und Dokumentnamen nicht mehr

        ' in ein anderes Dokument geschrieben, sondern in ein TXT-File.

        ' Das TXT-File heisst Textmarkenvorkommen_Datum.txt und liegt danach im selben Verzeichnis in welchem

        ' diese Vorlage abgespeichert ist.

        ' Somit können nach Abschluss die Daten aus dem TXT in ein Excel-File übernommen werden. Worin sie

        ' auch besser sortiert werden können.

        '

 

Public Sub ProtokollErstellen()

        '

Dim intNummerAbarb As String

Dim strPfad As String

        '

Dim Zeit1, Sekunde1, Stunde1

        Zeit1 = Time    ' Zeitangabe zuweisen.

        Zeit2 = Time    ' Zeitangabe zuweisen.

        Zeit3 = Time    ' Zeitangabe zuweisen.

        Stunde1 = Hour(Zeit1)

        Minute1 = Minute(Zeit2)

        Sekunde1 = Second(Zeit3)

 

        strProtokollDatum = Date & "_" & Stunde1 & Minute1 & Sekunde1

 

        intNummerAbarb = 0

        '

        'strPfad = ActiveDocument.AttachedTemplate.Path & Application.PathSeparator

        '& vbCrLf & Nummerierung & vbTab & "Dokument" & vbTab & "Textmarke gesetzt" & vbTab & "Druckereinstellung"

        'Dim strPfadNamen As String

        'Dim strDateiNamenPfad As String

 

        intZaehler = 0

        intZaehlerMax = intZaehlerMax - 1

        '----------------------------------------------------------------------------------------------------

        '   Hier wird abgefragt ob es den eintrag 'Textmarke und Dokumentnamen schon gibt.

        '   Wenn es diesen im Zusammenfassungs-Dokument schon gibt wird dieser Eintrag nicht

        '   vorgenommen.

        For intZaehler = 0 To intZaehlerMax                        ' Anzahl Durchläufe festlegen

             '       Ins INI-File schreiben

             intNummerAbarb = Format(intNummerAbarb, "000000000")                                            'Format bestimmen

             System.PrivateProfileString(FileName:=strPfadNeuA & "Protokoll_" & strProtokollDatum & ".txt", _

                   Section:="Protokoll: Textmarken in Dokumenten gesetzt", Key:=intNummerAbarb) = " " & strDateien(intZaehler) & vbTab & strTextmarkeDatei(intZaehler) & vbTab & strDruckerEinstellungSchacht(intZaehler)

             intNummerAbarb = intNummerAbarb + 1

             Count = Count + 1                            ' Counter angeben mit welchem wert

             '            intZaehler = intZaehler + 1

        Next

        '----------------------------------------------------------------------------------------------------

        '   Ende Datum um Zeit ins Txt- File schreiben.

        System.PrivateProfileString(FileName:=strPfadNeuA & "Protokoll_" & strProtokollDatum & ".txt", _

           Section:="Protokoll-Ende", Key:="Zeit") = " " & Date & " " & Time

 

End Sub

 

  

 

Auf ganzem Verzeichnis alle Druckvorlagen mit einem anderen Drucker Einzugs-Schacht versehen

 

        ' Erstellt 22.08.2012 ITS/P.Steiner

        ' Um auf allen Druckvorlagen aus einem Verzeichnis zu definieren aus welchem Einzugsschacht

        ' das Papier gezogen wird.

        ' Dies mittels setzen einer Textmarke mit der Angabe aus welchem Schacht die Druckvorlage

        ' das Papier bezieht.

        ' Hier wird abgefragt welcher Schacht auf der Vorlage zuvor definiert wurde.

        ' Also Abfrage welche Textmarke im Dokument enthalten ist (SysEinzugsSchacht4 oder SysEinzugsSchacht5 usw.)

        ' Dann wird der Schacht auf dem neuen Treiber wieder gesetzt.

        ' Dies wie folgt:

        '

        ' Schacht auf             Schacht auf

        ' HP9050-Treiber          LexmarkT654-Treiber               Papierart

        ' -------------------------------------------------------------------

        ' 1                       keiner                            keine

        ' 2                       1                                 Policenpapier

        ' 3                       2                                 ESR

        ' 4                       3                                 Briefpapier

        ' 5                       4                                 weisses Papier

        ' 6                       5                                 Archpapier (farbig)

        ' 7                       Universalzuführung                spez

 

 

        ' Am Schluss wird ein Protokoll im selben Verzeichnis ausgegeben.

        '

Dim strTextmarkeDatei() As String

Dim strDateien() As String                              ' Dynamisches Datenfeld deklarieren

Dim strDruckerEinstellungSchacht() As String

Dim intZaehler As Integer

Dim strPfadNeuA As String

Dim intZaehlerMax As Integer

Dim strSchachtdefinition As String

Dim strTextmarkeSchachtsetzen As String

Dim strSchachtsetzen As String

Dim strSchachtsetzenNew As String

 

 

Public Sub SchachtSetzenLexmarkDrucker()

 

        'On Error GoTo Fehler:

Dim strPfadNamen As String

Dim strDateiNamenPfad As String

Dim strAnzahlSeitenTotal As Integer

Dim strFilename As String

Dim strFName As String

 

Dim strDateienTemp As String

Dim SuchText, SuchZeichen

Dim SuchZeichenPolice As String

Dim Pos As Integer

Dim PosPol As Integer

Dim PosPolkop As Integer

Dim intTrennblaetterZahl As Integer

Dim intZahlPolicen As Integer

Dim SuchZeichenPolicekopie As String

 

 

        ReDim strDateien(1000000)

        ReDim strTextmarkeDatei(1000000)

        ReDim strDruckerEinstellungSchacht(1000000)

        intZaehler = 0

        intTrennblaetterZahl = 0

        intZahlPolicen = 0

 

        ' Pfad mittels InputBox abfragen

        strDateiNamenPfad = InputBox("Bitte nachfolgend den ganzen Pfad eingeben aus welchem alle enthaltenen Dateinamen aufgelistet" & _

        " werden sollen." & vbCrLf & vbCrLf & "z.B.    H:\DOutputSaveVVEV\pdf" & vbCrLf & _

        "          (ohne \ am Schluss)", " Angabe des Pfades des Ordner der die Dateien enthält")

 

        strFilename = "*.dot*"

        strPfadNeuA = strDateiNamenPfad & "\"

 

        ' Hier werden die Warnungen ausgeschaltet!

        Application.DisplayAlerts = False

 

        If strDateiNamenPfad = Empty Then

             '    Nichts eingegeben oder Abbrechen wurde gewählt.

             GoTo Ende:

        Else

             strFName = Dir(strPfadNeuA & strFilename)

             Do While strFName <> ""

                '

                strDateien(intZaehler) = strFName

                '       Ab hier --------------------------------------------------------------------

 

                '       Dokument öffnen

                ChangeFileOpenDirectory strPfadNeuA ' strPfadSpVork Variabel beinhaltet den Pfad für die zu öffnende Datei

                Documents.Open FileName:=strFName, _

                   ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _

§PasswordDocument:="", PasswordTemplate:="", Revert:=False, _

   WritePasswordDocument:="3", WritePasswordTemplate:="", Format:= _

§wdOpenFormatAuto

                '       Beginn Dokument

                Selection.HomeKey Unit:=wdStory

 

                ' Abfrage welche SysEinzugsSchacht-Textmarke im Dokument vorhanden ist

                ' Dann die Variabe strSchachtsetzen mit der Schachtinfo für den Lexmark-Drucker abfüllen

                '

                If ActiveDocument.Bookmarks.Exists("SysEinzugsSchacht1") = True Then

                        strSchachtsetzen = "KeinSchacht"

                End If

                If ActiveDocument.Bookmarks.Exists("SysEinzugsSchacht2") = True Then

                        strSchachtsetzen = "Schacht1"

                End If

                If ActiveDocument.Bookmarks.Exists("SysEinzugsSchacht3") = True Then

                        strSchachtsetzen = "Schacht2"

                End If

                If ActiveDocument.Bookmarks.Exists("SysEinzugsSchacht4") = True Then

                        strSchachtsetzen = "Schacht3"

                End If

                If ActiveDocument.Bookmarks.Exists("SysEinzugsSchacht5") = True Then

                        strSchachtsetzen = "Schacht4"

                End If

                If ActiveDocument.Bookmarks.Exists("SysEinzugsSchacht6") = True Then

                        strSchachtsetzen = "Schacht5"

                End If

                If ActiveDocument.Bookmarks.Exists("SysEinzugsSchacht7") = True Then

                        strSchachtsetzen = "Universalzuführung"

                End If

                If ActiveDocument.Bookmarks.Exists("SysFehlerSchacht") = True Then

                        strSchachtsetzen = "SchachtFehler"

                End If

                If strSchachtsetzen = "" Then

                        strSchachtsetzen = "SchachtFehler Leer"

                End If

 

                '       Schacht setzen unter dem neuen Lexmark T654 Drucker Treiber welche neu auf der Vorlage liegt

                With ActiveDocument.Styles(wdStyleNormal).Font

                        If .NameFarEast = .NameAscii Then

                        .NameAscii = ""

                        End If

                        .NameFarEast = ""

                End With

 

                If strSchachtsetzen = "KeinSchacht" Then                'Schacht 1 ursprünglich -> gehört auf weisse Papier -> Neu Schacht 4

                        strSchachtsetzenNew = "SysEinzugsSchacht4"

                        strDruckerEinstellung = "KeinSchacht -> Schacht 4"

                        ActiveDocument.PageSetup.FirstPageTray = 257

                        ActiveDocument.PageSetup.OtherPagesTray = 257

                ElseIf strSchachtsetzen = "Schacht1" Then         'Schacht 2

                        strSchachtsetzenNew = "SysEinzugsSchacht1"

                        strDruckerEinstellung = "Schacht 1"

                        ActiveDocument.PageSetup.FirstPageTray = wdPrinterUpperBin

                        ActiveDocument.PageSetup.OtherPagesTray = wdPrinterUpperBin

                ElseIf strSchachtsetzen = "Schacht2" Then 'Schacht 3

                        strSchachtsetzenNew = "SysEinzugsSchacht2"

                        strDruckerEinstellung = "Schacht 2"

                        ActiveDocument.PageSetup.FirstPageTray = wdPrinterLowerBin

                        ActiveDocument.PageSetup.OtherPagesTray = wdPrinterLowerBin

                ElseIf strSchachtsetzen = "Schacht 3" Then                       'Schacht 4

                        strSchachtsetzenNew = "SysEinzugsSchacht3"

                        strDruckerEinstellung = "Schacht 3"

                        ActiveDocument.PageSetup.FirstPageTray = wdPrinterMiddleBin

                        ActiveDocument.PageSetup.OtherPagesTray = wdPrinterMiddleBin

                ElseIf strSchachtsetzen = "Schacht 4" Then       'Standardfach 5 (also 4)

                        strSchachtsetzenNew = "SysEinzugsSchacht4"

                        strDruckerEinstellung = "Schacht 4"

                        ActiveDocument.PageSetup.FirstPageTray = 257

                        ActiveDocument.PageSetup.OtherPagesTray = 257

                ElseIf strSchachtsetzen = "Schacht 5" Then                       'Schacht 6

                        strSchachtsetzenNew = "SysEinzugsSchacht5"

                        strDruckerEinstellung = "Schacht 5"

                        ActiveDocument.PageSetup.FirstPageTray = 258

                        ActiveDocument.PageSetup.OtherPagesTray = 258

                ElseIf strSchachtsetzen = "Universalzuführung" Then                       'Schacht 7

                        strSchachtsetzenNew = "SysUniversalzuführung"

                        strDruckerEinstellung = "Schacht Universalzuführung"

                        ActiveDocument.PageSetup.FirstPageTray = wdPrinterPaperCassette

                        ActiveDocument.PageSetup.OtherPagesTray = wdPrinterPaperCassette

                ElseIf strSchachtsetzen <> "0" Then                       'Schacht 7

                        strSchachtsetzenNew = "SysFehlerSchacht"

                        strDruckerEinstellung = "FehlerSchachtDefinition"

                        ActiveDocument.PageSetup.FirstPageTray = 257

                        ActiveDocument.PageSetup.OtherPagesTray = 257

                End If

 

                ''       Da der Schacht 3 bei einer Altlast nicht per Treiber gesteuert werden konnte.

                '        If ActiveDocument.Bookmarks.Exists("SysSchacht3") = True Then

                '          strTextmarkeSchachtsetzen = "SysEinzugsSchacht3"

                '        End If

 

                strTextmarkeDatei(intZaehler) = strSchachtsetzenNew

                strDruckerEinstellungSchacht(intZaehler) = strDruckerEinstellung

                '       Textmarke setzen

                '       Achtung für Briefpapier wurde manchmal Standard oder Schacht 5 gesetzt

                Selection.HomeKey Unit:=wdStory

                Selection.MoveDown Unit:=wdParagraph, Count:=3, Extend:=wdMove

                ActiveDocument.Bookmarks.Add strTextmarkeSchachtsetzen

                ActiveDocument.ActiveWindow.Close SaveChanges:=wdSaveChanges 'Dokument schliessen mit speichern

 

                '       Variablen leeren

                strSchachtsetzenNew = ""

                strDruckerEinstellung = ""

                '       Bis hier -------------------------------------------------------------------

 

                intZaehler = intZaehler + 1

                strFName = Dir()

 

             Loop

             intZaehlerMax = intZaehler

 

             '   Protokoll erstellen:

             ProtokollErstellen

 

        End If

 

        ' Hier werden die Warnungen wieder eingeschaltet!

        Application.DisplayAlerts = True

 

        GoTo Ende:

        Fehler:

        MsgBox "Es muss ein Pfad eingegeben werden der auf diesem PC auch verbunden ist." & vbCrLf & _

        "Der Pfad sollte z.B. wie folgt eingegeben werden: E:\daten\winword\vorlagen_produktiv\001", _

           vbCritical, " Textmarkenvorkommen aller Vorlagen erstellen..."

        Ende:

 

End Sub

 

 

        ' Erstellt 19. April 2001 Pirmin Steiner

        ' Dieses Makro erstellt eine Liste mit allen Textmarkennamen und Dokumentnamen in denen sie vorkommen.

        ' Das Verzeichnis in welchem die Vorlagen liegen kann am Beginn des Moduls in einem InpuBox angegeben werden.

        ' Jedes Dokument daraus wird geöffnet, und nach Textmarken durchsucht.

        ' Geändert: 27.10.2008 ITS/Pirmin Steiner

        ' Damit dieses Makro etwas schneller abgeht wurden die Textmarken und Dokumentnamen nicht mehr

        ' in ein anderes Dokument geschrieben, sondern in ein TXT-File.

        ' Das TXT-File heisst Textmarkenvorkommen_Datum.txt und liegt danach im selben Verzeichnis in welchem

        ' diese Vorlage abgespeichert ist.

        ' Somit können nach Abschluss die Daten aus dem TXT in ein Excel-File übernommen werden. Worin sie

        ' auch besser sortiert werden können.

        '

 

Public Sub ProtokollErstellen()

        '

Dim intNummerAbarb As String

Dim strPfad As String

        '

Dim Zeit1, Sekunde1, Stunde1

        Zeit1 = Time    ' Zeitangabe zuweisen.

        Zeit2 = Time    ' Zeitangabe zuweisen.

        Zeit3 = Time    ' Zeitangabe zuweisen.

        Stunde1 = Hour(Zeit1)

        Minute1 = Minute(Zeit2)

        Sekunde1 = Second(Zeit3)

 

        strProtokollDatum = Date & "_" & Stunde1 & Minute1 & Sekunde1

 

        intNummerAbarb = 0

        '

        'strPfad = ActiveDocument.AttachedTemplate.Path & Application.PathSeparator

        '& vbCrLf & Nummerierung & vbTab & "Dokument" & vbTab & "Textmarke gesetzt" & vbTab & "Druckereinstellung"

        'Dim strPfadNamen As String

        'Dim strDateiNamenPfad As String

 

        intZaehler = 0

        intZaehlerMax = intZaehlerMax - 1

        '----------------------------------------------------------------------------------------------------

        '   Hier wird abgefragt ob es den eintrag 'Textmarke und Dokumentnamen schon gibt.

        '   Wenn es diesen im Zusammenfassungs-Dokument schon gibt wird dieser Eintrag nicht

        '   vorgenommen.

        For intZaehler = 0 To intZaehlerMax                        ' Anzahl Durchläufe festlegen

             '       Ins INI-File schreiben

             intNummerAbarb = Format(intNummerAbarb, "000000000")                                            'Format bestimmen

             System.PrivateProfileString(FileName:=strPfadNeuA & "Protokoll_" & strProtokollDatum & ".txt", _

                   Section:="Protokoll: Textmarken in Dokumenten gesetzt", Key:=intNummerAbarb) = " " & strDateien(intZaehler) & vbTab & strTextmarkeDatei(intZaehler) & vbTab & strDruckerEinstellungSchacht(intZaehler)

             intNummerAbarb = intNummerAbarb + 1

             Count = Count + 1                            ' Counter angeben mit welchem wert

             '            intZaehler = intZaehler + 1

        Next

        '----------------------------------------------------------------------------------------------------

        '   Ende Datum um Zeit ins Txt- File schreiben.

        System.PrivateProfileString(FileName:=strPfadNeuA & "Protokoll_" & strProtokollDatum & ".txt", _

           Section:="Protokoll-Ende", Key:="Zeit") = " " & Date & " " & Time

 

End Sub

 

  

 

Text in MsgBox rechts ausrichten

 

 

Sub RechtsAusrichten()

Dim sRight As String * 100 'String fester Länge deklarieren

Dim sMsg   As String       'MsgBox-Text

 

        sMsg = "Text in MsgBox rechts"

        RSet sRight = sMsg

        MsgBox "gaga" & sRight, vbExclamation, Title:=sMsg

End Sub

 

 

Betriebssystem Bit abfragen

 

        ' Pfad in der Registry angeben

        aSecBetriebs = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

        ' Lesen des Normal Simplex Druckers

        strBetriebs = System.PrivateProfileString(FileName:="", _

           Section:=aSecBetriebs, Key:="PROCESSOR_ARCHITECTURE")

        '   Retourwert 32 Bit = x86

        '   Retourwert 64 Bit = AMD64 oder IA64

        If strBetriebs = "AMD64" Or strBetriebs = "IA64" Then

             strBit = "64 Bit"

        Else

             strBit = "32 Bit"

        End If

 

Betriebssystem abfragen

 

        ' Pfad in der Registry angeben

        aSecBetr = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion"

        ' Lesen des ProductName

        strWindowsEdition = System.PrivateProfileString(FileName:="", _

           Section:=aSecBetr, Key:="ProductName")

        strWindowsServicePack = System.PrivateProfileString(FileName:="", _

           Section:=aSecBetr, Key:="CSDVersion")

        If strWindowsServicePack = "" Then

             strWindowsServicePack = "Service Pack:    -"

        End If

 

 

Registry Eintraege Aendern

 

 

Sub RegistryEintraegeAendern()

        '

        ' Pfad in der Registry angeben

        aSec = "HKEY_CURRENT_USER\Printers\VV Printer"

        ' Lesen des Check Druckers

        System.PrivateProfileString(FileName:="", _

           Section:=aSec, Key:="Check") = "\\genadlprnp001.generali.intra\PR0811644 - Check"

        ' Lesen des FollowMe Druckers

        System.PrivateProfileString(FileName:="", _

           Section:=aSec, Key:="FollowMe") = "\\GENADLPRNP002\FOLLOWME-COLOR"

 

End Sub

 

 

Ausgeblendeter Text Erkennen

 

 

Sub AusgeblendeterTextErkennen()

        If Selection.Type = wdSelectionNormal Then

             If Selection.Font.Hidden = Selection.Font.Hidden = True Then

                MsgBox "There is hidden text in the selection."

             End If

        End If

End Sub

 

 

 

Dataset (Daten in einer Variable in einzelne Teile aufteilen)

 

 

Public Sub DatasetTest()

 

Dim strDataset() As String

Dim strListe As String

Dim arrsplit As Variant

Dim strDelimiter As String

Dim intZaehler As Integer

Dim a As Integer

        ReDim strDataset(10000)

 

        ' Dataset kann zum Beispiel folgender String sein:

        ' Daten01;Daten02;Daten03;Daten04;Daten05;Daten06;Daten07

        ' Dieser wird dann in einzelne Werte (getrennt durch den Delimiter) aufgeteilt.

 

        strDelimiter = ";"                                                         'Trennung der Datenzeile mit...

 

        If ActiveDocument.Bookmarks.Exists("dataset") = True Then              'Existiert die Textmarke

             strListe = ActiveDocument.Bookmarks("dataset").Range.Text

             arrsplit = Split(strListe, strDelimiter)                           'Festzustellen wann fertig ist.

             'Hier noch in die einzelnen Verte abfüllen (sind jedoch in arrSplit(0),arrSplit(1),usw schon enthalten)

             If strListe = "" Then

                'Nichts machen, Variabel ist ja leer

             Else

                For intZaehler = LBound(arrsplit) To UBound(arrsplit)

                        strDataset(a) = arrsplit(intZaehler)

                        a = a + 1

                Next intZaehler

             End If

        End If

End Sub

 

 

Dataset (Daten aus String und Unterstring in einzelne Teile aufteilen)

 

        ' Hier als Beispiel für einen String, der aufgefüllt wurde um die Papierquelle der einezelnen Seiten aufzuschlüsseln.

 

 

Public Sub SeitePapierart()

Dim strSeiten() As String

        ReDim strSeiten(9)

Dim strPapierart() As String

        ReDim strPapierart(9)

 

Dim strSeitePapier() As String

        ReDim strSeitePapier(9)

Dim arrsplit() As String

        strDelimiter = ";"

        strSubDelimiter = ","

 

        strSeitenPapierart = "Seite1,Briefpapier;Seite2,Policenpapier;Seite3,Weissespapier;Seite4,MTpapier;Seite5,ESRpapier"

 

        arrsplit = Split(strSeitenPapierart, strDelimiter)                              ' Grobsplittung ;

 

        For i = 0 To UBound(arrsplit)

             strSeitePapier() = Split(arrsplit(i), strSubDelimiter)                      ' Feinsplittung

             strSeiten(i) = strSeitePapier(0)

             strPapierart(i) = strSeitePapier(1)

        Next i

 

        '   Zum besseren Verständniss, die Aufsplittung in einzelne Variablen

        str_01_Seite = strSeiten(0)

        str_01_Paperart = strPapierart(0)

 

        str_02_Seite = strSeiten(1)

        str_02_Paperart = strPapierart(1)

 

        str_03_Seite = strSeiten(2)

        str_03_Paperart = strPapierart(2)

 

        str_04_Seite = strSeiten(3)

        str_04_Paperart = strPapierart(3)

 

        str_05_Seite = strSeiten(4)

        str_05_Paperart = strPapierart(4)

 

        str_06_Seite = strSeiten(5)

        str_06_Paperart = strPapierart(5)

 

        str_07_Seite = strSeiten(6)

        str_07_Paperart = strPapierart(6)

 

        str_08_Seite = strSeiten(7)

        str_08_Paperart = strPapierart(7)

 

        str_09_Seite = strSeiten(8)

        str_09_Paperart = strPapierart(8)

 

        str_10_Seite = strSeiten(9)

        str_10_Paperart = strPapierart(9)

 

End Sub

 

 

Dataset, Anzahl Strings

 

 

Sub AnzalStrinsAusgeben()

        arLines = Split("Test1.Text.tess", ".")

        For i = 0 To UBound(arLines)

             MsgBox i

        Next i

End Sub

 

 

Wieviel Zeichen Hat der String

 

 

Sub AnzahlZeichenHatDerString()

Dim intLaenge As Integer

        intLaenge = Len("1234")

        MsgBox intLaenge ' Ergebnis ist 4

End Sub

 

Alle Drucker auslesen (nicht getestet)

 

Option Explicit

 

 

Sub TestPrinter()

        Debug.Print Application.ActivePrinter

        ChangePrinter "FreePDF*"

        Debug.Print Application.ActivePrinter

        ChangePrinter "*HP LaserJet 5*"

        Debug.Print Application.ActivePrinter

End Sub

 

 

Sub ListAllPrinters()

Dim WshNetwork As Object, objPrinters As Object, i As Integer

 

        Set WshNetwork = CreateObject("WScript.Network")

        Set objPrinters = WshNetwork.EnumPrinterConnections

 

        For i = 0 To objPrinters.Count - 1 Step 2

             Debug.Print objPrinters.Item(i + 1) & " an " & objPrinters.Item(i)

        Next

        Set WshNetwork = Nothing

End Sub

 

 

Function ChangePrinter(ByVal strPrinter As String) As Boolean

Dim WshNetwork As Object, objPrinters As Object, i As Integer

 

        Set WshNetwork = CreateObject("WScript.Network")

        Set objPrinters = WshNetwork.EnumPrinterConnections

 

        For i = 1 To objPrinters.Count Step 2

             If objPrinters.Item(i) Like strPrinter Then

                WshNetwork.SetDefaultPrinter objPrinters.Item(i)

                ChangePrinter = True

                Exit For

             End If

        Next

        Set WshNetwork = Nothing

End Function

 

 

Ganzes Dokument in Range nehmen

 

 

Sub DocumentRange()

        Set myrange = ActiveDocument.Range          'Ganzes Dokument in Range

        myrange.Select                              'Ganzes Dokument markieren

        Selection.EndKey                            'Die Markierung aufheben! Ansonsten wird weiter markiert.

        Selection.HomeKey Unit:=wdStory             'Oder zu Beginn springen

End Sub

 

        Könnte auch einfach mit Selection.WholeStory erfolgen

 

 

Offenes Dokument in E-Mail setzen inkl. Empfänger

 

 

Sub DokumentAnAdresseSenden()

Dim outl As Object

Dim Mail As Object

        Set outl = CreateObject("Outlook.application")

        Set Mail = outl.createitem(olmailitem)

        Mail.Subject = "Mein Betreff"

        Mail.to = "xxx@yyyyyx.de"

        Mail.attachments.Add ActiveDocument.Path & "\" & ActiveDocument.name

        Mail.Display

        Set outl = Nothing

        Set Mail = Nothing

End Sub

 

 

Verweise auflisten

 

        ' Listet (schreibt diese ins Dokument) die Verweise des Normal.dotm auf

 

Sub VBEVerweiseNormal()

Dim intVerweisZaehler As Integer

Dim strVBVerweis As String

Dim strVBVerweisWert As String

Dim strVBZusammenfassung As String

Dim strVBVerweiseVon As String

 

Dim vbp As Object  'VBProject

        Set vbp = NormalTemplate.VBProject  '

        For intVerweisZaehler = 1 To vbp.References.Count

             strVBVerweiseVon = vbp.name

             strVBVerweis = vbp.References(intVerweisZaehler).name

             strVBVerweisWert = vbp.References(intVerweisZaehler).FullPath

             strVBZusammenfassung = strVBZusammenfassung & strVBVerweis & vbCrLf & strVBVerweisWert & vbCrLf

             '  msg = msg & vbp.References(i).name & vbCrLf & vbp.References(i).FullPath & vbCrLf

        Next intVerweisZaehler

        'Call MsgBox(msg, vbInformation, "Auflistung der Verweise für: " & vbp.name)

        'Selection.TypeText Text:="Auflistung der Verweise für:  " & strVBVerweiseVon & vbCrLf & "----------------------------------" & vbCrLf & strVBZusammenfassung

        MsgBox "Auflistung der Verweise für:  " & strVBVerweiseVon & vbCrLf & "----------------------------------" & vbCrLf & strVBZusammenfassung

 

End Sub

 

 

Datum oder Zahl prüfen ob diese grösser oder kleiner ist 'iif' (Ergebnis in Variable)

 

 

Sub DatumPruefenGroeserKleiner()

 

Dim strBriefdatumPlusAlsDatum As Date

Dim datdatumheute As Date

 

        intBriefdatumPlus = 7

        strBriefdatumPlusAlsDatum = "12.03.2013"

        datdatumheute = "01.03.2013"

 

        Prüfen = IIf(strBriefdatumPlusAlsDatum > datdatumheute, "Grösser", "Kleiner")

 

End Sub

 

 

Verweise im Projekt hinzufügen

 

        ' Gibt ein Fehler beim Einzelschritt

 

 

Sub Verweishinzufuegen()

        On Error Resume Next

 

        VBE.ActiveVBProject.References.AddFromFile "H:\Templates\WordStartUp\generali.dotm"

 

End Sub

 

 

Sub VerweishinzufuegenTwo()

 

Dim I As Integer

Dim strDateiPfad(1) As String  'gilt für 1 Verweise (klar!)

 

        strDateiPfad(1) = "H:\Templates\WordStartUp\generali.dotm"

        '    strDateiPfad(2) = "C:\WINDOWS\system32\stdole2.tlb"

        '    strDateiPfad(3) = "C:\WINDOWS\system32\MSCOMCTL.OCX"

        '    strDateiPfad(4) = "C:\Programme\Microsoft Office\Office10\MSCAL.OCX"

 

        On Error GoTo fehler

        'Hier werden die Verweise zugewiesen.

        'Falls ein Verweis schon existiert, wird ein Fehler 32813 ausgeworfen,

        'der in der Fehlerbehandlung abgefangen wird.

        For I = 1 To 1

             VBE.ActiveVBProject.References.AddFromFile strDateiPfad(I)

        Next I

        Exit Sub

        fehler:

        If Err.Number = 32813 Then Resume Next

End Sub

 

        oder:

 

        NormalTemplate.VBProject.References.AddFromFile _

           FileName:="C:\My Documents\RefMe.dotm"

 

        oder:

 

        ' Fügt ein Verweis beim Aktiven Projekt hinzu

        VBE.ActiveVBProject.References.AddFromFile "H:\Templates\WordStartUp\RefMe.dotm"

 

 

Modul in Normal.dotm importieren

 

 

Sub NormalImport()

        'Import the BAS file into Normal.

        NormalTemplate.VBProject.VBComponents.Import _

           FileName:="C:\My Documents\AddMeModule.bas"

        '  Könnte dann auch gestartet werden

        'Run the named macro.

        Application.Run "AddMeMacro"

End Sub

 

 

Modul von einer anderen Vorlage ins Normal.dotm kopieren

 

        'Das folgende Beispielmakro kopiert ein Modul namens "CopyMeModule" aus einer Vorlage "CopyMod.dot" in die Vorlage "Normal.dotm": (ungetestet)

 

Sub OrgCopy()

        'Specifies the source, destination, name

        ' and the type of object being copied.

        Application.OrganizerCopy Source:="C:\My Documents\CopyMod.dotm", _

           Destination:=NormalTemplate.FullName, Name:="CopyMeModule", _

§Object:=wdOrganizerObjectProjectItems

End Sub

 

 

Abfragen ob die Variable eine Zahl oder Datum enthält

 

 

Public Sub AbfragenZahl()

        'Abfrage ob die Variable eine Zahl enthält

Dim strEingabe As String

        strEingabe = "01.03.2013"

        If IsNumeric(strEingabe) Then

             MsgBox strEingabe & " ist eine Nummerische Zahl."

        Else

             MsgBox strEingabe & " ist keine Nummerische Zahl."

        End If

 

        'Abfrage ob die Variable ein Datum enthält

        strEingabe = "2013.03.08"

        If IsDate(strEingabe) Then

             'wenn ja umwandeln in ein gewünschtes Format

             strEingabe = Format(strEingabe, "dd.mm.yyyy")

             MsgBox strEingabe & " ist ein Datum."

        Else

             MsgBox strEingabe & " ist keine Datum."

        End If

End Sub

 

 

 

Einzelne Zeichen eines Strings ersetzen

 

 

Public Sub VariableInhaltZeichenErsetzen()

 

        strdateinamelang = "Produkt_SP75O1/2/3/4_FA"

        ' Einzelne Zeichen eines Strings ersetzen? Zum Beispiel / durch -

        ' Das geht mit der Replace-Funktion von VB 6 so:

 

        ' alle '/' durch '-' ersetzen

        sString = Replace(strdateinamelang, "/", "-")

 

        ' oder alle "a" durch "e" ersetzen

        sString = "xxxxayyyyyammmmm"

        sString = Replace(sString, "a", "e")

 

End Sub

 

 

Inhalt einer Textdatei in eine Variable speichern

 

 

        '       strTextDatei = strPfadNeuA & strFName

        strTextDatei = "C:\TEMP\" & "Testfile.txt"

 

        Set fso = CreateObject("Scripting.FileSystemObject")

        strTextinhalt = (fso.OpenTextFile(strTextDatei).readall)

 

 

Absatzmarke in markiertem Text ersetzen

 

 

Sub AbsatzmarkeInSelectionErsetzen()

        strbetreff = Selection.Text

        strbetreff = Replace(strbetreff, Chr(13), Chr(11))

        Selection.TypeText strbetreff

End Sub

 

 

Text aus TXT-Dateien in einem Dokument auflisten

 

        In Variable diese zu ersetzen geht leider nicht. Daher einen kleinen Umgweg mit eingefügten Text markieren suchen ersetzen und wieder einfügen.

 

        strTextDatei = strPfadNeuA & strFName

        '        strTextDatei = "C:\TEMP\" & "Testfile.txt"

 

        Set fso = CreateObject("Scripting.FileSystemObject")

        strTextinhalt = (fso.OpenTextFile(strTextDatei).readall)

 

        Selection.Style = ActiveDocument.Styles("Überschrift 2")

        Selection.TypeText strFName               'Titel

        Selection.TypeParagraph

        Selection.Style = ActiveDocument.Styles("tarife_1")   ' Nachfolgende Formatvorlage

        ActiveDocument.Bookmarks.Add Range:=Selection.Range, name:="SysBeginn"

 

        Selection.TypeText strTextinhalt          'Text

        ActiveDocument.Bookmarks.Add Range:=Selection.Range, name:="SysEnde"

 

        Set myRange = ActiveDocument.Bookmarks("SysBeginn").Range

        myRange.SetRange Start:=myRange.Start, _

           End:=ActiveDocument.Bookmarks("SysEnde").Range.End

        myRange.Select

 

        strbetreff = Replace(myRange, Chr(13), Chr(11))

        Selection.TypeText strbetreff

        Selection.EndKey            'Die Markierung aufheben! Ansonsten wird weiter markiert.

 

        Selection.TypeParagraph

        Selection.TypeParagraph

 

 

Suchen Ersetzen in Fusszeilen

 

 

Sub FooterTextReplace()

Dim oSection As Word.Section

Dim oRange As Word.Range

Dim var

        For Each oSection In ActiveDocument.Sections()

             For var = 1 To 3

                Set oRange = oSection.Footers(var).Range

                oRange.Find.Execute FindText:=" \* MERGEFORMAT ", _

                   ReplaceWith:="", Replace:=wdReplaceAll

                Set oRange = Nothing

             Next

        Next

End Sub

 

 

Wörter Zählen in einem Dokument

 

 

Sub WoerterZahlen()

Dim intAnzahlWoerter As Integer

Dim strSuchWort As String

        strSuchWort = " \* MERGEFORMAT "

        '    With ActiveDocument.Content.Find

        With ActiveDocument.Selection.Text

             Do While .Execute(FindText:=strSuchWort, Forward:=True, Format:=True, _

                   MatchWholeWord:=True) = True

                intAnzahlWoerter = intAnzahlWoerter + 1

             Loop

        End With

        MsgBox "Das Wort: '" & strSuchWort & "' wurde " & intAnzahlWoerter & "  x gefunden."

End Sub

 

 

Wörter Zählen von einer Markierung im Dokument

 

 

Sub WoerterZahlenvonMarkierung()

Dim intAnzahlWoerter As Integer

Dim strSuchWort As String

        strSuchWort = " \* MERGEFORMAT "

        With Selection.Find

             Do While .Execute(FindText:=strSuchWort, Forward:=True, Format:=True, _

                   MatchWholeWord:=True) = True

                intAnzahlWoerter = intAnzahlWoerter + 1

             Loop

        End With

        '

        MsgBox "Das Wort: '" & strSuchWort & "' wurde " & intAnzahlWoerter & "  x gefunden."

End Sub

 

        oder, so, dass die Markierung welche zuvor war wieder erstellt wird. Markierung bleibt

 

 

Sub WoerterZahlenvonMarkierungBehalten()

Dim intAnzahlWoerter As Integer

Dim strSuchWort As String

        strSuchWort = " \* MERGEFORMAT "

        With Selection.Find

             ActiveDocument.Bookmarks.Add Range:=Selection.Range, name:="SysMarkierung"

             Set myRange = ActiveDocument.Bookmarks("SysMarkierung").Range

             myRange.SetRange Start:=myRange.Start, _

                   End:=ActiveDocument.Bookmarks("SysMarkierung").Range.End

             Do While .Execute(FindText:=strSuchWort) = True

                intAnzahlWoerter = intAnzahlWoerter + 1

             Loop

        End With

        myRange.Select                                                                'myRange markieren

        '

        MsgBox "Das Wort: '" & strSuchWort & "' wurde " & intAnzahlWoerter & "  x gefunden."

        'Selection.EndKey                                                              'Die Markierung aufheben!

        ActiveDocument.Bookmarks("SysMarkierung").Delete

End Sub

 

 

Texdatei Erstellen und etwas reinschreiben

 

 

Sub TexdateiErstellenReinschreiben()

        Open "C:\TEMP\Textdatei.txt" For Output As #1

        Print #1, "Hallo dies ist der Inhalt der Textdatei.txt"

        Close #1

End Sub

 

 

Dokumente in den Formaten .doc, .docx, .docm erstellen

 

        'Dokument ".doc" erstellen und speichern:

        Documents.Add DocumentType:=wdNewBlankDocument

        ActiveDocument.SaveAs FileName:="C:\TEMP\doutput.doc", FileFormat:=wdFormatDocument

        ActiveDocument.ActiveWindow.Close SaveChanges:=wdSaveChanges

 

        'Dokument ".docx" erstellen und speichern:

        Documents.Add DocumentType:=wdNewBlankDocument

        ActiveDocument.SaveAs2 FileName:="C:\TEMP\doutput.docx", FileFormat:=wdFormatXMLDocument

        ActiveDocument.ActiveWindow.Close SaveChanges:=wdSaveChanges

 

        'Dokument ".docm" erstellen und speichern:

        Documents.Add DocumentType:=wdNewBlankDocument

        ActiveDocument.SaveAs2 FileName:="C:\TEMP\doutput.docm", FileFormat:=wdFormatXMLDocumentMacroEnabled

        ActiveDocument.ActiveWindow.Close SaveChanges:=wdSaveChanges

 

        dotx = wdFormatXMLTemplate

        dotm = wdFormatXMLTemplateMacroEnabled

 

        Name

   Value

        Description

        wdFormatDocument

        0

        Microsoft Office Word 97 - 2003 binary file format.

        wdFormatDOSText

        4

        Microsoft DOS text format.

        wdFormatDOSTextLineBreaks

        5

        Microsoft DOS text with line breaks preserved.

        wdFormatEncodedText

        7

        Encoded text format.

        wdFormatFilteredHTML

        10

        Filtered HTML format.

        wdFormatFlatXML

        19

        Open XML file format saved as a single XML file.

        wdFormatFlatXML

        20

        Open XML file format with macros enabled saved as a single XML file.

        wdFormatFlatXMLTemplate

        21

        Open XML template format saved as a XML single file.

      wdFormatFlatXMLTemplateMacroEnabled

        22

        Open XML template format with macros enabled saved as a single XML file.

        wdFormatOpenDocumentText

        23

        OpenDocument Text format.

        wdFormatHTML

        8

        Standard HTML format.

        wdFormatRTF

        6

        Rich text format (RTF).

        wdFormatStrictOpenXMLDocument

        24

        Strict Open XML document format.

        wdFormatTemplate

        1

        Word template format.

        wdFormatText

        2

        Microsoft Windows text format.

        wdFormatTextLineBreaks

        3

        Windows text format with line breaks preserved.

        wdFormatUnicodeText

        7

        Unicode text format.

        wdFormatWebArchive

        9

        Web archive format.

        wdFormatXML

        11

        Extensible Markup Language (XML) format.

        wdFormatDocument97

        0

        Microsoft Word 97 document format.

        wdFormatDocumentDefault

        16

        Word default document file format. For Word, this is the DOCX format.

        wdFormatPDF

        17

        PDF format.

        wdFormatTemplate97

        1

        Word 97 template format.

        wdFormatXMLDocument

        12

        XML document format.

        wdFormatXMLDocumentMacroEnabled

        13

        XML document format with macros enabled.

        wdFormatXMLTemplate

        14

        XML template format.

        wdFormatXMLTemplateMacroEnabled

        15

        XML template format with macros enabled.

        wdFormatXPS

        18

        XPS format.

       

 

Das Datum -1 Tagen rechnen

 

        ' Erstellt 18.06.2013 ITS/P.Steiner

        ' Das Briefdatum -1 Tagen rechnen.

        ' Diese dann auf die neue Textmarke neues Tagum legen und die Textmarke

        ' wieder neu setzen

 

Dim Datum1 As Date    ' Variablen deklarieren.

Dim IntervallTyp As Variant

Dim Zahl As Integer

Dim strBriefdatum As Date

 

 

Public Sub MAIN()

        '

        If ActiveDocument.Bookmarks.Exists("briefdatum") = True Then

             strBriefdatum = ActiveDocument.Bookmarks("briefdatum").Range.Text  ' TM Inhalt in Variable lesen

             IntervallTyp = "d"    ' "d" gibt Tag als Intervall an.

             Zahl = -1

             strDatumNeu = DateAdd(IntervallTyp, Zahl, strBriefdatum)

             If ActiveDocument.Bookmarks.Exists("SysNeuesDatum") Then

                Set rng = ActiveDocument.Bookmarks("SysNeuesDatum").Range

                rng.Text = strDatumNeu

                ActiveDocument.Bookmarks.Add "SysNeuesDatum", rng

             End If

        End If

End Sub

 

 

Word Datei als PDF-Datei abspeichern

 

 

Sub WordAlsPDF_Speichern()

        ' Erstellt: ITS/P.Steiner 18.09.2013

        ' Word-Dokument wird mit gleichem Dateinamen am selben Speicher-Ort

        ' als PDF-Datei abgespeichert.

        ' Sollte schon eine PDF-Datei am selben Ort vorhanden sein, wird

        ' diese ohne Meldung überschrieben.

 

        ' Wird mit dem ShortCut Ctrl + Alt + 5 gestartet

 

        On Error GoTo PDFError:

 

Dim Pfad As String

Dim strPfad As String

Dim strDoknamePDF As String

Dim strDateiVorhanden As String

 

        strPfad = ActiveDocument.Path

        If strPfad <> "" Then

             strPfad = strPfad & Application.PathSeparator

        End If

 

        strDoknamePDF = ActiveDocument.Name

        'Dateinamen kürzen. So, dass dieser ohne Endung (Extension besteht)

        Pos = InStr(strDoknamePDF, ".")

        If Pos > 0 Then

             strDoknamePDF = Left(strDoknamePDF, Pos - 1)

        End If

 

        ActiveDocument.ExportAsFixedFormat OutputFileName:=strPfad & strDoknamePDF, ExportFormat:=wdExportFormatPDF, _

        OpenAfterExport:=True, OptimizeFor:=wdExportOptimizeForPrint, Range:= _

        wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentContent, _

        IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _

        wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _

        True, UseISO19005_1:=False

        'Bei Problemen ExportFormat:=wdExportFormatPDF ändern auf ExportFormat:=17

 

        ' Abfragen ob es die neue Datei "PDF" gibt

        strDateiVorhanden = Dir(strPfad & strDoknamePDF & ".pdf")

        If strDateiVorhanden <> "" Then

             MsgBox "Dokument als PDF erstellt: OK"

        Else

             MsgBox "Dokument nicht als PDF erstellt: NOK"

        End If

 

        GoTo PDFEnde:

        PDFError:

        MsgBox "Dokument nicht als PDF erstellt: NOK"

        PDFEnde:

End Sub

 

 

Funktion aufrufen und Variablenwerte mitgeben

 

        ' Prozedur welche die Funktion aufruft und den ermittelten Wert zurückbekommt.

        ' Beim Aufruf können Werte mittels Variablen mitgegeben werden (am Besten nicht die gleichen Variablen verwenden).

        ' Die mitgabe der Werte wird mittels die erste, zweite usw. mitgegeben. Darum können (sollen) die Variablen

        ' auch unterschiedlich heissen.

 

 

Sub TestLaufFunktion()

Dim intSpracheUebergabe As Integer

Dim datDatumNeu As Date

        datDatumNeu = "12.07.2013"

        intSpracheUebergabe = 4

        '                                  1.Variable ,  2.Variable

        strDatumLongSprach = FormatDat(datDatumNeu, intSpracheUebergabe)

        '   strDatumLongSprach = FormatDat("31.10.2013", 1)  ' oder so

        MsgBox strDatumLongSprach

End Sub

 

 

        ' In dieser Funktion wird das Datum im Long Format zurückgegeben (Oktober 2013). Da es nicht Sprachabhängig geht

        ' hier diese Funktion bei der man auch die Sprache mitgeben und im Long Format zurückerhält.

 

 

Public Function FormatDat(Datum As Date, intSprache As Integer) As String

        '                        1.Variable    , 2.Variable

Dim DD              As String

Dim MMM             As String

Dim YYYY            As String

        If intSprache = 1 Then

             DD = Format(Datum, "dd")

             MMM = Choose(Month(Datum), "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")

             YYYY = Format(Datum, "yyyy")

             FormatDat = MMM & " " & YYYY

        ElseIf intSprache = 2 Then

             DD = Format(Datum, "dd")

             MMM = Choose(Month(Datum), "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")

             YYYY = Format(Datum, "yyyy")

             FormatDat = MMM & " " & YYYY

        ElseIf intSprache = 3 Then

             DD = Format(Datum, "dd")

             MMM = Choose(Month(Datum), "gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settebre", "ottobre", "novembre", "dicembre")

             YYYY = Format(Datum, "yyyy")

             FormatDat = MMM & " " & YYYY

        ElseIf intSprache = 4 Then

             DD = Format(Datum, "dd")

             MMM = Choose(Month(Datum), "january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "December")

             YYYY = Format(Datum, "yyyy")

             FormatDat = MMM & " " & YYYY

        End If

End Function

 

 

Datum in Longdatum umwandeln nach Sprache

 

        ' Erstellt: 31.10.2013 ITS/rol/stp

        ' Anhand des Briefdatums wird auf die Textmarke SysNeuesDatum nur der

        ' Monat und das Jahr gelegt (November 2013). Jedoch wird, wenn das Briefdatum nach dem 16. des Monats ist,

        ' 2 Monate und sonst 1 Monat dazugezählt.

        ' Da VBA eigentlich keine Sprachübersetzung liefert, (es wird die Sprache der Installation geliefert)

        ' wird der Monat für das Long Dat in der unteren Funktion in die benötigte Sprache übersetzt.

        '

Dim IntervallTyp             As Variant

Dim intMonatDazu             As Integer

Dim datBriefdatum            As Date

Dim datDatumNeu              As Date

Dim datTagDate               As Integer

Dim intDokumentSprache       As Integer

Dim datSysbriefdatumplusLong As Variant

 

 

Public Sub MAIN()

        '

        If ActiveDocument.Bookmarks.Exists("sprache") = True Then

             intDokumentSprache = ActiveDocument.Bookmarks("sprache").Range.Text

             If ActiveDocument.Bookmarks.Exists("briefdatum") = True Then

                datBriefdatum = ActiveDocument.Bookmarks("briefdatum").Range.Text

                '       datBriefdatum = Date  ' Oder einfach das heutige aktuelle Datum

                '   Abfrage welchen Tag es ist.

                datTagDate = Format(datBriefdatum, "dd")

                '   Wenn es nach dem 16. des Monates ist dann wird 2 Monate gewartet, sonst nur 1 Monat

                If datTagDate >= 16 Then

                        intMonatDazu = 2

                Else

                        intMonatDazu = 1

                End If

                IntervallTyp = "m"    ' "m" gibt Monat als Intervall an.

                datDatumNeu = DateAdd(IntervallTyp, intMonatDazu, datBriefdatum)

                '       Hier der Aufruf der Funktion und Rückgabe des Wertes

                '       Mitgegeben wird, das Datum und die Sprache

                strDatumLongSprach = FormatDat(datDatumNeu, intDokumentSprache)

                If ActiveDocument.Bookmarks.Exists("SysNeuesDatum") Then

                        Set rng = ActiveDocument.Bookmarks("SysNeuesDatum").Range

                        rng.Text = strDatumLongSprach

                        ActiveDocument.Bookmarks.Add "SysNeuesDatum", rng  'TM wieder setzen

                End If

             End If

        End If

End Sub

 

 

        ' Da es für das Long Datum keine Übersetzung gibt (habe jedenfalls keine gefunden)

        ' Wird der Monat hier in der Funktion in die verlangte Sprache übersetzt.

        ' Die Funktion erhält mit Variablen das Datum und die benötigte Sprache

 

Public Function FormatDat(Datum As Date, intSprache As Integer) As String

Dim strTag              As String

Dim strMonat             As String

Dim strJahr            As String

        If intSprache = 1 Then             ' Deutsch

             strMonat = Choose(Month(Datum), "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")

        ElseIf intSprache = 2 Then         ' Französisch

             strMonat = Choose(Month(Datum), "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")

        ElseIf intSprache = 3 Then         ' Italienisch

             strMonat = Choose(Month(Datum), "gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settebre", "ottobre", "novembre", "dicembre")

        ElseIf intSprache = 4 Then         ' Englisch

             strMonat = Choose(Month(Datum), "january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december")

        ElseIf intSprache = 11 Then        ' Spanisch

             strMonat = Choose(Month(Datum), "enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre")

        End If

        'strTag = Format(Datum, "dd")

        strJahr = Format(Datum, "yyyy")

        FormatDat = strMonat & " " & strJahr

        '

End Function

 

 

Monatsende ermitteln

 

 

Sub Monatsende()

Dim DaDatum As Date

        DaDatum = "20.02.13"

        MsgBox "Monatsende " & DateSerial(Year(DaDatum), Month(DaDatum) + 1, 1) - 1

End Sub

 

Quartal ermitteln

 

 

Sub QuartalErmitteln()

        MsgBox "Das Datum ist im Quartal: " & Quartal("05.11.2012")

End Sub

 

 

Function Quartal(datWert As Date) As Integer

Dim intMonat As Integer

        intMonat = Month(datWert)

 

        If intMonat = 1 Or intMonat = 2 Or intMonat = 3 Then

             Quartal = 1

        ElseIf intMonat = 4 Or intMonat = 5 Or intMonat = 6 Then

             Quartal = 2

        ElseIf intMonat = 7 Or intMonat = 8 Or intMonat = 9 Then

             Quartal = 3

        ElseIf intMonat = 10 Or intMonat = 11 Or intMonat = 12 Then

             Quartal = 4

        End If

End Function

 

 

Anzahl Wochen im Jahr mit VBA errechnen

 

 

Sub Test_AnzWo()

        AnzWo Year(Date)

End Sub

 

 

Sub AnzWo(XJahr As Integer)

Dim DieWochen As Integer, i As Integer

        For i = 31 To 28 Step -1

             DieWochen = DIN_KW(DateSerial(XJahr, 12, i))

             If DieWochen > 1 Then Exit For

        Next

        MsgBox DieWochen

End Sub

 

 

Public Function DIN_KW(DasDatum As Date) As Byte

Dim KW As Date

        KW = 4 + DasDatum - Weekday(DasDatum, 2)

        DIN_KW = (KW - DateSerial(Year(KW), 1, -6)) \ 7

End Function

 

 

Anzal Wochen seit einem Datum ermitteln (DateDiff-Funktion)

 

 

        yyyy Jahr

        q Quartal

        m Monat

        y Tag des Jahres

        d Tag

        w Wochentag

        ww   Woche

        h Stunde

        n Minute

        s Sekunde

 

 

Sub AnzalWochenSeitDatumErmitteln()

Dim TheDate As Date    ' Declare variables.

Dim Msg

        TheDate = "01.11.2013"

        Msg = "Anzahl Wochen seit dann: " & DateDiff("ww", TheDate, Now)

        MsgBox Msg

End Sub

 

        oder mehr angaben:

 

 

Sub TestRechnen()

Dim inttage As Integer

Dim lonStunden As Long

Dim lonKosten As Long

Dim strEingabedatum As Date

Dim intAnzWochen As Integer

 

        strEingabedatum = "14.08.2013"

 

        inttage = (DateDiff("d", Date, strEingabedatum)) * -1

        intAnzWochen = DateDiff("ww", strEingabedatum, Date)

        intAnzStunden = DateDiff("h", strEingabedatum, Now)

        lonStunden = inttage * 24

        lonKosten = inttage * 8

        Kosten = Format(lonKosten, "##,##0.00")

 

        MsgBox "Es sind bis Heute :" & vbCr & _

        "Stunden " & vbTab & intAnzStunden & vbCr & _

        "Tage " & vbTab & inttage & vbCr & _

        "Wochen " & vbTab & intAnzWochen & vbCr & _

        "Kosten " & vbTab & Kosten & vbCr

        '"Anzahl Wochen seit dann: "

End Sub

 

 

SonderZeichen Entfernen

 

 

Public Sub SonderZeichenEntfernen()

        ' Z.B. bei Erstellung eines Dateinamens oder Ordners

        ' Da dürfen diese Sonderzeichen nicht enthalten sein

 

Dim strSchadenNr As String

Dim Regex

 

        strSchadenNr = "1\2/3:4*5?6<7>8|9 10"

 

        Set Regex = CreateObject("Vbscript.Regexp")

        With Regex

             .Pattern = "(\/|:|\\|\*|\?|""|<|>|\||\.)"

             .Global = True

             strSchadenNr = .Replace(strSchadenNr, "")

        End With

 

End Sub

 

 

Datei kopieren auch wenn sie geöffnet ist

 

        'Denn FileCopy geht nicht, wenn eine Datei von Office geöffnet ist.

Option Explicit

        ' Benötigte API-Deklaration

Private Declare Function CopyFile Lib "kernel32" _

   Alias "CopyFileA" ( _

§ByVal lpExistingFileName As String, _

   ByVal lpNewFileName As String, _

§ByVal bFailIfExists As Long) As Long

 

 

Sub TestDateiKopieren()

 

Dim strQuelldatei As String

Dim strZieldatei As String

Dim strDateiVorhandenStartup

 

        strQuelldatei = "C:\TEMP\0000.docx"              ' Namen und Pfad der Quelldatei1 festlegen.

        strZieldatei = "C:\TEMP\1111.docx"   ' Namen und Pfad der Zieldatei1 festlegen.

 

        '    MsgBox FileCopy(strQuelldatei, strZieldatei)                       ' Quell- in Zieldatei1 kopieren.

        FileCopy strQuelldatei, strZieldatei                        ' Quell- in Zieldatei1 kopieren.

 

        strDateiVorhandenStartup = Dir("C:\TEMP\1111.docx")

 

        If strDateiVorhandenStartup = "1111.docx" Then

             MsgBox "Die Datei 1111.docx wurde kopiert."

        Else

             MsgBox "Die Datei AutomSchachtUmstBriefpVaduz.dotm konnte nicht kopiert werden. Oder ist schon vorhanden."

        End If

 

End Sub

 

        ' Ersetzen des FileCopy-Befehls von VB :-)

 

Public Function FileCopy(ByVal sSourceFile As String, _

   ByVal sDestFile As String, _

§Optional ByVal bAlwaysOverwrite As Boolean = True) As Boolean

 

Dim nResult As Long

 

        nResult = CopyFile(sSourceFile, sDestFile, CLng(Abs(Not bAlwaysOverwrite)))

        FileCopy = (nResult <> 0)

End Function

 

 

Zwischenablage löschen

 

Private Declare Function OpenClipboard& Lib "user32" (ByVal hwnd As Long)

Private Declare Function EmptyClipboard Lib "user32" () As Long

Private Declare Function CloseClipboard& Lib "user32" ()

 

Private Sub SChlieessenn()

        'Workbook_BeforeClose(Cancel As Boolean)

        ClearClipboard

End Sub

 

 

Public Sub ClearClipboard()

        OpenClipboard 0&

        EmptyClipboard

        CloseClipboard

End Sub

 

        oder

 

 

Sub ClearClear()

        'Es muss ein Verweis auf Microsoft Forms 2.0 Object Library gesetzt sein

        'direkt oder indirekt!!

Dim o As DataObject

        Set o = New DataObject

        o.SetText ""

        o.PutInClipboard

        Set o = Nothing

End Sub '

 

 

Excel Mehrere Zellen markieren mittels Wert in Variable

 

 

Sub mehrere_Bereiche3()

Dim RaBereich As Range

Dim intSpalte As Integer

        intSpalte = ActiveCell.Column

        '                           Cells(Zeile, Spalte)

        Set RaBereich = Union(Range(Cells(1, 1), Cells(1, 1)), _

           Range(Cells(3, intSpalte), Cells(3, intSpalte)), _

§Range(Cells(5, intSpalte), Cells(8, intSpalte)), _

   Range(Cells(10, intSpalte), Cells(16, intSpalte)), _

§Range(Cells(18, intSpalte), Cells(26, intSpalte)), _

   Range(Cells(28, intSpalte), Cells(30, intSpalte)))

        RaBereich.Select

End Sub

 

 

Dateien von einem Verzeichnis verarbeiten

 

 

Sub DateienOeffnenUndEtwasMachen()

        ' Erstellt 11.03.2010

        ' Modul um Dateien in einem Verzeichnis abzuarbeiten.

 

        On Error GoTo Fehler:

Dim strPfadNamen As String

Dim strDateiNamenPfad As String

        'Dim strAnzahlSeitenTotal As Integer

Dim strFilename As String

Dim strFName As String

Dim strPfadNeuA As String

 

Dim strDateien() As String                              ' Dynamisches Datenfeld deklarieren

Dim intZaehler As Integer

Dim intZaehlerMax As Integer

 

        'ReDim strDateien(1000000)

        intZaehler = 0

        'intTrennblaetterZahl = 0

        'intZahlPolicen = 0

 

        ' Pfad mittels InputBox abfragen

        strDateiNamenPfad = InputBox("Bitte nachfolgend den ganzen Pfad eingeben aus welchem alle enthaltenen Dateinamen aufgelistet" & _

        " werden sollen." & vbCrLf & vbCrLf & "z.B.    H:\DOutputSaveVVEV\pdf" & vbCrLf & _

        "          (ohne \ am Schluss)", " Angabe des Pfades des Ordner der die Dateien enthält")

 

        strFilename = "*.*"

        strPfadNeuA = strDateiNamenPfad & "\"

        'strZielordner = strPfadNeuA & "\" & "SaveMitLogo" & "\"

 

        If strDateiNamenPfad = Empty Then

             '    Nichts eingegeben oder Abbrechen wurde gewählt.

             GoTo Ende:

        Else

 

             '    AddIns("H:\Templates\Autotext\autotext.dotx").Installed = True

 

             '    Documents.Add DocumentType:=wdNewBlankDocument

             strFName = Dir(strPfadNeuA & strFilename)

             Do While strFName <> ""

                '

                '                Dokument Schreibgeschützt öffnen

                '                Documents.Open FileName:=strPfadNeuA & strFName, ReadOnly:=True

 

                '                Documents.Open FileName:=strPfadNeuA & strFName

                '

                '                strDateiname = ActiveDocument.FullName

                '                strDateiname = ActiveDocument.Name

 

 

 

                '                Hier etwas machen....

 

 

                '                If ActiveDocument.Saved = False Then ActiveDocument.Save

 

                '                ActiveDocument.PrintOut

                '                ActiveDocument().Close SaveChanges:=wdDoNotSaveChanges 'Schiessen ohne Speichern

                ReDim Preserve strDateien(intZaehler)

                strDateien(intZaehler) = strFName

                intZaehler = intZaehler + 1

                '

                strFName = Dir()

             Loop

             intZaehlerMax = intZaehler

        End If

 

        intZaehler = 0

 

        '    AddIns("H:\Templates\Autotext\autotext.dotx").Installed = False

 

        GoTo Ende:

        Fehler:

        MsgBox "Es muss ein Pfad eingegeben werden der auf diesem PC auch verbunden ist." & vbCrLf & _

        "Der Pfad sollte z.B. wie folgt eingegeben werden: E:\daten\winword\vorlagen_produktiv\001", _

           vbCritical, " Textmarkenvorkommen aller Vorlagen erstellen..."

        Ende:

 

End Sub

 

 

Dateien in einem Verzeichnis sortieren, Liste erstellen, und wenn gewünscht ausdrucken

 

 

Sub DateienSortierenDrucken()

        ' Erstellt: 21.11.2014 ITS/Pirmin Steiner

        ' Makro um Dateinen aus einem Verzeichnis aufzulisten.

        ' Mit dem Befehl:

        ' strFName = Dir(strPfadNeuA & strFilename)

        ' Do While strFName <> ""

        ' werden die Dateinen nicht nach Name sondern nach Datum gelistet.

        ' Auch wenn es nicht den Anschein macht :-)

        ' In diesem Modul werden die Dateien in einer Datei "DateinamenListe.txt" aufgelistet.

        ' Danach sortiert und in der Datei "DateinamenListeSortiert.txt" ausgegeben

        ' Wenn gewünscht können die Sortierten Dateien aufgelistet werden.

        ' Anderenfalls stehen einfach die Listen, Sortiert und nicht zur verfügung.

        '

 

        On Error GoTo Fehler:

Dim strPfadNamen As String

Dim strDateiNamenPfad As String

Dim strAnzahlSeitenTotal As Integer

Dim strFilename As String

Dim strFName As String

Dim strPfadNeuA As String

 

Dim strDateien() As String                              ' Dynamisches Datenfeld deklarieren

Dim intZaehler As Integer

Dim intFF As Integer

Dim strDatei As String

Dim strDateinameListe As String

Dim strDateinameListeSort As String

Dim fg() As String

Dim x

Dim xx

Dim i As Integer

Dim intFrageDrucken As Integer

Dim intErgebnisDrucken As Integer

Dim intFlagDrucken As Integer

 

        'ReDim strDateien(1000000)

        intZaehler = 0

 

        ' Pfad mittels InputBox abfragen

        strDateiNamenPfad = InputBox("Bitte nachfolgend den ganzen Pfad eingeben aus welchem alle enthaltenen Dateinamen aufgelistet" & _

        " werden sollen." & vbCrLf & vbCrLf & "z.B.    R:\ITS_Adliswil\TEAMS\Druck\Test" & vbCrLf & _

        "          (ohne \ am Schluss)", " Angabe des Pfades des Ordner der die Dateien enthält")

 

        ' Abfragen ob die Dokumente gedruckt werden sollen

        If strDateiNamenPfad <> "" Then

             intFrageDrucken = MsgBox("Sollen alle sortierten Dokumente ausgedruckt werden = JA ?" & vbCrLf & "Oder sollen nur Listen im Verzeichnis erstellt werden   = Nein ?" & vbCrLf & vbCrLf & "Es können nur Dateien welche über Winword ausgedruckt werden können, ausgedruckt." & vbCrLf & vbCrLf & "(Im augewählten Verzeichnis benötigt es Schreibrechte !)", vbYesNo + vbQuestion, _

                   " Dokumente Drucken ... ? ")

             If intFrageDrucken = 6 Then

                intErgebnisDrucken = 1

             End If

             If intFrageDrucken = 7 Then

                intErgebnisDrucken = 0

             End If

        End If

        strFilename = "*.*"

        strPfadNeuA = strDateiNamenPfad & "\"

        strDateinameListe = "DateinamenListe.txt"

        strDateinameListeSort = "DateinamenListeSortiert.txt"

 

        If strDateiNamenPfad = Empty Then

             '    Nichts eingegeben oder Abbrechen wurde gewählt.

             GoTo Ende:

        Else

 

             strDatei = strPfadNeuA & "\" & strDateinameListe

             intFF = FreeFile

             Open strDatei For Output As #intFF      ' Öffnet oder erstellt Textdatei zum hineinschreiben

 

             strFName = Dir(strPfadNeuA & strFilename)

             Do While strFName <> ""

 

                Print #intFF, strPfadNeuA & strFName

 

                ReDim Preserve strDateien(intZaehler)

                strDateien(intZaehler) = strFName

                intZaehler = intZaehler + 1

                '

                strFName = Dir()

             Loop

             Close #intFF                            ' schließt die Textdatei

        End If

 

        intZaehler = 0

 

        ' Dateiliste Sortieren !!!

        ' -------------------------

        'einlesen der unsortierten date

        i = 0

        Open strDatei For Input As #1 'unsortierte Datei name anpassen

        Do While Not EOF(1)

             Line Input #1, TZ

             ReDim Preserve fg(i)

             fg(i) = TZ

             i = i + 1

        Loop

        '

        ' Sortieren "http://www.office-loesung.de/ftopic456749_0_0_asc.php"

        For xx = 0 To UBound(fg) - 1

             For x = 0 To UBound(fg) - 1

                If fg(x) > fg(x + 1) Then

                        ret = fg(x)

                        fg(x) = fg(x + 1)

                        fg(x + 1) = ret

                End If

             Next x

        Next xx

        Close #1

 

        If intErgebnisDrucken = 1 Then

             ' Fals es Feldfunktionen für das Add-In autotext.dotx hat:

             AddIns("H:\Templates\Autotext\autotext.dotx").Installed = True

        End If

 

        'Ausgeben der sortierten Datei

        Open strPfadNeuA & strDateinameListeSort For Output As #1 'sortiertei date namen anpassen

        For x = 0 To UBound(fg) '- 1

             If fg(x) <> "" Then Print #1, fg(x)

             If fg(x) = strDateiNamenPfad & "\" & strDateinameListe Or fg(x) = strDateiNamenPfad & "\" & strDateinameListeSort Then

                ' Dateilisten sollen ja nicht gedruckt werden.

                intFlagDrucken = 1

             End If

             If intFlagDrucken = 0 Then

                If intErgebnisDrucken = 1 Then

                        '   Dokument ausdrucken

                        Application.PrintOut FileName:=fg(x)

                End If

             End If

             intFlagDrucken = 0

        Next x

        Close #1

 

        If intErgebnisDrucken = 1 Then

             ' Fals es Feldfunktionen für das Add-In autotext.dotx hat:

             AddIns("H:\Templates\Autotext\autotext.dotx").Installed = False

        End If

 

        GoTo Ende:

        Fehler:

        MsgBox "Es muss ein Pfad eingegeben werden welcher auch vorhanden ist." & vbCrLf & _

        "Auch müssen in diesem Verzeichnis die Schreibrechte vorhanden sein!" & vbCrLf & _

        "Ebenso müssen die Dateien über Winword gedruckt werden können!" & vbCrLf & vbCrLf & _

        "Der Pfad sollte z.B. wie folgt eingegeben werden: E:\daten\winword\vorlagen_produktiv\001", _

           vbCritical, " Dokumente auflisten und ausdrucken ..."

        Ende:

End Sub

 

 

Add-In in "Dokumentvorlagen und Add-Ins" suchen und wenn vorhanden löschen

 

 

Sub AddInEntfernen()

        '   Add-In in "Dokumentvorlagen und Add-Ins" suchen und wenn vorhanden, löschen (entfernen).

        '   On Error Resume next, weil es sonst ein Fehler gibt, wenn das Add-In in den "Dokumentvorlagen und Add-Ins"

        '   aufgeführt ist, aber effektiv nicht vorhanden ist.

        On Error GoTo Ende:

        For Each ad In AddIns

             If (ad.Installed = False Or ad.Installed = True) Then

                If ad.Name = "BackstageSave.dotx" Then

                        '               On Error Resume next, weil es sonst ein Fehler gibt, wenn das Add-In in den

                        '               "Dokumentvorlagen und Add-Ins"

                        '               aufgeführt ist, aber effektiv nicht vorhanden ist.

                        On Error Resume Next

                        AddIns(ad).Delete

                        Err.Clear

                        On Error GoTo Ende:

                End If

             End If

        Next ad

        GoTo SuperEnde:

        Ende:

        MsgBox "Error hier"

        SuperEnde:

        Err.Clear

End Sub

 

 

Datei Atributte ändern

 

 

Sub atributeaendern()

 

Dim fso As Object

Dim f As Object

 

        Set fso = CreateObject("Scripting.FileSystemObject")

        Set f = fso.GetFile("H:\Templates\WordStartUp\generali.dotm")

 

        If f.Attributes > 0 Then

             If f.Attributes Mod 2 = 1 Then 'wenn Schreibschutz aktiv...

                f.Attributes = f.Attributes - 1 '...deaktivieren

             End If

        End If

 

End Sub

 

 

Wörter und Zeichen vom Dokument zählen

 

 

Sub ZeichenZaehlen()

Dim intWords As Variant

Dim intChars As Variant

        intWords = ActiveDocument.BuiltInDocumentProperties(wdPropertyWords)

        intChars = ActiveDocument.BuiltInDocumentProperties(wdPropertyCharsWSpaces)

        MsgBox "Diese Datei besteht aus " & intWords _

        & " Wörtern und " & intChars & " Zeichen (inkl. Leerzeichen)."

End Sub

 

        intWords = ActiveDocument.BuiltInDocumentProperties(wdPropertyWords)

        intLines = ActiveDocument.BuiltInDocumentProperties(wdPropertyLines)

        intChars = ActiveDocument.BuiltInDocumentProperties(wdPropertyCharsWSpaces)

 

 

ZeichenZaehlen  Absatzmarken zählen

 

 

Sub ZeichenZaehlen()

Dim intWords As Variant

Dim intChars As Variant

 

        strAuswahl = Selection.Text

 

        intWords = ActiveDocument.BuiltInDocumentProperties(wdPropertyWords)

        intChars = ActiveDocument.BuiltInDocumentProperties(wdPropertyCharsWSpaces)

        MsgBox "Diese Datei besteht aus " & intWords _

        & " Wörtern und " & intChars & " Zeichen (inkl. Leerzeichen)."

End Sub

 

 

Sub ZeichenZaehlen2()

 

        ' Anzahl Paragraphen (Absatzmarken) hat das ganze Dokument

        MsgBox ActiveDocument.Paragraphs.Count & " characters are selected"

        ' Wie viele Zeichen hat die markierte Zeile

        MsgBox Selection.Characters.Count & " characters are selected"

 

End Sub

 

 

Dateiname aus einem Pfad extrahieren

 

 

 

Sub DateinameExtrahieren()

        '

Dim strDateiname As String

 

        strDateiname = "C:\Abfall\Dateiliste.txt "

 

Dim i As Integer

        i = Len(strDateiname)

        Do While Mid(strDateiname, i, 1) <> "\"

             i = i - 1

        Loop

        strDateinameNeu = Right(strDateiname, Len(strDateiname) - i)

 

End Sub

 

 

        Oder ganz einfach:

        strDateiname = "C:\Abfall\Dateiliste.txt "

        strDateiname = Dir(strDateiname)

 

 

        ' Nur Verzeichnis auf FullPfad erhalten

        sFullpath = "C:\Abfall\Dateiliste.txt "

        sDirectory = Left(sFullpath, InStrRev(sFullpath, "\") - 1) ' eventuell noch mit  & "\"

 

        Ursprung:

        'Verzeichnis

        sDirectory = Left(sFullpath, InStrRev(sFullpath, "\") - 1)

        'Dateiname

        sFilename = Mid(sFullpath, InStrRev(sFullpath, "\") + 1, Len(sFullpath))

        'Extension (Dateityp)

        sExtension = Right(sFullpath, Len(sFullpath) - InStrRev(sFullpath, "."))

        'Dateiname ohne Extension

        sFilenameWithoutExtension = Replace(sFilename, "." & sExtension, "")

 

 

Feldfunktion in VBA erstellen (Fields.Add-Methode)

 

 

Sub FeldEinfuegen()

        Selection.Fields.Add Range:=Selection.Range, Text:="page", Preserveformatting:=True

End Sub

 

 

Sub UsernameEifuegen()

        Selection.Collapse Direction:=wdCollapseStart

        Set myField = ActiveDocument.Fields.Add(Range:=Selection.Range, _

           Type:=wdFieldUserName)

End Sub

 

        PreserveFormatting Optional Variant

 

        True, um die dem Feld zugewiesene Formatierung bei Aktualisierungen beizubehalten.

 

 

Nicht verwendete Formatvorlagen im Dokument löschen

 

 

Sub DeleteUnusedStylesinDoc()

        'Nicht verwendete Formatvorlagen löschen

        '(Integrierte Formatvorlagen können nicht gelöscht werden.)

 

Dim sty As Style

 

        On Error Resume Next  '<-  w i c h t i g

 

        For Each sty In ActiveDocument.Styles

             If sty.InUse = True Then

                With ActiveDocument.Range.Find

                        .ClearFormatting

                        .Style = sty.NameLocal

                        If .Execute(FindText:="", Format:=True, _

                              Wrap:=wdFindStop) = False Then

                        sty.Delete

                        End If

                End With

             End If

        Next

End Sub

 

Namen der benutzerdefinierten Formatvorlagen im Direktfenster ausgeben.

 

'Noch nicht getestet

 

Sub PrintStyles()

        'Namen der benutzerdefinierten Formatvorlagen

        'im Direktfenster ausgeben.

Dim sty As Style

 

        For Each sty In ActiveDocument.Styles

             If sty.BuiltIn = False Then

                Debug.Print sty.NameLocal

             End If

        Next

End Sub

 

 

Anzahl Worte im Dokument auflisten und Erstes Wort im Dokument wie viel mal es im Dokument vorkommt auflisten

 

 

Sub AnzahlWorte()

Dim rngRange As Word.Range

Dim lngAnzahlWorte As Long

Dim strText As String

Dim lngL As Long

Dim strDasWort4 As String

Dim lngWortNr As Long

 

        Set rngRange = ActiveDocument.Range

        lngAnzahlWorte = rngRange.ComputeStatistics(wdStatisticWords)

 

        'MsgBox lngAnzahlWorte, , "Anzahl Worte im Doument"

 

        strText = rngRange.Text

        strText = Replace(strText, ".", " ", 1, -1, 1)

        strText = Replace(strText, ",", " ", 1, -1, 1)

        strText = Replace(strText, "?", " ", 1, -1, 1)

        strText = Replace(strText, "!", " ", 1, -1, 1)

        strText = Replace(strText, ":", " ", 1, -1, 1)

        strText = Replace(strText, vbCr, " ", 1, -1, 1)

        strText = Replace(strText, vbLf, " ", 1, -1, 1)

        strText = Replace(strText, "(", " ", 1, -1, 1)

        strText = Replace(strText, ")", " ", 1, -1, 1)

        strText = Replace(strText, Chr(11), " ", 1, -1, 1)

        strText = Replace(strText, Chr(7), " ", 1, -1, 1)

        'ggf weitere Zeichen ergänzen

        strText = Trim(strText)

 

        Do While Len(strText) <> lngL

             lngL = Len(strText)

             strText = Replace(strText, "  ", " ", 1, -1, 1)

        Loop

        lngAnzahlWorte = UBound(Split(strText, " ", -1, 1))

        MsgBox lngAnzahlWorte, , "Anzahl Worte im Doument"

 

        'wie oft kommt das 4. Wort im Documet im Gesamten Text vor:

        lngWortNr = 1

        strDasWort4 = Split(strText, " ", -1, 1)(lngWortNr - 1)

        lngAnzahlWorte = (Len(strText) - Len(Replace(strText, strDasWort4, "", 1, -1, 1))) / Len(strDasWort4)

        MsgBox lngAnzahlWorte, , "So oft gibts das Wort: " & strDasWort4

 

End Sub

 

 

Dokument als Objekt deklarieren

 

Dim wdApp As Object, wdDoc As Object

 

Sub Erde_an_Mond()

        '

        Set wdApp = GetObject(, "Word.Application")

        Set wdDoc = wdApp.Documents("29095730686000.docx")  ' Das Dokument muss offen sein, sonst Fehler

 

        Documents(wdDoc).Activate

 

        '   Oder zuerst abfragen ob die Variable nicht leer ist

        If Not wdDoc Is Nothing Then

             Documents(wdDoc).Activate

        End If

 

End Sub

 

 

 

Eine neue Datei erstellen

 

' Erstellt eine x-Belibige Datei in einem Verzeichnis. Diese ist jedoch nicht konform und kann danach auch nicht geöffnet oder verwendet werden.

 

Sub EineDateiErstellen()

           Open "C:\TEMP\Image.tif" For Output As #1

                      Close #1

           Open "C:\TEMP\Image.GRP" For Output As #1

                      Close #1

End Sub

 

Umgebungsvariablen

 

Sub Umgebungsvariablen()

Dim i As Integer, env As String

Do

           i = i + 1

           env = Environ(i)

           Debug.Print i, env

Loop Until env = ""

End Sub

 

On Resume Next wieder aufheben

 

Sub FehlerResumeNextWiederAufheben()

'

Dim blgPDFonAction As Boolean

strPfadDoutputINISave = "H:\Templates16\WordStartUp\DoutputSave.ini"

On Error Resume Next

'[mach Was, wo Fehler entstehen dürfen]

           blgPDFonAction = System.PrivateProfileString(FileName:=strPfadDoutputINISave, _

           Section:="DoutputSave", Key:="AlsPDF") 'Vom INI lesen

On Error GoTo 0

'[mach was, wo keine Fehler mehr entstehen dürfen]

           blgPDFonAction = System.PrivateProfileString(FileName:=strPfadDoutputINISave, _

           Section:="DoutputSave", Key:="AlsPDF") 'Vom INI lesen

End Sub

 

Dokumentvariable in einem Dokument definieren

 

' Variable verwenden, welche dann als Docvariable den Wert übernehmen soll

strDatumTextmarke = "briefdatum"

' Im einen Template

' Zuerst aber die Dokumentvariable löschen aus dem Dokument, damit diese sicher frei ist

' Da es nur mit einem Error festgestellt werden kann ob die Variable schon besteht

On Error Resume Next

ActiveDocument.Variables("DatumLangTMNamen").Delete

ActiveDocument.Variables.Add Name:="DatumLangTMNamen", Value:=strDatumTextmarke

' Das löschen einer Docvariable ist nicht einfach. Eine möglichkeit wäre (benötigt jedoch ein OnErrorResNext):

           strVal = ActiveDocument.Variables("DatumLangTMNamen").Value

           If Err.Number <> 0 Then

                      MsgBox strVal

                      MsgBox Err.Number

           End If

' Im anderen Template bei welchem die Variable verwendet werden soll (übergabe des Variablen Wertes)

strDatumTextmarke = ActiveDocument.Variables("DatumLangTMNamen").Value

 

Langes Datum in den verschiedenen Sprachen anhand kurzem Datum erstellen

 

' Dafür benötigt es zwei Textmarken im Dokument: [briefdatum] und [SysDokSprache]

 

Public Sub LangesDatumErstellen()

'

Dim intFindZaehler As Integer

Dim strTag       As String

Dim strMonat     As String

Dim strJahr      As String

Dim Datum        As Date

Dim strSysDokSprache As Integer

Dim FormatDat    As Variant

If ActiveDocument.Bookmarks.Exists("briefdatum") Then

           Datum = ActiveDocument.Bookmarks("briefdatum").Range.Text

Else

           GoTo Ende:

End If

 If ActiveDocument.Bookmarks.Exists("SysDokSprache") Then

           strSysDokSprache = ActiveDocument.Bookmarks("SysDokSprache").Range.Text

 Else

'     Sonst setzen wir die Sprache deutsch :-)

           strSysDokSprache = 1

 End If

'               Deutsch

                      If strSysDokSprache = 1 Then

                                strTag = Format(Datum, "d")

                                strMonat = Choose(Month(Datum), "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")

                                strJahr = Format(Datum, "yyyy")

                                FormatDat = strTag & ". " & strMonat & " " & strJahr

'               Französisch

                      ElseIf strSysDokSprache = 2 Then

                                strTag = Format(Datum, "d")

                                strMonat = Choose(Month(Datum), "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")

                                strJahr = Format(Datum, "yyyy")

                                If strTag = "1" Then

                                           strTag = strTag & "er"

                                End If

                                FormatDat = strTag & " " & strMonat & " " & strJahr

'               Italienisch

                      ElseIf strSysDokSprache = 3 Then

                                strTag = Format(Datum, "d")

                                strMonat = Choose(Month(Datum), "gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settebre", "ottobre", "novembre", "dicembre")

                                strJahr = Format(Datum, "yyyy")

                                If strTag = "1" Then

                                           strTag = strTag & Chr(176) 'ev. 186

                                End If

                                FormatDat = strTag & " " & strMonat & " " & strJahr

'               Englisch

                      ElseIf strSysDokSprache = 4 Then

                                strTag = Format(Datum, "d")

                                strMonat = Choose(Month(Datum), "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")

                                strJahr = Format(Datum, "yyyy")

                                FormatDat = strTag & " " & strMonat & " " & strJahr

                      End If

'                          Dann die Textmarke mit dem langen Datum überschreiben und wieder setzen

                           Set rng = ActiveDocument.Bookmarks(strDatumTextmarke).Range

                           rng.Text = FormatDat

                           ActiveDocument.Bookmarks.Add strDatumTextmarke, rng

'                          Definition, was Höhergestellt werden soll.

                           ReDim strFindText(0)

                           strFindText(0) = "er "

'                          strFindText(1) = "st "

                      '     strFindText(2) = "th"

'

                           Do While intFindZaehler <= 0

                           Set myRange = ActiveDocument.Bookmarks(strDatumTextmarke).Range

                                     myRange.Find.Execute FindText:=strFindText(intFindZaehler), MatchCase:=True, Forward:=True     ' mit Gross/Kl.schreibung beachten und erstes Vorkommen im String

                                     If myRange.Find.Found = True Then

                                                myRange.Font.Superscript = True

                                     End If

                                     intFindZaehler = intFindZaehler + 1

                           Loop

Ende:

End Sub

 

Abfragen der Speicherorte für Dateien

 

Sub SpeicherortFuerDateien()

' Abfragen der Speicherorte für Dateien

' Dokumente

strDokumentePfad = Options.DefaultFilePath(wdDocumentsPath)

'"h:\documents"

'ClipArt-Bilder ?

'Benutzervorlagen

strNormaldotmPfad = Options.DefaultFilePath(wdUserTemplatesPath) ' & "\"

'"h:\templates"

' Arbeitsgruppenvorlagen

strArbeitsgruppenPfad = Options.DefaultFilePath(wdWorkgroupTemplatesPath)

'"\\generali.intra\office\2010\templates"

'Autowiederherstellen-Dokumente

strAutowiederherstellenPfad = Options.DefaultFilePath(wdUserOptionsPath)

'"h:\documents"

'Wörterbücher

strWorterbuecherPfad = Options.DefaultFilePath(wdToolsPath)

'"h:\cfg"

'Autostrart

strGeneralidotmPfad = Options.DefaultFilePath(wdStartupPath) '& "\"

'"h:\templates\wordstartup"

'Winword.exe Pfad

strApplicationWinwordPfad = Application.Path & "\Winword.EXE"

'"C:\Program Files (x86)\Microsoft Office\Office14\Winword.EXE"

End Sub

 

Alle AutoTexte in ein Array lesen

 

Sub Autotexte_in_Array()

     Dim Autotext As AutoTextEntry

     Dim MyTemplate As Template

     Dim z As Long

           'die aktuelle Vorlage zuordnen

     Set MyTemplate = ActiveDocument.AttachedTemplate

           'das Array dimensionieren

     ReDim Eintrag_(2, MyTemplate.AutoTextEntries.Count)

     z = 0

           'alle Autotexte auslesen

     For Each Autotext In ActiveDocument.AttachedTemplate.AutoTextEntries

                Eintrag_(0, z) = Autotext.Name

                Eintrag_(1, z) = Autotext.Value

                z = z + 1

     Next Autotext

End Sub

 

E-Mail automatisch senden

 

Sub EmailDirektSenden()

Dim objOutlook As Object

Dim objMail As Object

Set objOutlook = CreateObject("Outlook.Application")

Set objMail = objOutlook.CreateItem(0)

With objMail

     .To = "pirmin.steiner@generali.com" ' Mehrere Adressaten Trennung mit Semilikon ;

     .CC = ""

     .BCC = ""

     .Subject = "Betreffnis: VBA Nachricht"

     .Body = "Anrede Text" & vbLf & "Text 1. Zeile Text 1. Zeile Text 1. Zeile" & vbLf & _

     "Text 2. Zeile Text 2. Zeile Text 2. Zeile" & vbLf & _

     "Text 3. Zeile Text 3. Zeile Text 3. Zeile" & vbLf & _

     "Text 4. Zeile Text 4. Zeile Text 4. Zeile"

'     .Attachments.Add "C:/Beispiel_1.xlsx" 'Mehrere Anhänge fügen Sie am einfachsten über mehrere Zeilen ein.

'     .Attachments.Add "C:/Beispiel_2.xlsx"

     .Send 'Sendet die Email direkt automatisch

End With

End Sub

 

Langes Briefdatum (1er janvier 2019)

 

Attribute VB_Name = "BriefdatumLang"

' In dieser Funktion wird das Datum im Long Format zurückgegeben (1. Oktober 2018). Sprachabhängig

' Die Sprache wird anhand der Textmarke [SysDokSprache], welche in der angehängten 1ten-Seite vorhanden ist, abgefragt.

'

' Da es nicht möglich ist, die Variable (welche Textmarke mit einem langen Datum versehen werden soll) vom Template ins

' Generali.dotm VBA zu übergeben, wird hier eine erstellte Dokumentvariable verwendet.

' Der Aufruf erfolgt im VorDemDrucken im betroffenen Template und enhält folgende Zeilen (briefdatum kann eine andere TM sein):

'     -------------------------------------------------------------------------------------------------------------------------------

''    Hier wird angegeben, welche Textmarke denn mit dem langen Datum replace werden soll (Sprache wird im Generali.dotm abgefragt)

'          strDatumTextmarke = "briefdatum"

'          ' Dann die Variabele mit dem Textmarkennamen in die Dokumentvariable aufnehmen

'          ' Damit diese im ins Generali.dotm weitergegeben werden kann.

'          ' Zuerst aber die Dokumentvariable löschen aus dem Dokument, damit diese sicher frei ist

'          On Error Resume Next

'          ActiveDocument.Variables("DatumLangTMNamen").Delete

'          ActiveDocument.Variables.Add Name:="DatumLangTMNamen", Value:=strDatumTextmarke

'          If ActiveDocument.Bookmarks.Exists(strDatumTextmarke) Then

'                    Application.Run "ProjectGenerali.BriefdatumLang.MAIN"

'          End If

'     -------------------------------------------------------------------------------------------------------------------------------

'

' Diese Variabele ist im Modul PfadFunktion deklariert

' Public strDatumTextmarke As String

'

 

Public Sub MAIN()

'

Dim intFindZaehler As Integer

Dim strTag       As String

Dim strMonat     As String

Dim strJahr      As String

Dim Datum             As Date

'

' Dokumentvariable "DatumLangTMNamen" in die Variable strDatumTextmarke zurückholen und dann weiterverarbeiten

strDatumTextmarke = ActiveDocument.Variables("DatumLangTMNamen").Value

If ActiveDocument.Bookmarks.Exists(strDatumTextmarke) Then

           Datum = ActiveDocument.Bookmarks(strDatumTextmarke).Range.Text

Else

           GoTo Ende:

End If

 If ActiveDocument.Bookmarks.Exists("SysDokSprache") Then

           strSysDokSprache = ActiveDocument.Bookmarks("SysDokSprache").Range.Text

 Else

'     Sonst setzen wir die Sprache deutsch :-)

           strSysDokSprache = 1

 End If

'               Deutsch

                      If strSysDokSprache = 1 Then

                                strTag = Format(Datum, "d")

                                strMonat = Choose(Month(Datum), "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember")

                                strJahr = Format(Datum, "yyyy")

                                FormatDat = strTag & ". " & strMonat & " " & strJahr

'               Französisch

                      ElseIf strSysDokSprache = 2 Then

                                strTag = Format(Datum, "d")

                                strMonat = Choose(Month(Datum), "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre")

                                strJahr = Format(Datum, "yyyy")

                                If strTag = "1" Then

                                           strTag = strTag & "er"

                                End If

                                FormatDat = strTag & " " & strMonat & " " & strJahr

'               Italienisch

                      ElseIf strSysDokSprache = 3 Then

                                strTag = Format(Datum, "d")

                                strMonat = Choose(Month(Datum), "gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre")

                                strJahr = Format(Datum, "yyyy")

                                If strTag = "1" Then

                                           strTag = strTag & Chr(176) 'ev. 186

                                End If

                                FormatDat = strTag & " " & strMonat & " " & strJahr

'               Englisch

                      ElseIf strSysDokSprache = 4 Then

                                strTag = Format(Datum, "d")

                                strMonat = Choose(Month(Datum), "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")

                                strJahr = Format(Datum, "yyyy")

                                FormatDat = strTag & " " & strMonat & " " & strJahr

                      End If

'                          Dann die Textmarke mit dem langen Datum überschreiben und wieder setzen

                           Set rng = ActiveDocument.Bookmarks(strDatumTextmarke).Range

                           rng.Text = FormatDat

                           ActiveDocument.Bookmarks.Add strDatumTextmarke, rng

                           If strSysDokSprache = 2 Then

           '                          Definition, was Höhergestellt werden soll.

                                     ReDim strFindText(0)

                                     strFindText(0) = "1er "

           '                          strFindText(1) = "st "

                                '     strFindText(2) = "th"

           '

                                     Do While intFindZaehler <= 0

                                     Set myRange = ActiveDocument.Bookmarks(strDatumTextmarke).Range

                                           myRange.Find.Execute FindText:=strFindText(intFindZaehler), MatchCase:=True, Forward:=True     ' mit Gross/Kl.schreibung beachten und erstes Vorkommen im String

                                           If myRange.Find.Found = True Then

                                                      ' Neu definieren, da der 1er janvier (franz) am Schluss auch ein er hat.

                                                      strFindText(0) = "er "

                                                      myRange.Find.Execute FindText:=strFindText(intFindZaehler), MatchCase:=True, Forward:=True     ' mit Gross/Kl.schreibung beachten und erstes Vorkommen im String

                                                      myRange.Font.Superscript = True

                                     End If

                                     intFindZaehler = intFindZaehler + 1

                                     Loop

                           End If

Ende:

End Sub

 

Fomratierungen von Variablen OFFEN

 

'Zahl:

'Formatierung einer Zahl mit Hochkomma / oder mit Nachkomma "##,##0.00"

lngZahl = Format(lngZahl, "##,##0")

Datum:

Mit VorNullen:

 

Projektname des aktuellen Dokuments ermitteln

 

Set currProj = ActiveDocument.VBProject

MsgBox currProj.Name

 

Anzahl Modulen im Aktiven Dokument zählen

 

Dim i As Long

i = ActiveDocument.VBProject.VBComponents.Count

 

Ganze Ordner und Unterordner kopieren

 

Sub MAIN()

On Error GoTo Fehler:

Dim oFSO As Object                                      'für das FileSystemObject

Set oFSO = CreateObject("Scripting.FileSystemObject")

If Not oFSO Is Nothing Then

     If Not oFSO.FolderExists("H:\Templates16\Brandic") Then

                      If oFSO.CreateFolder("H:\Templates16\Brandic") <> "" Then

'                               MsgBox "OK, Ordner neu angelegt!"

                      Else

'                               MsgBox "Ordner konnte nicht neu angelegt werden!"

                      End If

     Else

'                     MsgBox "Ordner existiert bereits!"

     End If

     Set oFSO = Nothing

End If

' Ordner "d:\temp" mit allen Unterordnern

' und Dateien nach "e:\temp" kopieren

DirCopy "\\gch.generali.ch\Roleshares\Office2016\UserStandardFileSources\Brandic", "H:\Templates16\Brandic"

MsgBox "Die Daten wurden korrekt kopiert. Alles klar."

GoTo Ende:

Fehler:

MsgBox "Die Daten konnten nicht kopiert werden. Bitte beim Druck-Team melden."

Ende:

End Sub

' Funktion um alle Dateien eines Ordner zu ermitteln

 

Private Function ReadFilesFromDir(ByVal sPath As String, _

     Optional sFilter As String = "*.*") As Variant

 

     Dim sFilename As String

     Dim nCount As Long

     ReDim sFiles(0) As String

 

     If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"

     nCount = 0

     sFilename = Dir(sPath & sFilter, vbNormal)

     While sFilename <> ""

           If sFilename <> "." And sFilename <> ".." Then

                ReDim Preserve sFiles(nCount)

                sFiles(nCount) = sFilename

                nCount = nCount + 1

           End If

           sFilename = Dir

     Wend

 

     ReadFilesFromDir = sFiles

End Function

' Funktion, um alle Ordner einer Ebene zu ermitteln

 

Private Function ReadDirs(ByVal sPath As String) As Variant

     Dim sFilename As String

     Dim nCount As Long

     ReDim sFiles(0) As String

 

     If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"

     nCount = 0

     sFilename = Dir(sPath, vbDirectory)

     While sFilename <> ""

           If sFilename <> "." And sFilename <> ".." And _

                GetAttr(sPath & "\" & sFilename) = vbDirectory Then

 

                ReDim Preserve sFiles(nCount)

                sFiles(nCount) = sFilename

                nCount = nCount + 1

           End If

           sFilename = Dir

     Wend

 

     ReadDirs = sFiles

End Function

'Die Hauptfunktion:

' Ordner inkl. aller Dateien und Unterordner kopieren

 

Public Function DirCopy(ByVal sDir As String, _

     ByVal dDir As String)

 

     Dim dcV As Variant, dcI As Integer

 

     On Error Resume Next

 

     ' zunächst alle Dateien ermitteln

     If sDir = dDir Then Exit Function

     dcV = ReadFilesFromDir(sDir)

 

     ' Ziel-Verzeichnis erstellen

     MkDir dDir

 

     ' alle Dateien kopieren

     For dcI = 0 To UBound(dcV)

           FileCopy sDir & "\" & dcV(dcI), dDir & "\" & dcV(dcI)

     Next dcI

 

     ' Jetzt alle Unterordner ermitteln und Dateien kopieren

     dcV = ReadDirs(sDir)

     For dcI = 0 To UBound(dcV)

           ' Es kann vorkommen, dass jemand den Ordner in sich

           ' selbst kopieren will - was eine Endlosschleife gäbe:

           If dcV(dcI) = "" Then Exit For

 

           ' Ziel-Unterordner erstellen:

           MkDir dDir & "\" & dcV(dcI)

 

           ' Rekursiver Funktionsaufruf, um den Unterordner

           ' zu erstellen und die Dateien zu kopieren

           DirCopy sDir & "\" & dcV(dcI), dDir & "\" & dcV(dcI)

     Next dcI

End Function

 

Nur Folder kopieren

 

Public Sub Foldercopy()

           Dim FsyObjekt As Object

           Set FsyObjekt = CreateObject("Scripting.FileSystemObject")

           FsyObjekt.CopyFolder "c:\temp", "c:\temp2"

End Sub

 

Add-Ins auflisten welche nicht aktiviert sind

 

Sub ListCOMs()

' Listet alle Add-Ins auf welche nicht aktiviert sind.

Dim i As Integer, str As String

Application.COMAddIns.Update

For i = 1 To Application.COMAddIns.Count

     str = str & Application.COMAddIns(i).Connect & vbTab & Application.COMAddIns(i).Description & vbCrLf

Next i

MsgBox str

End Sub

 

Alle Add-Ins unistallieren / deaktivieren

 

Sub UninstallAllWordAddins()

Dim oAddin As AddIn

On Error GoTo ErrAddin

For Each oAddin In AddIns

           If oAddin.Installed Then

                      MsgBox oAddin.Name

           oAddin.Installed = False

           End If

Next oAddin

If Not oAddin Is Nothing Then Set oAddin = Nothing

ErrAddin:

           If Err <> 0 Then

           Err.Clear

End If

End Sub

 

MsgBox in den Vordergrund hohlen   vbSystemModal

 

MsgBox "Der persönliche AutoText   >> mrunterschrift << " & vbCrLf & "im Normal.dotm fehlt!   " & _

"Bitte diesen AutoText gemäss Anleitung erfassen und erneut drucken." & vbCrLf & vbCrLf & "", _

vbExclamation + vbSystemModal, " AutoText für Untrschrift nicht vorhanden ..."

 

Bestimmter AutoText aus Normal.dotm abrufen und wenn vorhanden einfügen

 

Public Sub AutoTextAusgebenAlsText()

On Error GoTo Fehler:

Dim intBZähler As Integer

Dim intAnzAT As Integer

Dim intMRATFlag As Integer

'strNormalDotm = NormalTemplate

'strNormalDotmPath = NormalTemplate.FullName

intBZähler = 1

intMRATFlag = 0

intAnzAT = NormalTemplate.AutoTextEntries.Count

     Do While intBZähler <= intAnzAT                         'Anzahl Durchläufe festlegen

                      strNameAutotext = NormalTemplate.AutoTextEntries(intBZähler).Name

                      If strNameAutotext = "mrunterschrift" Then

                                intMRATFlag = 1

                                If ActiveDocument.Bookmarks.Exists("Sysmrunterschrift") Then

                                           Set myRange = ActiveDocument.Bookmarks("Sysmrunterschrift").Range

                                           myRange.SetRange start:=myRange.start, _

                                                 End:=ActiveDocument.Bookmarks("Sysmrunterschrift").Range.End

                                                      myRange.Select

                                                 NormalTemplate.AutoTextEntries("mrunterschrift").Insert Where:=Selection.Range 'Autotext einfügen

                                End If

                      End If

                      intBZähler = intBZähler + 1           'Angeben um welchen Wert der Zähler erhöt wird

     Loop                                                   'Wieder an Anfang

' Falls der AutoText nicht vorhanden ist.

If intMRATFlag = 0 Then

           MsgBox "Der persönliche AutoText   '' mrunterschrift '' " & vbCrLf & "im Normal.dotm fehlt!   " & _

           "Bitte diesen AutoText gemäss Anleitung erfassen und erneut drucken.", _

           vbExclamation + vbSystemModal, " AutoText für Untrschrift nicht vorhanden ..."

           If ActiveDocument.Bookmarks.Exists("Sysmrunterschrift") Then

                      Set myRange = ActiveDocument.Bookmarks("Sysmrunterschrift").Range

                      myRange.SetRange start:=myRange.start, _

                                End:=ActiveDocument.Bookmarks("Sysmrunterschrift").Range.End

                                myRange.Select

                                Selection.Text = "*** Hier bitte die Unterschrift einfügen. ***"

                                Selection.EndKey

           End If

End If

GoTo Ende:

Fehler:

           MsgBox "Es ist ein Fehler aufgetreten beim Einfügen der persönlichen Unterschrift." & vbCrLf & _

           "Bitte Dokument prüfen und bei einem Fehler im Dokument korrigieren. " & _

           "Sollte dieser Fehler mehrmals erscheinen bitte beim Support melden.", _

           vbExclamation, " Fehler in AutoText für Untrschrift Einfügen..."

Ende:

End Sub

Alle Dateien (Fiels) von einem bestimmten Typ in ein anderes Verzeichnis verschieben

 

'Alle Files von einem Typ in einen anderen Ordner verschieben.

 

Public Sub Dateien_verschieben()

           Dim strQuelle As String

           Dim strZiel As String

           Dim objFSO As Object

    

           strQuelle = "C:\Temp\*.pdf"

           strZiel = "C:\Temp\pdf\"

          

           If Dir(strQuelle) = "" Then MsgBox "Nix da!": Exit Sub

           Set objFSO = CreateObject("Scripting.FileSystemObject")

           objFSO.MoveFile strQuelle, strZiel

           Set objFSO = Nothing

End Sub

 

Zahlen Formatieren inkl. Funktionsaufruf der Formatierungsdefinition

 

' Zallenformat erstellen für Tausender Dezimalstellen, damit diese je nach

' Höhe der Zahl richtig formatiert wird.

Dim strZahlUnformatiert As String

Dim strFormatierungWert As String

Dim strZahlFormatiert As String

 

Sub FormatAufrufTest()

    strZahlUnformatiert = 10000000

    strZahlFormatiert = strZahlUnformatiert

    strFormatierung = ZahlenFormat(strZahlUnformatiert)

    strZahlFormatiert = Format(strZahlFormatiert, strFormatierungWert)

    MsgBox strZahlFormatiert

End Sub

 

' Das Problem ist, dass wenn die Zahl kleiner ist, werden die Tausendertrennzeichen davor die

' definiertenTausendertrennzeichnen trotzdem aufgeführt werden.

' Somit die Kürzung je nach Grösse der Zahl

' Etwas umständlich. Weiter unten die bessere Lösung mit Standard Formatierung

 

Public Function ZahlenFormat(strFormatierung As String) As String

If strZahlUnformatiert < 1000 Then

           strFormatierung = "###"

ElseIf strZahlUnformatiert < 1000000 Then

           strFormatierung = "#'###"

ElseIf strZahlUnformatiert < 1000000000 Then

           strFormatierung = "#'###'###"

ElseIf strZahlUnformatiert < 1000000000000# Then

           strFormatierung = "#'###'###'###"

Else

           strFormatierung = "#'###'###'###'###"

End If

strFormatierungWert = strFormatierung

End Function

 

Besser geht es mit dem folgenden Befehl. Dieser habe ich leider erst später erfahren.

 

strTest1 = Format(4.45, "Standard")                 ' ergibt "4.5"

strTest2 = Format(10000000000.45, "Standard")       ' ergibt "10'000'000'000.45"

'ohne die lästigen ''' vor der Zahl wenn die Zahl unter Tausdend liegt.

 

Vordefinierte Zahlformate

  

'Für Zahlformate können Sie die folgenden vordefinierten Formatstring verwenden:

'Formatstring Bedeutung

'"General Number" Zeigt die Zahl ohne Tausendertrennzeichen an.

'"Currency" Zeigt die Zahl ggf. mit Tausendertrennzeichen an. Die Zahl hat zwei Nachkommastellen.

'Die Ausgabe hängt von den Systemeinstellungen für das Gebietsschema ab.

'"Fixed" Zeigt mindestens eine Stelle links und zwei Stellen rechts des Dezimalzeichens an.

'"Standard" Zeigt die Zahl mit Tausendertrennzeichen sowie mit mindestens einer Stelle links und

'zwei Stellen rechts des Dezimalzeichens an.

'"Percent" Zeigt die Zahl multipliziert mit 100 und einem rechts angehängten Prozentzeichen (%)

'an. Die Zahl hat immer zwei Nachkommastellen.

'"Scientific" Verwendet das wissenschaftliche Standardformat.

'"Yes/No" Zeigt "Nein" an, wenn die Zahl 0 ist, und andernfalls "Ja".

'"True/False" Zeigt False an, wenn die Zahl 0 ist, und andernfalls True.

'"On/Off" Zeigt "Aus" an, wenn die Zahl 0 ist, und andernfalls "Ein".

'Beispiele:

MsgBox Format(0.234, "General Number") ' ergibt "0,234"

MsgBox Format(1234.456, "Standard")    ' ergibt "1.234,46"

MsgBox Format(0.456, "Fixed")          ' ergibt "0,46"

MsgBox Format(1234.456, "Fixed")       ' ergibt "1234,46"

MsgBox Format(0.5, "Percent")          ' ergibt "50,00%"

MsgBox Format(0.5, "Scientific")       ' ergibt "5,00E-01"

MsgBox Format(0, "True/False")         ' ergibt Falsch

MsgBox Format(1, "True/False")         ' ergibt Wahr

 

 

20. November 2020

Pirmin Steiner (Schweiz, Luzern, Ebikon)

stoner (at) gmx.ch