macrobutton funktioniert nach Speichern nicht mehr

Moderator: ModerationP

macrobutton funktioniert nach Speichern nicht mehr

Beitragvon trawideli » 09. Sep 2021, 15:24

Hallo,
ich lasse über VBA alle Überschriften und die Texte dazwischen jeweils in Textmarken setzen. Wenn ich dann allerdings das Dokument speichere und wieder aufrufe, funktioniert meine Schaltfläche nicht mehr. :?
Meine Schaltfläche sieht so aus:
Code: Alles auswählen
{ MacroButton TestInterface Lesezeichen auffrischen}

Auch, wenn ich nicht glaube, dass es an den Prozduren liegt, da diese ja schon funktioniert habe, setze ich sie hier mal mit rein. (w wird benötigt, da ich auch aus Access heraus die Prozeduren aufrufe, dort werden auch die Rückgabewerte der Funktionen benötigt)
Code: Alles auswählen
Public Sub TestInterface(Optional w As Word.Document)
    Dim s$   
    If w Is Nothing Then Set w = ThisDocument
    MsgBox "Es geht los mit " & w.Name              'nur zu Testzwecken
    s = GetFirst(True, w)
    While s <> ""
        s = GetNext(True, w)
    Wend
    MsgBox n & " chapters bookmarked!" & vbCr & Log, vbMsgBoxSetForeground
End Sub

Private Function GetFirst$(Tst As Boolean, w As Word.Document)
    n = 0                 'globale Varible
    Log = ""             'globale Variable
    '1st chapter heading
    Set NextRange = w.Bookmarks("Chapter").Range
    GetFirst = CInt(Right(NextRange.Style, 1) - 1)              'Überschriftenebene ermitteln
    GetFirst = GetFirst & ";" & NextRange.ListFormat.ListString & ";" & NextRange.Text
End Function

Private Function GetNext$(Tst As Boolean, Optional w As Word.Document)
    Dim LastRange As Range
    Set LastRange = NextRange
    Set NextRange = NextRange.GoToNext(wdGoToHeading)
    If n > 0 And Tst Then
        'bookmark last chapter w/o heading (text)
        LastRange.Start = LastRange.End
        LastRange.End = NextRange.Start
        w.Bookmarks.Add Name:="VText" & Format(n, "0000"), Range:=LastRange
    End If
   
    'get level
    NextRange.Expand (wdParagraph)
    Select Case Right(NextRange.Style, 1)
       Case "1"
            If Left(NextRange.Text, 3) = "End" Then
                GetNext = ""
                Exit Function
            Else
                GetNext = "0;"
            End If
        Case "2": GetNext = "1;"
        Case "3": GetNext = "2;"
        Case "4": GetNext = "3;"
        Case "5": GetNext = "4;"
        Case "6": GetNext = "5;"
        Case Else: GetNext = "0;"
    End Select
   
    If Tst Then
        'bookmark next heading
        n = n + 1
        w.Bookmarks.Add Name:="V" & Format(n, "0000"), Range:=NextRange
    End If

        'store heading and text
        Chap(n) = NextRange.ListFormat.ListString
        High(n) = Chap(n)
        While Right(High(n), 1) <> "."
            High(n) = Left(High(n), Len(High(n)) - 1)
        Wend
        Text(n) = NextRange.Text

        'check if an identical heading exists in the same hierarchy
        For u = 1 To n - 1
            If High(u) & Text(u) = High(n) & Text(n) Then
                Log = Log & Chap(u) & " = " & Chap(n) & ":" & vbTab & Text(n) & vbCr
                Exit For
            End If
        Next

    'format output string
    GetNext = GetNext & Chap(n) & ";" & Text(n)
    GetNext = Left(GetNext, Len(GetNext) - 1)
End Function

Hat jemand eine Idee?
Grüße, trawideli
PS.: Ich bin nur an Dienstagen und Donnerstagen hier.
System: Win10 mit Access2016 (voher Acc07)
trawideli
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 228
Registriert: 29. Apr 2014, 10:43

Re: macrobutton funktioniert nach Speichern nicht mehr

