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
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
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
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
Sub Dok()
Set myRange = ActiveDocument.Range(Start:=0, End:=0)
ActiveDocument.PrintOut
Documents().Close SaveChanges:=wdDoNotSaveChanges 'Dok schliessen ohne Speichern
End Sub
Sub AutotextAnzeigen()
' Dieses Makro listet das Dialogfeld der Autotexte auf.
'
Dialogs(wdDialogToolsAutoManager).Show
End Sub
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
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
'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
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
'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
Sub SpeichernUnter()
With Dialogs(wdDialogFileSaveAs)
.Name = ""
.Show
End With
End Sub
Sub Organisieren()
With Dialogs(wdDialogOrganizer)
.Name = ""
.Show
End With
End Sub
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
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
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 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 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
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
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
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
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
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 (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
' 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
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
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
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
'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
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
Ä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
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.
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
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
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
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
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
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
' 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.
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
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
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
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
' 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
' 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
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
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
' 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
' 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
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
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
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
For Each aAddIn In AddIns
MsgBox aAddIn.Name
Next aAddIn
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
Public Sub
Programmstarten()
Dim Ergebnis
Ergebnis =
Shell("C:\WINNT\system32\CALC.EXE", 1) ' Rechner
starten.
End Sub
'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
' 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
' 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
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
' 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"
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
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
If PrintPreview = True Then
ActiveDocument.ClosePrintPreview
End
If
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
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
'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
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
If ActiveDocument.Bookmarks.Exists("SysPolice")
= True Then
Application.Run
"ProjectGenerali.VorDemDruckenPolice.VorDemDruckenPolice" ' Modul ausführen
End
If
Sub
AssistentSichtbarMachen()
'Macht den Office
Assistent Sichtbar und Animiert diesen.
With Application.Assistant
.Visible = True
.Sounds = True
.Animation = msoAnimationBeginSpeaking
End With
End Sub
Public Sub WordAusblenden()
'Mit diesem Befehl
kann Word ausgeblendet (False) oder wieder
'eingeblendet
werden.
Application.Visible
= True
End Sub
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
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")
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
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) 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
Public Sub ere()
' Ein Dialogbox nur 9 Sekunden anzeigen
Dialogs(wdDialogViewZoom).Show
TimeOut:=9000
End Sub
' 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
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
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
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
Public Sub
AnzahlTextmarken()
Dim intAnzahlTBS As Integer
intAnzahlTBS =
ActiveDocument.Bookmarks.Count
End Sub
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
'Selection.Collapse Direction:=wdCollapseEnd
ActiveDocument.AttachedTemplate.AutoTextEntries("copy").Insert
_
Where:=Selection.Range,
RichText:=True
' 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
' 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
'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
' Die Variable muss
am Anfang ausserhalb der Pulic xx() und End Sub deklariert werden, wie folgt.
Option Explicit
Public strAbfrage1 As String
' 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
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
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
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
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
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
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
'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 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
'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
' 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
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
' 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
' 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
' 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
' 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
' 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
Sub Makroname()
Dim i As Long
With ActiveDocument
For i = 1 To .Hyperlinks.Count
.Hyperlinks(1).Delete
Next i
End With
End Sub
' 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
'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
'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
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
Sub Projektname_ermitteln()
MsgBox
ActiveDocument.VBProject.Name
End Sub
Sub Projektname_setzen()
ActiveDocument.VBProject.Name
= "MeinVBA"
End Sub
' 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
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
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
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
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 "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 ..."
' 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 einfügen aus
eigenem Template
Set myTemplate = ActiveDocument.AttachedTemplate
myTemplate.AutoTextEntries("atLogoGenerali").Insert
Where:=Selection.Range
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
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
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
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
' 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
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
' 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
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:
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
'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
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
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
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
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
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.
'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
' 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
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
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")
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
' 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
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
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
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
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
Application.Visible
= False
Application.Visible
= True
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
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
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
'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.
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
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
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
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
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
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
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
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
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
' Mudulname
welcher importiert werden soll
sName =
"C:\Abfall\Modul\VorDemDrucken.bas"
ActiveDocument.VBProject.VBComponents.Import
(sName)
Modul Anzahl abfragen
intModulCount
= ActiveDocument.VBProject.VBComponents.Count
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
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
' 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
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
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
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
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
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 aktiver Vorlage entfernen
Set myTemplate = ActiveDocument.AttachedTemplate
myTemplate.AutoTextEntries("autotextname1").Delete
oder
ActiveDocument.AttachedTemplate.AutoTextEntries("autotextname2").Delete
' 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
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
' 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
'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
'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
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
' 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
' 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"
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
'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
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
' 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
' 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
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
' 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
' 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
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
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
' 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
Sub AnzalStrinsAusgeben()
arLines = Split("Test1.Text.tess",
".")
For i = 0 To UBound(arLines)
MsgBox i
Next i
End Sub
Sub
AnzahlZeichenHatDerString()
Dim intLaenge As Integer
intLaenge =
Len("1234")
MsgBox
intLaenge ' Ergebnis ist 4
End Sub
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
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
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
' 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
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
' 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"
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
'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
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
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
' strTextDatei = strPfadNeuA &
strFName
strTextDatei =
"C:\TEMP\" & "Testfile.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
strTextinhalt =
(fso.OpenTextFile(strTextDatei).readall)
Sub
AbsatzmarkeInSelectionErsetzen()
strbetreff = Selection.Text
strbetreff = Replace(strbetreff,
Chr(13), Chr(11))
Selection.TypeText strbetreff
End Sub
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
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
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
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
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
'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. |
' 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
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
' 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
' 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
Sub Monatsende()
Dim DaDatum As Date
DaDatum =
"20.02.13"
MsgBox
"Monatsende " & DateSerial(Year(DaDatum), Month(DaDatum) + 1, 1)
- 1
End Sub
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
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
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
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
'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
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 '
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
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
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
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
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
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)
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
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, "")
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.
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
'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
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