Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Feldaktualisierungs-Makro erweitern
zurück: .Doc bis zum Ende durchsuchen weiter: HELP ME Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Jorreck
Ich fuchse mich gerade rein


Verfasst am:
09. Mai 2007, 15:22
Rufname:
Wohnort: Hamburg/Köln/München

Feldaktualisierungs-Makro erweitern - Feldaktualisierungs-Makro erweitern

Nach oben
       Version: Office 2003

Hallo liebes Forum,

Ich hoffe ihr könnt mir bei einem Problem helfen.

Für eine Dokumentenvorlage mit vielen Formularfeldern hab ich ein Makro geschrieben das beim Öffnen bzw. Neuerstellen des Dokuments unter den Druckoptionen das Häckchen bei der Feldaktualisierung setzt.
Wird das Dokument beendet macht ein anderes Makro diese Einstellung wieder rückgängig. Dies soll bewirken, dass die Standardeinstellungen der User nicht dauerhaft verändert werden. NUR...

Was ist wenn jemand die Funktion bereits standardmäßig aktiviert hat - vielleicht für andere Dokumente. Beim öffnen meiner Vorlage passiert nix, das Häckchen bleibt. Doch beim Beenden greift natürlich das zweite Makro und beendet die Einstellung - dauerhaft.

Gibt es eine Möglichkeit das ein Makro "guckt" ob die Einstellung gesetzt ist und dann dementsprechend handelt??!? Also dass das zweite Makro (welches die Einstellung zurücksetzt) nur dann zum Einsatrz kommt wenn die Einstellung auch standardmäßig aus ist??!

Ich wäre wirklich sehr sehr sehr dankbar falls jemanden da was einfallen könnte!

Viele Grüße
CHF
Word-VBA Professional


Verfasst am:
09. Mai 2007, 17:43
Rufname:


AW: Feldaktualisierungs-Makro erweitern - AW: Feldaktualisierungs-Makro erweitern

Nach oben
       Version: Office 2003

und warum wechselst du jetzt das Forum?
_________________
Gruß

CHF

Bitte keine Anfragen per PN!
Fragen gehören ins Forum!
>
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
09. Mai 2007, 19:04
Rufname:
Wohnort: Leipzig

AW: Feldaktualisierungs-Makro erweitern - AW: Feldaktualisierungs-Makro erweitern

Nach oben
       Version: Office 2003

Hallo Jorreck,

dafür verwendet man Boolean-Variablen. Man fragt beim Öffnen des Dokuments zuerst den vorhandenen Status ab, speichert diesen in eine Variable, damit man ihn beim Beenden wieder berücksichtigen kann, Bsp.:
Code:
Sub TestAufFeldaktualisierung()

    Dim FelddruckAn As Boolean
   
    If Options.UpdateFieldsAtPrint = True Then
        'Der Status wird in Variable gefüllt, damit für später aufgehoben
        'Dieser Teil muss in die Open- oder New-Prozedur.
        FelddruckAn = True
    Else
        FelddruckAn = False
    End If
   
    If FelddruckAn = False Then
        'Die am Beginn gefüllte Variable wird ausgewertet.
        'Dieser Teil muss in die Close-Prozedur.
        Options.UpdateFieldsAtPrint = False
    End If
       
End Sub

Das ist eine Verhaltensweise, die man an sich bei jeder Prozedur in ähnlicher Weise vornehmen sollte, ehe man irgendwelche Einstellungen des Benutzers ändert, sozusagen: erst gucken, dann schalten.

_________________
Sei doch so nett und gib eine Rückmeldung, ob es klappt!
Gruß, Lisa

Guter Rat ist teuer!
Jorreck
Ich fuchse mich gerade rein


Verfasst am:
10. Mai 2007, 09:30
Rufname:
Wohnort: Hamburg/Köln/München

AW: Feldaktualisierungs-Makro erweitern - AW: Feldaktualisierungs-Makro erweitern

Nach oben
       Version: Office 2003

Hey Lisa,

danke für die Erklärung!!!
Werde es gleich ausprobieren und gebe dann Rückmeldung ob´s geklappt hat...

LG
Jorreck
Ich fuchse mich gerade rein


Verfasst am:
10. Mai 2007, 10:25
Rufname:
Wohnort: Hamburg/Köln/München

AW: Feldaktualisierungs-Makro erweitern - AW: Feldaktualisierungs-Makro erweitern

Nach oben
       Version: Office 2003

Hey Lisa,

weiss jetzt nicht obs geklappt hat - war zu kompliziert Wink
Versuche es jetzt gerade anders, da mir sowieso (auch noch von anderen) nahegelegt wurde dass es nicht so dolle ist in den Einstelleungen der User rumzufummeln.

