Macro wijzigen

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • HendrikMartinus
  • Registratie: Januari 2018
  • Laatst online: 20-02-2023
Mijn vraag

Macro wijzigen voor Word in Visual Basic

Graag hulp!!

Ik wijzig in een tekstbestand alle tekst in lettertype Times New Romen 12 met behulp van volgende stukje macro:

(dit werkt):

VBScript:
1
2
3
4
Selection.WholeStory
Selection.Font.Name = "Times New Roman"
Selection.Font.Size = 12
Selection.HomeKey Unit:=wdStory


Nu wil ik deze macro wijzigen zodat de volgende lettertype’s worden overgeslagen:

VBScript:
1
2
3
Logo1 (Times New Romen 10 vet) en
Logo adres (Times New Romen 8) en
Logo voetnoot (Times New Romen 9)


Hoe moet dan die If Then? of andere instructie, er uitzien?

Als ik deze 4 lettertypes in een automatische macro plaats krijg ik het volgende waar ik helaas niets mee kan:

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Macro1()
'
Selection.TypeText Text:="Standaard"
Selection.TypeParagraph
Selection.Style = ActiveDocument.Styles("Logo1")
Selection.TypeText Text:="Logo1"
Selection.TypeParagraph
Selection.Style = ActiveDocument.Styles("Logo adres")
Selection.TypeText Text:="Logo adres"
Selection.TypeParagraph
Selection.Style = ActiveDocument.Styles("Voetnoot")
Selection.TypeText Text:="Voetnoot"
End Sub

[ Voor 2% gewijzigd door RobIII op 18-04-2020 17:19 . Reden: Code tags toegeveogd ]

Beste antwoord (via HendrikMartinus op 19-04-2020 18:12)


  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Probeer dit (zonder benoeming van de 'styles'):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub macro1()
Dim x As Long
Application.ScreenUpdating = False
x = 1
Do Until x > ActiveDocument.Paragraphs.Count
With ActiveDocument.Paragraphs(x).Range.Font
.Name = "Times New Roman"
If .Size = 8 Or .Size = 9 Or (.Size = 10 And .Bold = True) Then
GoTo volgende
Else
.Size = 12
End If
End With
volgende:
x = x + 1
Loop
Application.ScreenUpdating = True
End Sub

Alle reacties


Acties:
  • 0 Henk 'm!

  • Belindo
  • Registratie: December 2012
  • Nu online

Belindo

▶ ─🔘─────── 15:02

Je kunt verschillende secties een stijl meegeven vanuit je ribbon. Vervolgens kun je in je VBA per stijl een lettertype en grootte geven.

Je kunt ook een eigen stijl maken, dan hoef je de standaard 'Heading 1', etc niet te gebruiken. Op basis van de standaard stijlen, werkt mij bij de volgende code:
VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub bla()

    'Logo, gestyled als 'Heading 1'
    ActiveDocument.Styles("Heading 1").Font.Name = "Times New Roman"
    ActiveDocument.Styles("Heading 1").Font.Size = 10
    
    'Logo Adres, gestyled als 'Heading 2'
    ActiveDocument.Styles("Heading 2").Font.Name = "Times New Roman"
    ActiveDocument.Styles("Heading 2").Font.Size = 8
    
    'Logo Voetnoot, gestyled als 'Heading 3'
    ActiveDocument.Styles("Heading 3").Font.Name = "Times New Roman"
    ActiveDocument.Styles("Heading 3").Font.Size = 9
    
    'Rest van de tekst, gestyled als 'Normal'
    ActiveDocument.Styles("Normal").Font.Name = "Times New Roman"
    ActiveDocument.Styles("Normal").Font.Size = 12
    
    'Selection.HomeKey Unit:=wdStory

End Sub

[ Voor 3% gewijzigd door Belindo op 07-04-2020 19:37 ]

Coding in the cold; <brrrrr />


Acties:
  • 0 Henk 'm!

  • HendrikMartinus
  • Registratie: Januari 2018
  • Laatst online: 20-02-2023
Mijn excuus dat ik zo laat reageer.

