Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Document_New: Dokumentobjekt ansprechen
zurück: Schleife in Verbindung mit MsgBox weiter: Dokument braucht lange zum laden 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
sternkrabbe
aufgestiegen in: Zweite Liga


Verfasst am:
31. Aug 2008, 21:54
Rufname:

Document_New: Dokumentobjekt ansprechen - Document_New: Dokumentobjekt ansprechen

Nach oben
       Version: Office XP (2002)

Wie kann ich mit Sicherheit das Dokument ansprechen, dessen Erstellung die Document_New Prozedur ausgelöst hat?

Ist das in jedem Fall "ActiveDocument"? Auch wenn der Vorgang von derselben Vorlage per Makro ausgelöst wurde? Wie verhält es sich dann mit dem bisherigen ActiveDocument? Ist das noch identisch, wenn der ursprüngliche Code fortgeführt wird?

Existieren ggf. mehrere Instanzen einer Variable (z.B. einer Dokumentvariablen im Modul ThisDocument) oder wird diese überschrieben.

Beispielsweise im Fall:
(Makros befinden sich entweder in einer Vorlagendatei V)

Document_Open:
ActiveDocument = Dokument A
erstellt per VBA neues Dokument B (Prozedur in einem anderen Modul von V)
-> Code für Document_New wird ausgeführt
wie spreche ich Dokument B an? als ActiveDocument?
wie spreche ich Dokument A an? als ActiveDocument?
Document_Open wird fortgeführt
wie spreche ich Dokument A an?
Ende

_________________
"Kleine Fehler im Code erhöhen den Lerneffekt."
aktuell am Start: Office 2004(Mac), 2007, 2008, 2011
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
01. Sep 2008, 12:49
Rufname:
Wohnort: Leipzig


AW: Document_New: Dokumentobjekt ansprechen - AW: Document_New: Dokumentobjekt ansprechen

Nach oben
       Version: Office XP (2002)

Hallo Sternkrabbe,

in dem Fall am besten mit sauberen Objektvariablen arbeiten, etwa so:
Code:
Sub Document_Open()

    Dim ADoc As Word.Document
    Dim BDoc As Word.Document

    Set ADoc = ActiveDocument   'das Dokument, dessen Open-Ereignis ausgelöst wurde
    Set BDoc = Documents.Add    'das neu erzeugte Dokument

Falls man ein bestehendes Dokument öffnet, wird die Objektvariable so zugewiesen:
Code:
Set CDoc = Documents.New

Nun kann man mit den eindeutigen Objekten weiterarbeiten, ohne ActiveDocument zu verwenden. Überall, wo sonst ActiveDocument stünde, steht dann das jeweils gemeinte Dokument ganz eindeutig, z.B.:
Code:
ADoc.Bookmarks("Test").Range
BDoc.Tables(1).Range
CDoc.Activate

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

Guter Rat ist teuer!
Gast



Verfasst am:
01. Sep 2008, 14:31
Rufname:

AW: Document_New: Dokumentobjekt ansprechen - AW: Document_New: Dokumentobjekt ansprechen

Nach oben
       Version: Office XP (2002)

Danke, das werde ich dann mal ausprobieren und mich zurückmelden.

Auf diese Weise kann ich dann vermutlich auch mittels If ADoc = Nothing Then... testen, ob die Document_New Prozedur über Document_Open oder direkt (z.B. Benutzer) ausgelöst wurde.

Die Methode Documents.New existiert in meinen Versionen von Word nicht.
Lisa
Moderator; Word seit Word 5.0 (für DOS)


Verfasst am:
01. Sep 2008, 18:03
Rufname:
Wohnort: Leipzig

AW: Document_New: Dokumentobjekt ansprechen - AW: Document_New: Dokumentobjekt ansprechen

Nach oben
       Version: Office XP (2002)

Hallo Sternkrabbe,

sorry, war ein Schreibfehler. Es muss statt New natürlich heißen: Documents.Add zum Erzeugen eines neuen Dokuments.

Gruß
Lisa
Gast



Verfasst am:
02. Sep 2008, 15:42
Rufname:

AW: Document_New: Dokumentobjekt ansprechen - AW: Document_New: Dokumentobjekt ansprechen

Nach oben
       Version: Office XP (2002)

Da ist irgendein komischer Wurm drin oder VBA spinnt. Vielleicht liegt es auch an "On Error Resume Next"?

Jedenfalls werden die Anweisungen nicht in Reihenfolge ausgeführt. Im folgenden Code kommt es stets zur Ausführung der Zeile "Call Autoinstallation(sofortschliessen)", OHNE dass vorher ein Eintrag ins Direktfenster erfolgt (Debug.Print).