Aktueller Anlauf: Ich habe jetzt ein Makro durch die Forensuche gefunden das automatisch aktualisiert:

Sub FelderInAllenDokumentteilenAktualisieren()
Dim oStory As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = wdAlertsNone
For Each oStory In ActiveDocument.StoryRanges
oStory.Fields.Update
While Not (oStory.NextStoryRange Is Nothing)
Set oStory = oStory.NextStoryRange
oStory.Fields.Update
Wend
Next
Application.DisplayAlerts = wdAlertsAll
Application.ScreenUpdating = True
End Sub

Habe das ganze innerhalb von "Documentbeforeprint" getestet - hat wunderbar funktioniert.
Gibt es auch ne Möglichkeit das Word nach jeder Eingabe alles akutalisiert?
Danke + Grüße!!!
Jorreck
Ich fuchse mich gerade rein


Verfasst am:
10. Mai 2007, 11:33
Rufname:
Wohnort: Hamburg/Köln/München

AW: Feldaktualisierungs-Makro erweitern - AW: Feldaktualisierungs-Makro erweitern

Nach oben
       Version: Office 2003

Nochmal ich... Very Happy

Ich habe jetzt folgendes Versucht - scheitere aber an einer Fehlermeldung.

1. Schritt:
Ich habe bei ThisDocument in das leere Codefenster folgendes kopiert:
Private WithEvents oApp As Word.Application

Private Sub Document_New()
If oApp Is Nothing Then Set oApp = ThisDocument.Application
End Sub

Private Sub Document_Open()
If oApp Is Nothing Then Set oApp = ThisDocument.Application
End Sub

Private Sub oApp_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
If Not ActiveDocument.AttachedTemplate = ThisDocument Then Exit Sub
If ActiveDocument.BuiltInDocumentProperties("Author") = "Konsalik" Then
sT = "Das Papierkontigent für Benutzer 'Konsalik' ist bereits aufgebraucht."
MsgBox sT, vbExclamation
Cancel = True
End If
End Sub

Damit erschein unter oApp u.a. die Auswahl WindowSelectionChange (soweit ich das verstanden habe ist das dass richtige Application Event).

Schritt 2:
Dort habe ich dann den Makrocode reinkopiert. Das ganze sieht das folgendermaßen aus:

Private Sub oApp_WindowSelectionChange(ByVal Sel As Selection)

Sub FelderInAllenDokumentteilenAktualisieren()
Dim oStory As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = wdAlertsNone
For Each oStory In ActiveDocument.StoryRanges
oStory.Fields.Update
While Not (oStory.NextStoryRange Is Nothing)
Set oStory = oStory.NextStoryRange
oStory.Fields.Update
Wend
Next
Application.DisplayAlerts = wdAlertsAll
Application.ScreenUpdating = True
End Sub

End Sub

Wenn ich jetzt speichere, dass Dokument neu öffne und in eine andere Zeile springe bekomme ich die Fehlermeldung im VBA_Editor dass ein "End Sub" fehlt. Shock
Dabei ist die Zeile:
Private Sub oApp_WindowSelectionChange(ByVal Sel As Selection)
mit einem pfeil markeirt und gelb hervorgehoben.

Was habe ich falsch gemacht? Hoffe jemand kann mir helfen...
Daaaaankeeeee!!!!
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
11. Mai 2007, 14:43
Rufname:
Wohnort: Leipzig

AW: Feldaktualisierungs-Makro erweitern - AW: Feldaktualisierungs-Makro erweitern

Nach oben
       Version: Office 2003

Hallo Jorreck,

der Fehler ist in Deinem kopierten Code deutlich zu sehen:
Jorreck hat folgendes geschrieben:
Schritt 2:
Dort habe ich dann den Makrocode reinkopiert. Das ganze sieht das folgendermaßen aus:

Private Sub oApp_WindowSelectionChange(ByVal Sel As Selection)

Sub FelderInAllenDokumentteilenAktualisieren()

Dim oStory As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = wdAlertsNone
For Each oStory In ActiveDocument.StoryRanges
oStory.Fields.Update
While Not (oStory.NextStoryRange Is Nothing)
Set oStory = oStory.NextStoryRange
oStory.Fields.Update
Wend
Next
Application.DisplayAlerts = wdAlertsAll
Application.ScreenUpdating = True
End Sub

End Sub

Innerhalb einer Prozedur gibt es keine weitere Prozedur. Deklarier die Prozedur ordentlich und schon läuft das Ganze:
Code:
Private Sub oApp_WindowSelectionChange(ByVal Sel As Selection)