Hartelijk dank voor uw reactie, helaas snap ik er nog niet veel van en dat zal wel aan mijn leeftijd liggen die niet zo jong meer is.
Uw voorstel heb ik geprobeerd in een stukje voorbeeld tekst maar dit werkt zo niet ik zal wel iets fout doen?
'k zal het nog een keer in het kort proberen uit te leggen

Er zijn 3 opmaakprofielen met 3 verschillende lettergroottes

1. Logo: lettergrootte 10
2. Adres: lettergrootte 8
3. Voetnoot: lettergrootte 9

het overgrote tekstdeel bestaat uit verschillende soorten teksttypes, en lettergroottes afhankelijk van wat de scanner met het omzet programma er van gemaakt heeft, deze tekst moet echter allemaal Times New Roman lettergrootte 12 worden (standaard dus).
Zou u me nog verder op weg willen helpen?

Acties:
  • 0 Henk 'm!

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 23-08 23:43
Uitgaande dat per paragraaf er een style is, zal de macro de paragraphs één voor één moeten doorlopen, de huidige style moeten vaststellen en vergelijken met styles die ongewijzigd moeten blijven en anders de nieuwe style toepassen. Dus deze richting op

code:
1
2
3
4
5
6
7
8
9
10
11
12
Public Sub ChangeSomeStyles()
Dim myPar As Paragraph
Dim myStyle As String

 For Each myPar In ThisDocument.Paragraphs
   myStyle = myPar.Style
   If (myStyle <> "Logo1") And (1 <> 0) Then
     myPar.Style = "Normal"
   End If
 Next myPar

End Sub

Acties:
  • 0 Henk 'm!

  • HendrikMartinus
  • Registratie: Januari 2018
  • Laatst online: 20-02-2023
Bolukan, bedankt voor je reactie en deze meteen geprobeerd:

Het aangepast op de volgende wijze maar dit doet bij mij niets.

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Public Sub ChangeSomeStyles()
Dim myPar As Paragraph
Dim myStyle As String

 For Each myPar In ThisDocument.Paragraphs
        myStyle = myPar.Style
   If (myStyle <> "Logo uhWdW") And (1 <> 0) Then
            myPar.Style = "Standaard"
   End If
 Next myPar

For Each myPar In ThisDocument.Paragraphs
        myStyle = myPar.Style
   If (myStyle <> "Logo adres") And (1 <> 0) Then
            myPar.Style = "Standaard"
   End If
 Next myPar
 
 For Each myPar In ThisDocument.Paragraphs
        myStyle = myPar.Style
   If (myStyle <> "Voetnoot") And (1 <> 0) Then
            myPar.Style = "Standaard"
        
   End If
 Next myPar

[ Voor 1% gewijzigd door RobIII op 18-04-2020 17:19 ]


Acties:
  • 0 Henk 'm!

  • HendrikMartinus
  • Registratie: Januari 2018
  • Laatst online: 20-02-2023
Reactie naar Belindo:

Jou voorstel aangepast op de volgende wijze ; de de tekst met de 3 lettertypes blijft keurig onveranderd maar de rest van de tekst wordt nog geen 'Standaard'.

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Macro2()
    'Logo, gestyled als 'Heading 1'
    ActiveDocument.Styles("Logo uhWdW").Font.Name = "Times New Roman"
    ActiveDocument.Styles("Logo uhWdW").Font.Size = 10
    ActiveDocument.Styles("Logo uhWdW").Font.Bold = True
    
    'Logo Adres, gestyled als 'Heading 2'
    ActiveDocument.Styles("Logo adres").Font.Name = "Times New Roman"
    ActiveDocument.Styles("Logo adres").Font.Size = 8
    
    'Logo Voetnoot, gestyled als 'Heading 3'
    ActiveDocument.Styles("Voetnoot").Font.Name = "Times New Roman"
    ActiveDocument.Styles("Voetnoot").Font.Size = 9
    
    'Rest van de tekst, gestyled als 'Normal'
    ActiveDocument.Styles("Standaard").Font.Name = "Times New Roman"
    ActiveDocument.Styles("Standaard").Font.Size = 12
    
    'Selection.HomeKey Unit:=wdStory
End Sub

[ Voor 0% gewijzigd door RobIII op 18-04-2020 17:20 ]