Code:
Private Sub Document_New()
' neues leeres Dokument wird begonnen
Dim FalscheVorlage As Template
    Debug.Print "-------------------- " & ThisDocument.Name & " " & Now & vbCr & "Prozedur: Document_New"
    On Error Resume Next
    Err.Clear
    If (NewDok Is Nothing) Or (Err.Number <> 0) Then ' hier weiß ich nicht, wie ich anders prüfe, ob NewDok bereits definiert wurde...
        Set NewDok = ActiveDocument
        Debug.Print "NewDok: nicht definiert"
        Err.Clear
    End If
    Debug.Print "NewDok = " & NewDok.FullName
    ThisDocumentStr = ""
    If Not VorlageistInstalliert(ThisDocumentStr) Then ' ThisDocumentStr gibt Standard-Pfad zurück
        Debug.Print "Vorlage: nicht installiert"
        sofortschliessen = True
        Call AutoInstallation(sofortschliessen)
        If sofortschliessen Then
            NewDok.Close
            Exit Sub
        Else
            NewDok.Activate
        End If
    Else        ' wenn installiert, dann ggf. aktualisieren
        If Not (UCase(NewDok.AttachedTemplate.FullName) = UCase(ThisDocumentStr & DieseDatei & ".dot")) Then
            Set FalscheVorlage = GetObject(ThisDocumentStr & DieseDatei & ".dot")
            If FalscheVorlage.BuiltInDocumentProperties(wdPropertyTimeCreated) < ThisDocument.BuiltInDocumentProperties(wdPropertyTimeCreated) Then
                Debug.Print "Vorlage ist veraltet: " & FalscheVorlage.BuiltInDocumentProperties(wdPropertyTimeCreated)
                sofortschliessen = True
                Call AutoInstallation(sofortschliessen)
                If sofortschliessen Then
                    NewDok.Close
                    Exit Sub
                Else
                    NewDok.Activate
                End If
            End If
            Set FalscheVorlage = Nothing
        End If
    End If
    If Not (UCase(NewDok.AttachedTemplate.FullName) Like UCase(Options.DefaultFilePath(wdUserTemplatesPath) & "*" & DieseDatei & ".dot")) Then
        On Error Resume Next
        Set FalscheVorlage = NewDok.AttachedTemplate
        Debug.Print "verwendet falsche Vorlage: " & FalscheVorlage.FullName
        Debug.Print "richtige Vorlage : " & ThisDocumentStr & DieseDatei & ".dot"
        ' CustomizationContext = FalscheVorlage
        ' Application.CommandBars(DieseDatei).Name = DieseDatei & " disabled"
        FalscheVorlage.Saved = True
        NewDok.AttachedTemplate = ThisDocumentStr & DieseDatei & ".dot"
        If Err.Number <> 0 Then
            Debug.Print "neues Dokument: Vorlage konnte nicht geändert werden (" & Err.Number & ")"
            NewDok.AttachedTemplate = FalscheVorlage
            ' Application.CommandBars(DieseDatei & " disabled").Name = DieseDatei
            Err.Clear
        Else
            Debug.Print "neues Dokument: Vorlage erfolgreich geändert"
        End If
    End If
    sofortschliessen = False
    NewDok.Activate
    Application.ScreenRefresh
    Call StartupSkript
    With Dialogs(wdDialogFileSummaryInfo)
        .Title = ""
        .Author = ""
        .Execute
    End With
    Application.ScreenRefresh
    Load UserForm1    ' Anzeige von Informationen
    UserForm1.Show
    Unload UserForm1
    Set NewDok = Nothing
End Sub
Gast



Verfasst am:
03. Sep 2008, 12:14
Rufname:


AW: Document_New: Dokumentobjekt ansprechen - AW: Document_New: Dokumentobjekt ansprechen

Nach oben
       Version: Office XP (2002)

FalscheVorlage darf kein Template sein, sondern Document.
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 VBA Programmierung (Makros): Per Word-Makro Excel ansprechen 31 Starfrucht 452 26. Feb 2014, 21:49
Miss Marple Per Word-Makro Excel ansprechen
Keine neuen Beiträge Word VBA Programmierung (Makros): Excel-Objekt aus Word ansprechen 3 Er1k 113 26. Jan 2014, 18:56
Feedback Excel-Objekt aus Word ansprechen
Keine neuen Beiträge Word VBA Programmierung (Makros): Registerkarte Kopf- und Fußzeilentools ansprechen 2 boeersyl 99 29. Mai 2013, 15:30
boeersyl Registerkarte Kopf- und Fußzeilentools ansprechen
Keine neuen Beiträge Word VBA Programmierung (Makros): Textmarke per Userform innerhalb Includepicture ansprechen 4 tschakra 292 04. März 2013, 14:57
tschakra Textmarke per Userform innerhalb Includepicture ansprechen
Keine neuen Beiträge Word VBA Programmierung (Makros): Textmarke in Textfeld ansprechen 2 Jann33 312 17. Aug 2012, 14:25
Gast Textmarke in Textfeld ansprechen
Keine neuen Beiträge Word VBA Programmierung (Makros): Tabelle in Word ansprechen 3 Freddy1971 202 01. Jul 2012, 11:01
Sonneschein Tabelle in Word ansprechen
Keine neuen Beiträge Word VBA Programmierung (Makros): Per VB Textmarke in Textfeld ansprechen 30 NicoSt 4794 21. März 2011, 21:41
CHF Per VB Textmarke in Textfeld ansprechen
Keine neuen Beiträge Word VBA Programmierung (Makros): Word-Template: per VBA Felder ansprechen Trim$(s(x)) 1 friedrichshain 1224 07. Jan 2011, 18:02
KeepCoolMan Word-Template: per VBA Felder ansprechen Trim$(s(x))
Keine neuen Beiträge Word VBA Programmierung (Makros): Mehrere makierte Zeilen per VBA ansprechen 1 MLB 1620 16. Okt 2009, 18:00
Gast Mehrere makierte Zeilen per VBA ansprechen
Keine neuen Beiträge Word VBA Programmierung (Makros): Textboxen ansprechen 5 anaspitzmaus 2043 21. März 2009, 22:37
anaspitzmaus Textboxen ansprechen
Keine neuen Beiträge Word VBA Programmierung (Makros): Word VBA zwei Vorlagen ansprechen 3 Melli_123 1512 04. Feb 2009, 11:30
Melli_123 Word VBA zwei Vorlagen ansprechen
Keine neuen Beiträge Word VBA Programmierung (Makros): aktuelles bzw. markiertes Formfield ansprechen 2 stefanseevetal 1747 11. Jul 2008, 12:46
stefanseevetal aktuelles bzw. markiertes Formfield ansprechen
 

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