Dim oStory As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = wdAlertsNone
For Each oStory In ActiveDocument.StoryRanges
oStory.Fields.Update
While Not (oStory.NextStoryRange Is Nothing)
Set oStory = oStory.NextStoryRange
oStory.Fields.Update
Wend
Next
Application.DisplayAlerts = wdAlertsAll
Application.ScreenUpdating = True

End Sub

Ich kann mich des Eindrucks nicht erwehren, dass Dein "Reinfuchsen" zu 100 % aus Zusammenkopieren von Codeschnipseln besteht. Das wird nicht lange gut gehen. Wenigstens die Anfangsgründe (was ist eine Prozedur) sind schon nötig. Hier stehen die relevanten Links:

VBA in Word lernen

_________________
Sei doch so nett und gib eine Rückmeldung, ob es klappt!
Gruß, Lisa

Guter Rat ist teuer!
Jorreck
Ich fuchse mich gerade rein


Verfasst am:
14. Mai 2007, 14:19
Rufname:
Wohnort: Hamburg/Köln/München


AW: Feldaktualisierungs-Makro erweitern - AW: Feldaktualisierungs-Makro erweitern

Nach oben
       Version: Office 2003

Hi Lisa,

zuerst lieben dank für die Mühe & Hilfe - Jetzt klappt alles reibungslos Smile
Dein Eindruck war natürlich richtig... Mit dem reinfuchsen ist das so ne Sache wenn die Zeit knapp und der Schreibtisch voll ist.

Grundsätzlich werde ich mich aber in Zukunft damit (ernsthaft) auseinandersetzen und die Firma zu Schulungen anraten, da es doch wirklich eine sehr große Abeitserleichterung mit den Makros ist.

So oder so ist es auf jedenfall ganz toll wie Du hier den Leuten hilft - Danke!!!
Liebe Grüße + eine angenehme Woche
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Word Formate: Etikettenlieferanten erweitern? 2 isan0017 116 28. Nov 2013, 14:39
Gast Etikettenlieferanten erweitern?
Keine neuen Beiträge Word Hilfe: Auflistung automatisch um eine Zeile erweitern 1 Arthrose 93 07. Okt 2013, 12:44
Arthrose Auflistung automatisch um eine Zeile erweitern
Keine neuen Beiträge Word VBA Programmierung (Makros): Tabelle in Formular erweitern 1 jule90 96 28. Mai 2013, 06:08
EO Tabelle in Formular erweitern
Keine neuen Beiträge Word Serienbriefe: Adressblock bei Etiketten erweitern? 1 Naurael 211 21. Feb 2013, 15:43
Ute-S Adressblock bei Etiketten erweitern?
Keine neuen Beiträge Word VBA Programmierung (Makros): Dropdownlisten in Abhängigkeit Code erweitern 0 Gast 191 15. Feb 2013, 17:50
Gast Dropdownlisten in Abhängigkeit Code erweitern
Keine neuen Beiträge Word Formate: Schriftgrößenauswahl in der Vorlage erweitern 1 ryjus1185 71 13. Nov 2012, 19:58
MarkMH_K Schriftgrößenauswahl in der Vorlage erweitern
Keine neuen Beiträge Word Hilfe: Rechtschreibprüfung,Vorschlagsliste/Korrekturliste erweitern 1 HalloThomas 390 13. Jun 2012, 13:49
HalloThomas Rechtschreibprüfung,Vorschlagsliste/Korrekturliste erweitern
Keine neuen Beiträge Word Hilfe: Word 2007: In einer Tabelle Zahen dreistellig erweitern 0 xaobai 488 15. Nov 2011, 12:50
xaobai Word 2007: In einer Tabelle Zahen dreistellig erweitern
Keine neuen Beiträge Word Formate: auto. erstelltes Abb./Inhaltsbverzeichnis manuell erweitern? 3 xxxMariaxxx 2285 07. Apr 2011, 14:05
bullmer auto. erstelltes Abb./Inhaltsbverzeichnis manuell erweitern?
Keine neuen Beiträge Word VBA Programmierung (Makros): Auswahl bis an das Ende einer Zelle erweitern? 4 (un)LuckyLuke 925 14. Okt 2010, 11:18
Magicfingers Auswahl bis an das Ende einer Zelle erweitern?
Keine neuen Beiträge Word VBA Programmierung (Makros): Listfeld erweitern 1 palmenmann 306 21. Nov 2009, 15:26
Hubert_R Listfeld erweitern
Keine neuen Beiträge Word VBA Programmierung (Makros): Tabelle mit Spalten erweitern 2 palmenmann 514 20. Nov 2009, 16:12
palmenmann Tabelle mit Spalten erweitern
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Project