Acties:
  • 0 Henk 'm!

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 23-08 23:43
Lees de IF statements eens door, en bedenk wat ze doen. Het idee van "(1 <> 0)" was dat je dat zelf ging aanvullen.
Nu loop je 3x door het document. Bedenk hoe je dat in 1x kunt doen.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
@HendrikMartinus Wil je a.u.b. code tags gebruiken wanneer je code post? Zie verder ook Waar hoort mijn topic?.

Ik verplaats je topic daarom dan ook van Softwareontwikkeling naar Client Software Algemeen :)

[ Voor 6% gewijzigd door RobIII op 18-04-2020 17:22 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • HendrikMartinus
  • Registratie: Januari 2018
  • Laatst online: 20-02-2023
Sorry Bolukan, maar dat lukt me niet meer, mijn leeftijd en ook een herseninfarct speelt me parten, dan moet ik er maar mee stoppen, hoewel het een welkom hulpje zou zijn.

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Probeer dit (zonder benoeming van de 'styles'):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub macro1()
Dim x As Long
Application.ScreenUpdating = False
x = 1
Do Until x > ActiveDocument.Paragraphs.Count
With ActiveDocument.Paragraphs(x).Range.Font
.Name = "Times New Roman"
If .Size = 8 Or .Size = 9 Or (.Size = 10 And .Bold = True) Then
GoTo volgende
Else
.Size = 12
End If
End With
volgende:
x = x + 1
Loop
Application.ScreenUpdating = True
End Sub

Acties:
  • 0 Henk 'm!

  • HendrikMartinus
  • Registratie: Januari 2018
  • Laatst online: 20-02-2023
Dix-neuf, dit is het wat ik bedoel en het werkt prima, echter alleen als de aanwezige tekst styles,Times New Roman is.

Heeft de scanner in combinatie met scan to office (dat is het programma dat de gescande tekst formatteert in een Word document) er b.v Arial of Courier New van gemaakt dan wordt dat niet naar Times New Roman 12 omgezet, kan dat ook verwezenlijkt worden?

Ik heb hier een stukje tekst in Word, tekst die niet mag wijzigen en tekst die juist wel moet wijzigen, maar ik weet niet hoe ik dat hier aan kan hangen?

Maar ik wil niet nalaten te zeggen dat ik al heel erg blij ben met dit resultaat!!!

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
HendrikMartinus schreef op zondag 19 april 2020 @ 15:48:
Dix-neuf, dit is het wat ik bedoel en het werkt prima, echter alleen als de aanwezige tekst styles,Times New Roman is. Heeft de scanner in combinatie met scan to office (dat is het programma dat de gescande tekst formatteert in een Word document) er b.v Arial of Courier New van gemaakt dan wordt dat niet naar Times New Roman 12 omgezet.
Dat is vreemd. Ik heb de code getest op verschillende lettertypes (ook Courier en Arial) en álle lettertypes (en alle tekst) wordt omgezet naar Times New Roman (daar geeft de macro ook opdracht toe).
Ik heb hier een stukje tekst in Word, tekst die niet mag wijzigen en tekst die juist wel moet wijzigen, maar ik weet niet hoe ik dat hier aan kan hangen?
Je kunt bijvoorbeeld via https://wetransfer.com/ een bestand uploaden. Na uploaden krijg je een url terug, die je eventueel hier kunt plaatsen.

Acties:
  • 0 Henk 'm!

  • HendrikMartinus
  • Registratie: Januari 2018
  • Laatst online: 20-02-2023
Beste Dix-neuf, ik had waarschijnlijk iets niet helemaal goed gedaan, in ieder geval ben ik zojuist met een nieuw gescand boek begonnen en heb meteen de Macro er op los gelaten. Tot mijn grote vreugde ging het alles perfect ook de tekst met andere stylen zette hij keurig om naar Times New Roman 12 terwijl de tekst met grote 8, 9 en 10 keurig intact bleef precies zo als ik het graag wilde hebben. Mijn gemekker was dus onterecht!!

Ik wil je heel erg bedanken voor deze prachtige oplossing

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Dank voor je respons.
Graag gedaan.
Pagina: 1