Beitragvon DerHoepp » 12. Sep 2021, 16:30

Moin,

hast du dran gedacht, als docM-Datei zu speichern und nicht als docX?

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9722
Registriert: 14. Mai 2013, 11:08

Re: macrobutton funktioniert nach Speichern nicht mehr

Beitragvon trawideli » 14. Sep 2021, 18:19

Hallo derHöpp,

danke für den Hinweis. Aber es handelt sich um eine ".docm"-Datei. Es sind auch alle Macros aktiviert.

Grüße,
trawideli
PS.: Ich bin nur an Dienstagen und Donnerstagen hier.
System: Win10 mit Access2016 (voher Acc07)
trawideli
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 228
Registriert: 29. Apr 2014, 10:43

Re: macrobutton funktioniert nach Speichern nicht mehr

Beitragvon theoS » 14. Sep 2021, 21:21

sorry, aber ich kann das nicht nachvollziehen, denn ich krieg einen Sack voll Fehlermeldungen.
Fängt schon an, dass man ein Makro eigentlich nicht starten kann wenn ein Parameter erwartet wird, der nicht übergeben wird. Du müsstest also das TestInterface(w) aufrufen mit einem anderen Makro das diesem das Dokument übergibt.
Dann meckert mir der Editor die "Variable" Log an. die ist nirgends deklariert und vor allem ist das eine Funktion. Was tut der Logarithmus da drin?
Benenne die Variable mal um und ruf den TestInterface über den Umweg auf und es sollte funktionieren. Von Access aus kannst du den Test Interface ja direkt aufrufen und ihm das Dokument übergeben.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5724
Registriert: 19. Apr 2008, 00:14

Re: macrobutton funktioniert nach Speichern nicht mehr

Beitragvon mumpel » 15. Sep 2021, 04:11

"w" ist doch optional.
Benutzeravatar
mumpel
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8330
Registriert: 09. Jan 2005, 15:20
Wohnort: Lindau (B)

Re: macrobutton funktioniert nach Speichern nicht mehr

Beitragvon theoS » 15. Sep 2021, 05:53

Hab ich mir auch gedacht, aber mit w bekam ich das mit einem Macrobutton nicht zu m laufen, auch nicht mit f8
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5724
Registriert: 19. Apr 2008, 00:14

Re: macrobutton funktioniert nach Speichern nicht mehr

Beitragvon trawideli » 16. Sep 2021, 11:15

Hallo theoS

vielen Dank schon mal für die Rückmeldung.

theoS hat geschrieben:denn ich krieg einen Sack voll Fehlermeldungen.
Oh wie schön ... den will ich auch haben ... Word redet nicht mit mir ... (Da gibt es sicher eine Einstellung. Kannst du mir veraten welche und wo ich die finde?)

theoS hat geschrieben:Fängt schon an, dass man ein Makro eigentlich nicht starten kann wenn ein Parameter erwartet wird, der nicht übergeben wird. Du müsstest also das TestInterface(w) aufrufen mit einem anderen Makro das diesem das Dokument übergibt.
Das habe ich vermutet. Danke für die Bestätigung. Dann weiß ich, was zu tun ist.

theoS hat geschrieben:Dann meckert mir der Editor die "Variable" Log an. die ist nirgends deklariert und vor allem ist das eine Funktion.
Noch ein Feature, das ich gerne hätte ... Wie sage ich meinem Editor, dass er mir solche Dinge anmeckert?
Die Variable wird im Kopf des Moduls deklariert, den ich hier nicht eingefügt hatte, sorry.
...und ich war es nicht :roll: ... (Habe mir vor langer Zeit angewöhnt bei Variablen Präfixe zu nutzen, aber das was vorhanden ist, baue ich nur Stück für Stück im Bedarfsfall um.)

Viele Grüße,
trawideli
PS.: Ich bin nur an Dienstagen und Donnerstagen hier.
System: Win10 mit Access2016 (voher Acc07)
trawideli
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 228
Registriert: 29. Apr 2014, 10:43

Re: macrobutton funktioniert nach Speichern nicht mehr

