[GastForen Programme Office Microsoft Office Makro funktioniert mit Zeichenattributen nicht

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Office - Alles fürs Büro
Themen
Beiträge
Moderatoren
Letzter Beitrag

Makro funktioniert mit Zeichenattributen nicht

Elisa9
Beiträge gesamt:

2. Mai 2008, 15:59
Beitrag # 1 von 22
Bewertung:
(7325 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Nachmittag,

ich möchte fragen, ob jemand von Euch Erfahrung mit Makros in Word hat, die auf Zeichenattributen (fett, kursiv etc.) aufgebaut sind. Alle Makros, die ich auf der Basis von solchen Erkennungszeichen aufbaue, funktionieren nicht. Sobald ich die gleichen Befehle in der Suchen/Ersetzen-Maske ausführe, ohne dass ich das Makro aufzeichne, funktioniert alles perfekt.

Danke für alle Eure Vorschläge,
Elisa
X

Makro funktioniert mit Zeichenattributen nicht

MurphysLaw
Beiträge gesamt: 588

2. Mai 2008, 16:30
Beitrag # 2 von 22
Beitrag ID: #348914
Bewertung:
(7310 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Elisa,

ja, habe durchaus Erfahrung. Gerade bei Suchen/Ersetzen Makros muss man immer vorsichtig sein, erst recht wenn es um eine "Nur Formattierung" Suche handelt. Da reicht es manchmal, einmal eine andere Suche durchzuführen, und schon funzt das Makro nimmer.

Deshalb verlasse ich mich generell nie auf aufgezeichnete Makros sondern programmier die Dinger lieber gleich selber. Da habe ich aber auch leicht reden, weil ich das schon etliche Jahre mache...

Ein Beispiel, welches korrekt alle Fettdrucke durch die Formatvorlage "hurz" ersetzt, wäre z.B. das hier:
Code
Sub ErsetzeFettMitHurz() 

With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = ""
.Replacement.Text = ""
.Font.Bold = True
.Replacement.Style = ActiveDocument.Styles("hurz")
.Format = True
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With

End Sub


Falls möglich, sollte man ohnehin versuchen, auf die "Selection" zu verzichten, und das ganze gleich mit dem "Content" oder "Range" Objekt machen.
Kommt aber ganz drauf an, was Du überhaupt tun willst.
Lass ma hörn, dann finden wir schon was...
:-)
-------------


als Antwort auf: [#348905]

Makro funktioniert mit Zeichenattributen nicht

Elisa9
Beiträge gesamt:

2. Mai 2008, 17:03
Beitrag # 3 von 22
Beitrag ID: #348916
Bewertung:
(7300 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank M.

Bin ich froh, dass du mir sagen konntest, dass dies nicht funzt. Dachte jeweils, ich sei das Problem ;)

Ich bearbeite seehr lange Texte, die zum Beispiel fett gedruckte Wörter beinhalten. Der ganze Text muss in Stilvorlagen gequetscht werden, damit ich die Stile dann in InDesign importieren und das ganze dort layouten kann. Das selbe gilt auch für hochgestellte as nach bestimmten Wörtern. Auch diese müssen ihren Stil erhalten.
Ich möchte nun natürlich gern nach allem, was fett oder hochgestellt ist suchen.
Ich werde natürlich auch deinen eingefügten Code studieren und hoffe, dass ich dank deinen Begriffen Neues lernen und anwenden kann.

Hättest du vielleicht einen Tipp, wie ich das geschilderte Problem lösen kann?

LG,
Elisa


als Antwort auf: [#348914]

Makro funktioniert mit Zeichenattributen nicht

MurphysLaw
Beiträge gesamt: 588

2. Mai 2008, 17:23
Beitrag # 4 von 22
Beitrag ID: #348919
Bewertung:
(7296 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ah, ja, dann war meine Initialvermutung richtig.
:)

Dann werde ich den Code mal ein wenig anpassen, damit größtmöglich zusammenhängende Blöcke korrekt formattiert werden, und ihn zudem um Kursiva, Unterstrich und hochgestellte Ordinalen erweitern.

Bis gleich.
-----------


als Antwort auf: [#348916]

Makro funktioniert mit Zeichenattributen nicht

MurphysLaw
Beiträge gesamt: 588

2. Mai 2008, 18:48
Beitrag # 5 von 22
Beitrag ID: #348926
Bewertung:
(7272 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
So, hat ein wenig gedauert, musste kurz weg...

Hier zuerst die Erklärung, dann der Code dazu:
1. Ich habe mir drei neue Formatvorlagen definiert: "Fedd", "Kursief" und "Unnerstrich".
2. Im nachfolgenden Code wird der erste Ersetz-Code drei Mal durchlaufen, jeweils mit neuer Einstellung für fett, kursiv und Unterstrich.
3. Danach geht es falschen Ordinalzahlen an den Kragen. Die habe ich hier mal anders behandelt, nämlich nicht durch eine Formatvorlage ersetzt, sondern schlicht durch das entsprechend korrekte Sonderzeichen ª bzw. º. (Zeichen 170 & 186).

Wenn Du auf "Extras->Makros->Visual basic Editor" klickst, kannst Du untenstehenden Code komplett so einfügen.
Probier mal mit rum - aber mach dir unbedingt erst Kopien deiner Dateien!
:P

Code
Sub PrepForIndesign() 
Dim i As Integer
Dim Formate
'*******
'Formatvorlagen für fett, kursiv, und unterstrichen gedruckten Text
'Müssen zunächst in Word erstellt werden, also vorhanden sein!
'******
Formate = Array("Fedd", "Kursief", "Unnerstrich")
'******

For i = 0 To UBound(Formate)
SetParams 'Für jedes Suchen/Ersetzen das gleiche
With Selection.Find
Select Case i
Case 0 'erster Durchlauf, fett
.Font.Bold = True
Case 1 'zweiter Durchlauf, kursiv
.Font.Italic = True
Case 2 'dritter Durchlauf, und so weiter...
.Font.Underline = True
End Select
.Replacement.Style = ActiveDocument.Styles(Formate(i)) 'stimmt schon automatisch, wenn korrekt im Array "Formate" hinterlegt.
.Execute Replace:=wdReplaceAll
End With
Next i

SetParams 'Für jedes Suchen/Ersetzen das gleiche

Selection.HomeKey unit:=wdStory
With Selection.Find
.Text = "o"
.Font.Superscript = True
.Replacement.Text = ChrW(186) 'korrektes Ordinal-O
.Execute Replace:=wdReplaceAll
End With
With Selection.Find
.Font.Superscript = True
.Text = "a"
.Replacement.Text = ChrW(170) 'korrektes Ordinal-a
.Execute Replace:=wdReplaceAll
End With

End Sub

Private Sub SetParams()
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = ""
.Replacement.Text = ""
.Format = True
.Wrap = wdFindContinue
End With
End Sub



Toi, toi, toi!

Grüße,
Andreas
--------------


als Antwort auf: [#348919]

Makro funktioniert mit Zeichenattributen nicht

Elisa9
Beiträge gesamt:

2. Mai 2008, 19:52
Beitrag # 6 von 22
Beitrag ID: #348934
Bewertung:
(7254 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank, Andreas!
Du hast Dir da ja eine Mühe gemacht!!
Ich werde nun den Code studieren, sieht extrem interessant aus, vor allem, wenn man in Sachen Makro-programmieren noch nicht so erfahren ist.

Ich wünsche Dir einen schönen Abend,
Elisa


als Antwort auf: [#348926]

Makro funktioniert mit Zeichenattributen nicht

Elisa9
Beiträge gesamt:

2. Mai 2008, 20:11
Beitrag # 7 von 22
Beitrag ID: #348935
Bewertung:
(7245 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Andreas, darf ich dich noch etwas fragen?

Die Stile fett und unterstrichen kann ich perfekt übernehmen. Nun habe ich aber noch den Stil unterstrichen & fett, d. h. unterstrichen ist nicht gleich unterstrichen & fett zusammen. Kann ich die beiden kombinieren?
Vielleicht so: .Font.Bold.Underline? Ich versuche es, wäre aber sehr froh, wenn du mir nochmals einen Tipp geben könntest.

LG,
Elisa


als Antwort auf: [#348934]

Makro funktioniert mit Zeichenattributen nicht

MurphysLaw
Beiträge gesamt: 588

3. Mai 2008, 13:51
Beitrag # 8 von 22
Beitrag ID: #348980
Bewertung:
(7197 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Elisa9 ] Andreas, darf ich dich noch etwas fragen?

Die Stile fett und unterstrichen kann ich perfekt übernehmen. Nun habe ich aber noch den Stil unterstrichen & fett, d. h. unterstrichen ist nicht gleich unterstrichen & fett zusammen. Kann ich die beiden kombinieren?
Vielleicht so: .Font.Bold.Underline? Ich versuche es, wäre aber sehr froh, wenn du mir nochmals einen Tipp geben könntest.

LG,
Elisa

Freut mich, dass es klappt!
Für fett+unterstrichen läuft es etwas kniffliger, sollte aber kein Problem sein (hätte ich mir aber denken können):

1.eine Formatvorlage "feddunnerstrich" oder ähnliches definieren (muss eindeutig anders heißen, als die Word-Standardvorlage).

2. Falls erforderlich ebenso mit fett+kursiv, unterstrich+kursiv und fett+unterstrich+kursiv verfahren.

3. Wichtig: da fett+unterstrichen ja auch fett ist, kommt es auf die Reihenfolge an: es sollte reichen, die eindeutigste zum Schluss zuzuweisen, also so:
Code
'******  
Formate = Array("Fedd", "Kursief", "Unnerstrich"[b], "Feddunnerstrich", "Feddkursief", "Kursiefunerstrich", "Feddkursiefunnerstrich")
'******

For i = 0 To UBound(Formate)
SetParams 'Für jedes Suchen/Ersetzen das gleiche
With Selection.Find
Select Case i
Case 0 'erster Durchlauf, fett
.Font.Bold = True
Case 1 'zweiter Durchlauf, kursiv
.Font.Italic = True
Case 2 'dritter Durchlauf, und so weiter...
.Font.Underline = True
Case 3
.Font.Bold= True
.Font.Underline = True
Case 4
.Font.Bold= True
.Font.Italic = True
Case 5
.Font.Underline= True
.Font.Italic = True
Case 6
.Font.Bold= True
.Font.Italic= True
.Font.Underline = True
End Select
.Replacement.Style = ActiveDocument.Styles(Formate(i)) 'stimmt schon automatisch, wenn korrekt im Array "Formate" hinterlegt.
.Execute Replace:=wdReplaceAll
End With
Next i


Na? Logik erkannt? :)

Viele Grße,
Andreas


als Antwort auf: [#348935]

Makro funktioniert mit Zeichenattributen nicht

Elisa9
Beiträge gesamt:

3. Mai 2008, 17:12
Beitrag # 9 von 22
Beitrag ID: #348999
Bewertung:
(7176 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke vielmals, Andreas!

Ich glaube, ich werde mir mal Literatur über Visual Basic beschaffen. Gibt es da etwas besonders Empfehlenswertes?

Darf ich nochmals etwas zum Makro fragen? Wenn ich es starten will, gibt mir der Computer immer die Fehlermeldung "errore di compilazione", was soviel heisst wie "Fehler beim Zusammenstellen". Kannst Du Dir dies erklären?

Ich wünsche Dir ein schönes Wochenende,
Elisa


als Antwort auf: [#348980]

Makro funktioniert mit Zeichenattributen nicht

MurphysLaw
Beiträge gesamt: 588

5. Mai 2008, 12:28
Beitrag # 10 von 22
Beitrag ID: #349094
Bewertung:
(7097 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Elisa9 ] Danke vielmals, Andreas!

Ich glaube, ich werde mir mal Literatur über Visual Basic beschaffen. Gibt es da etwas besonders Empfehlenswertes?

Darf ich nochmals etwas zum Makro fragen? Wenn ich es starten will, gibt mir der Computer immer die Fehlermeldung "errore di compilazione", was soviel heisst wie "Fehler beim Zusammenstellen". Kannst Du Dir dies erklären?

Ich wünsche Dir ein schönes Wochenende,
Elisa

Hallo Elisa,

es gibt da etwas recht gutes aus der "In 21 Tagen" Reihe, also z.. "Visual Basic / VBA in 21 Tagen"

Der Fehler bedeutet, dass der Code nicht ausgeführt werden kann. Da er bei mir lief, vermute ich, dass Du ihn nicht komplett rüberkopiert hast. Ich sehe, dass mein Code oben nicht ganz dagestellt wird, da ist ein horizontaler Scrollbalken. Kopier doch einfach noch mal den ganzen Inhalt des letzten Codes.

Grüße
Andreas


als Antwort auf: [#348999]

Makro funktioniert mit Zeichenattributen nicht

Elisa9
Beiträge gesamt:

5. Mai 2008, 16:20
Beitrag # 11 von 22
Beitrag ID: #349155
Bewertung:
(7078 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Andreas,

wieder ein herzliches Dankeschön!

Ich bin jedoch ziemlich ratlos, das Makro will und will nicht.
Ich erhalte immer die Meldung "utilizzo non valido di property", was soviel bedeutet wie, "ungültige Property-Benützung.

Die Logik in den Codes habe ich mehr oder wengier erkannt, wirklich seeehr interessant. Nur kann ich mit der Property nicht viel anfangen. Ich bin daran, in der Hilfe zu suchen. Du weisst sicher, was diese Fehlermeldung bedeutet, nicht wahr?

Ich wünsche Dir einen schönen Nachmitta,
Elisa


als Antwort auf: [#349094]

Makro funktioniert mit Zeichenattributen nicht

MurphysLaw
Beiträge gesamt: 588

5. Mai 2008, 17:41
Beitrag # 12 von 22
Beitrag ID: #349165
Bewertung:
(7059 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Elisa9 ] Hallo Andreas,

wieder ein herzliches Dankeschön!

Ich bin jedoch ziemlich ratlos, das Makro will und will nicht.
Ich erhalte immer die Meldung "utilizzo non valido di property", was soviel bedeutet wie, "ungültige Property-Benützung.

Die Logik in den Codes habe ich mehr oder wengier erkannt, wirklich seeehr interessant. Nur kann ich mit der Property nicht viel anfangen. Ich bin daran, in der Hilfe zu suchen. Du weisst sicher, was diese Fehlermeldung bedeutet, nicht wahr?

Ich wünsche Dir einen schönen Nachmitta,
Elisa

Hallo Elisa,

"Unzulässige Verwendung einer Eigenschaft" heißt, dass ein erforderlicher Eigenschaftswert nicht gesetzt wurde, also im Code z.B. "....Font.Bold" steht, statt ".....Font.Bold=True"

Da ich nicht weiß, wie dein Code jetzt genau aussieht, hier einfach nochmal der komplette Code (und vorher getestet und noch ein paar Korrekturen vorgenommen).
Code
Sub PrepForIndesign() 
Dim i As Integer
Dim Formate
'*******
'Formatvorlagen für fett, kursiv, und unterstrichen gedruckten Text
'Müssen zunächst in Word erstellt werden, also vorhanden sein!
'******
Formate = Array("Fedd", "Kursief", "Unnerstrich", "Feddunnerstrich", "Feddkursief", "Kursiefunnerstrich", "Feddkursiefunnerstrich")
'******
Selection.HomeKey unit:=wdStory
For i = 0 To UBound(Formate)
SetParams 'Für jedes Suchen/Ersetzen das gleiche
With Selection.Find
Select Case i
Case 0 'erster Durchlauf, fett
.Font.Bold = True
.Font.Italic = False
.Font.Underline = False
.Replacement.Font.Bold = True
Case 1 'zweiter Durchlauf, kursiv
.Font.Bold = False
.Font.Italic = True
.Font.Underline = False
.Replacement.Font.Italic = True
Case 2 'dritter Durchlauf, und so weiter...
.Font.Bold = False
.Font.Italic = False
.Font.Underline = True
.Replacement.Font.Underline = True
Case 3
.Font.Bold = True
.Font.Italic = False
.Font.Underline = True
.Replacement.Font.Bold = True
.Replacement.Font.Underline = True
Case 4
.Font.Bold = True
.Font.Italic = True
.Font.Underline = False
.Replacement.Font.Bold = True
.Replacement.Font.Italic = True
Case 5
.Font.Bold = False
.Font.Italic = True
.Font.Underline = True
.Replacement.Font.Italic = True
.Replacement.Font.Underline = True
Case 6
.Font.Bold = True
.Font.Italic = True
.Font.Underline = True
.Replacement.Font.Bold = True
.Replacement.Font.Italic = True
.Replacement.Font.Underline = True
End Select
.Replacement.Style = ActiveDocument.Styles(Formate(i)) 'stimmt schon automatisch, wenn korrekt im Array "Formate" hinterlegt.
.Execute Replace:=wdReplaceAll
End With
Next i


End Sub

Private Sub SetParams()
Selection.HomeKey unit:=wdStory
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = ""
.Replacement.Text = ""
.Format = True
.Wrap = wdFindContinue
End With
End Sub

In bocca al lupo!
Andreas

--------


als Antwort auf: [#349155]

Makro funktioniert mit Zeichenattributen nicht

Elisa9
Beiträge gesamt:

5. Mai 2008, 18:25
Beitrag # 13 von 22
Beitrag ID: #349169
Bewertung:
(7048 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Andreas, es funktioniert!!
Möglicherweise lag es daran, dass mein Dokument ein .dot war, wer weiss. Auf jeden Fall klappt es jetzt und ich wage mich daran, den Code etwas zu verändern...

Danke nochmals!
Elisa


als Antwort auf: [#349165]

Makro funktioniert mit Zeichenattributen nicht

Elisa9
Beiträge gesamt:

8. Mai 2008, 09:59
Beitrag # 14 von 22
Beitrag ID: #349615
Bewertung:
(6976 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Darf ich nochmals etwas zum obenstehenden Makro fragen?

Ich erhalte neuerdings immer eine Fehlermeldung, wenn ich das Makro starten will. Es öffnet sich der Visual Basic Editor und der Name des betreffenden Makros ist gelb markiert. Im Makro drin ist "SetParams" blau markiert.
Ich habe den Code nochmals hier aus dem Forum kopiert, doch die Fehlermeldung bleibt.
Was bedeutet wohl "SetParams"?

Danke für Eure Antwort,
Elisa


als Antwort auf: [#349169]

Makro funktioniert mit Zeichenattributen nicht

MurphysLaw
Beiträge gesamt: 588

8. Mai 2008, 10:30
Beitrag # 15 von 22
Beitrag ID: #349622
Bewertung:
(6963 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Elisa9 ] Darf ich nochmals etwas zum obenstehenden Makro fragen?

Ich erhalte neuerdings immer eine Fehlermeldung, wenn ich das Makro starten will. Es öffnet sich der Visual Basic Editor und der Name des betreffenden Makros ist gelb markiert. Im Makro drin ist "SetParams" blau markiert.
Ich habe den Code nochmals hier aus dem Forum kopiert, doch die Fehlermeldung bleibt.
Was bedeutet wohl "SetParams"?

Danke für Eure Antwort,
Elisa


Hehehehe... :))
==>Dann hast Du wohl nicht alles kopiert.
Schau mal in meinem Code im letzten Post auf den unteren Abschnitt. Dort befindet sich das "Sub SetParams()". Wenn Du das nicht mitkopierst, dann wird es auch nicht gefunden.
;-)


als Antwort auf: [#349615]
X