Beitragvon theoS » 16. Sep 2021, 20:56

Oh wie schön ... den will ich auch haben ... Word redet nicht mit mir ...

Das liegt vermutlich daran, dass bei dir Variablen deklariert sind die ich nicht hab. :)
Word ist normal, wenn man die Fehlerbehandlung nicht mit einem Errorhandler aushebelt, sehr geschwätzig. Das mit Log war die zweite Meldung, nachdem ich mit GetFirst offenbar genausowenig anfangen konnte wie mein Word, was eben dann an fehlenden Deklarationen liegen mochte. So genau hat mich das nicht mehr beschäftigt weil das ja nicht die Frage war.
der Log-Fehler tauchte dann auf als ich das w anders übergeben hatte und dann kam natürlich eine Meldung, das Log = "" nicht geht.
Ja, Präfixe taugen was, denn dann sind die im Regelfall eher einem Befehl unähnlich und man weiß was man hat.

Dass Word hier bei dir nicht so geschwätzig ist, liegt nicht an einer Einstellung glaub ich. Nimm mal die Deklaration von Log raus, dann sollte die Meldung bei dir auch kommen.
Und geh den Code mit F8 durch.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5724
Registriert: 19. Apr 2008, 00:14

Re: macrobutton funktioniert nach Speichern nicht mehr

Beitragvon trawideli » 21. Sep 2021, 18:25

Hallo theoS,

Ich verstehe die Marcobutton-Feldfunktion irgendwie noch nicht richtig und Word schweigt sich dazu aus.

Ich habe den Button wie folgt geändert:
Code: Alles auswählen
{ MacroButton TextmarkenSetzen Lesezeichen auffrischen}

und folgende kleine Prozedur eingefügt:
Code: Alles auswählen
Private Sub TextmarkenSetzen()
    Call TestInterface
End Sub

Getestet -> läuft, aus Word rausgegangen und wieder rein -> läuft nicht, mit F8 bzw. F5 im Editor gestartet -> läuft ...
aber eben nicht mit Doppelklick auf die Schaltfläche/Feldfunktion ...

Wo liegt der Fehler? :roll:

Grüße,
trawideli

P. S.: Ich habe die Deklaration von "Log" mal ausgeschaltet und dann hat Word mir auch verraten, dass es etwas anderes als eine leere Zeichenkette erwartet. "Log" wird aber sowieso nicht mehr gebraucht.
PS.: Ich bin nur an Dienstagen und Donnerstagen hier.
System: Win10 mit Access2016 (voher Acc07)
trawideli
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 228
Registriert: 29. Apr 2014, 10:43

Re: macrobutton funktioniert nach Speichern nicht mehr

Beitragvon theoS » 21. Sep 2021, 20:54

Also, es kann durchaus an den fehlenden "" liegen.
Ich füge das Feld immer mit der entsprechenden Funktion ein, die mir die Makros zwar aus einer schier unendlichen Liste aller Wordmakros anbietet und mich den Text eintragen lässt, der angezeigt wird, aber das funktioniert wenigstens.
Sieht dann so aus: {MACROBUTTON test "Start mal" } Allerdings geht das bei mir dann auch ohne die "". Kommt natürlich auch drauf an, wie du die {} eingefügt hast. Mit Strg+F9?

Wenn das bei dir nicht funktioniert, dann kann das ja im Prinzip nur daran liegen, dass das Makro irgendwie nicht versteht, was du mit dem Dok meinst, das du übergibst.
ich hab das zum Testen ja so gemacht:
Code: Alles auswählen
    Public w As Document
    Public Sub TestInterface()
    Dim s$
    If w Is Nothing Then Set w = ThisDocument
    MsgBox "Es geht los mit " & w.Name              'nur zu Testzwecken
    s = GetFirst(True, w)
    While s <> ""
        s = GetNext(True, w)
    Wend
    MsgBox n & " chapters bookmarked!" & vbCr & Hans, vbMsgBoxSetForeground
End Sub

Private Function GetFirst$(Tst As Boolean, w As Word.Document)
    n = 0                 'globale Varible
    Hans = ""             'globale Variable
MsgBox "bin drin in GetFirst" & w.Name
    '1st chapter heading
    Set NextRange = w.Bookmarks("Chapter").Range
    GetFirst = CInt(Right(NextRange.Style, 1) - 1)              'Überschriftenebene ermitteln
    GetFirst = GetFirst & ";" & NextRange.ListFormat.ListString & ";" & NextRange.Text
    End Function


und bei mir geht das auch, wenn ich das gespeichert hab und dann wieder geöffnet.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5724
Registriert: 19. Apr 2008, 00:14

Re: macrobutton funktioniert nach Speichern nicht mehr

Beitragvon trawideli » 28. Sep 2021, 18:30

Hallo theoS,

also ich hatte mir irgendetwas zerschossen mit wilden Tastenkombinationen zu F9. Sogar meine anderen Word-Dokumente zeigte mir statt dem Inhaltsverzeichnis die dahinter stehenden Funktionen an. Das hat mein Chef zum Glück mit dem Zurücksetzen einer Einstellung hinbekommen.
Ich habe mir nochmal eine Kopie der letzen funktionierenden Datei gemacht und die kleine Prozedur eingfügt sowie in der Schaltfläche den neuen Namen angegeben. Der erste Test lief auch problemlos, aber nach dem Abspeichern wurde es richtig seltsam. Das Betätigen der Schaltfläche erzeugte eine Fehlermeldung, da die Prozedur weg war. Also habe ich das ganze nochmal gemacht und erst separat gespeichert. Die Prozedur war noch da, aber die Schaltfläche funktionierte nicht mehr. Beim dritten Durchlauf habe ich wieder beim Verlassen gespeichert und beim nächsten Aufruf war die Prozedur wieder weg.
Also sehr seltsames Verhalten. Dabei war ich sehr vorsichtig keine anderen Tastenkombination außer SHIFT+F9 und F9 alleine zu drücken. Auch spätere Versuche mit STR+F9 eine neue Schaltfläche zu erstellen, brachte kein anderes Ergebnis.
Gibt es vielleicht noch andere Einstellungen, die in dem Zusammenhang zu beachten sind und die ich kontrollien sollte? Soll ich das Ganze in ein neues Dokument kopieren, um versteckte korrupte Elemente los zuwerden, die ja manchmal beim Konvertieren entstehen können? Aber im Grunde habe ich das ja schon gemacht und in diesem Threat beschrieben http://www.office-loesung.de/p/viewtopic.php?f=162&t=867269. (So undefinierbare Zustände nerven mich so richtig und kosten so unnötig viel Zeit.)

Beim Googlen fiel mir dann noch eine weitere Möglichkeit auf, um eine Schaltfläche zu realisieren. Ich habe jetzt über die Steuerelemente im Reiter "Entwicklertools" eine "AktiveX-Befehlsschaltfläche" eingefügt, diese "cmdTextmarkenSetzen" benannt und in der dazugehörigen Prozedur "TestInterface" aufgerufen. Das funktioniert auch nach dem Speichern. Allerdings steht die Prozedur in "MeinDokument" und nicht im Modul "AccessInterface", Kann ich das verschieben? Wie muss ich das dann in der Schaltfläche angeben?

Viele Dank für's mitdenken und unterstützen.

Grüße, trawideli
PS.: Ich bin nur an Dienstagen und Donnerstagen hier.
System: Win10 mit Access2016 (voher Acc07)
trawideli
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 228
Registriert: 29. Apr 2014, 10:43

Re: macrobutton funktioniert nach Speichern nicht mehr

Beitragvon theoS » 29. Sep 2021, 06:43

Also, wenn es dir darum geht, eine Schaltfläche zu haben, die das Makro startet, geb'ich dir den Rat, leg den in die Schnellstartleiste. Das kannst du auch für das Dokument allein machen.
Der Code wäre tatsächlich in einem eigenen Modul besser aufgehoben.
Mit strg+alt+f9 schaltest du die Feldcodes dokumentweit an, und wieder sus.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5724
Registriert: 19. Apr 2008, 00:14


Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste

cron