Opgelost Leegmaken voettekst in Excel lukt niet met code

Dit topic is als opgelost gemarkeerd

HansFRAP

Gebruiker
Lid geworden
12 jul 2011
Berichten
228
Probleem
Ik krijg een Excel (2021) bestand waarin reeds een tekst in de Left- en CenterFooter staan.
Echter: inhoud LeftFooter is te lang waardoor deze door CenterFooter gaat.
Daarnaast is de huidige inhoud niet compleet.
Dus idee: Verwijder de inhoud van de footer-blokjes en plaats daar de nieuwe volledige inhoud.

Gebruiktecode om te verwijderen:
Code:
.....
    With ActiveSheet.PageSetup
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
    End With
    ........

Helaas! Heel regelmatig blijft de aanwezige tekst gewoon staan. 😢
Het lijkt wel of deze code niet geactualiseerd wordt.
Of dat de Footers gelocked zijn oid.

Toen geprobeerd om code vanuit Beeld-paginamode uit te voeren:
Code:
....
    ActiveWindow.View = xlPageLayoutView
    With ActiveSheet.PageSetup
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
    End With
    ActiveWindow.View = xlNormalView
    ........

Helaas!
Loop ik de code met F8 handmatig door dan is er geen probleem.
Maar ja, dan kan je het net zogoed direct handmatig aanpassen. Kost te veel tijd.
Ook geprobeerd om ipv leeg te maken er een spatie in te plaatsen maar ook geen resultaat.

Vraag
- Is het wijzigen van voetteksten met VBA in Excel een probleem (niet betrouwbaar)?
- Is hier wel oplossing voor? Ander soort code?
 
Je code doet het hier prima in Office 2021.
Hoe komt de originele tekst er terecht?
 
Ik kon je bestand niet openen.
 
Ja, ik had al verwacht dat snb naar bestand zou vragen maar bestand dat probleem geeft zou ik eigenlijk niet gelijk in de groep willen plaatsen. 😒
Ik zal het aan beheerder-Helpmij sturen met verzoek om door te sturen.
 
Of je maakt even een bestand dat er een beetje op lijkt met een vergelijkbare kop- en voettekst. En uiteraard de code die je nu gebruikt. Het gaat er maar om dat we wat kunnen testen. En vooral: dat wij geen tijd hoeven te steken in het maken van een voorbeeldje.
 
Er zijn meerdere sets headers en footers:
.PageSetup.LeftHeader
.PageSetup.CenterHeader
.PageSetup.RightHeader
.PageSetup.LeftFooter
.PageSetup.CenterFooter
.PageSetup.RightFooter
.PageSetup.FirstPage.LeftHeader
.PageSetup.FirstPage.CenterHeader
.PageSetup.FirstPage.RightHeader.Text
.PageSetup.FirstPage.LeftFooter
.PageSetup.FirstPage.CenterFooter
.PageSetup.FirstPage.RightFooter
.PageSetup.EvenPage.LeftHeader
.PageSetup.EvenPage.CenterHeader
.PageSetup.EvenPage.RightHeader
.PageSetup.EvenPage.LeftFooter
.PageSetup.EvenPage.CenterFooter
.PageSetup.EvenPage.RightFooter
 
In het document dat je me stuurde werkt de eerste code die plaatste zonder enig probleem:
Code:
With ActiveSheet.PageSetup
    .LeftFooter = ""
    .CenterFooter = ""
    .RightFooter = ""
End With
 
Maar nu heeft het werkboek verschillende tabbladen.
Dus met routine alle bladen doorlopen:

Code:
Sub Test
Dim T as Integer
    For T = 1 to Worksheets.Count
        Sheets(T).select   
        ActiveWindow.View = xlPageLayoutView
            If Len(ActiveSheet.PageSetup.LeftFooter) > 0 Then
                ActiveSheet.PageSetup.LeftFooter = ""
            End If
            If Len(ActiveSheet.PageSetup.CenterFooter) > 0 Then
                ActiveSheet.PageSetup.CenterFooter = ""
            End If
            If Len(ActiveSheet.PageSetup.RightFooter) > 0 Then
                ActiveSheet.PageSetup.RightFooter = ""
            End If

            With ActiveSheet.PageSetup
                .LeftFooter = "&""Calibri""&8" & "namen"
                .CenterFooter = "&""Calibri""&8" & "datum"
                .RightFooter = "&""Calibri""&8" & "namen"
            End With
            ActiveWindow.View = xlNormalView
    Next T
End sub
 
Deze werkt op alle tabbladen en doet wat wordt verwacht:
Code:
For Each sh In ThisWorkbook.Sheets
    With sh.PageSetup
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
    End With
Next sh
Als dat bij jou niet zo is heb ik helaas geen idee waarom.
 
Edmoor,

Dank voor suggestie maar ...
- Routine loopt slechts 2 maal terwijl er 8 bladen zijn
- voetteksten worden bij mij niet geleegd 😒
Ik zal het ook op andere laptop proberen.
 
Dat kan dus ook niet, de code loopt door alle tabbladen en heeft niets met PC of laptop te maken.
 
Ik denk dat ik deze routine toch op andere laptop moet gaan draaien 😥
Op oude laptop loopt de routine gewoon door alle bladen en alle voetteksten worden geleegd 🤔
Er moet dus iets anders spelen.
Maar ik kan voorlopig weer verder.
Probleem voor nu opgelost.
(Toch maar geheel opnieuw inrollen 😒 )
 
Aan Edmoor, Snb, Jpk, Octafish,

Ik moet mijn excuus maken 😌 .
Mijn probleem is simpeler als ik nu geheel bekijk.
Er is dus eigenlijk geen probleem, maar probleem heb ik zelf gecreeerd.

Ik heb een bestand in mijn opstart XLStart staat. Dit is vervolgens een verborgen bestand.
Hierin heb ik mijn macro's verzameld.

Als ik Edmoor zijn voorbeeld start loopt deze maar 2 maal.
He, he dat is (nu) logisch als de macro in dat bestand draait, het bestand heeft 2 bladen.
Dus wanneer ik als eerste de focus op het werkblad (ver)leg naar bestand waarin ik de voetteksten wil verwijderen en dan de routine laat volgen (met kleine aanpassing) dan gaat alles (weer) als een zonnetje 🌞
Code:
Sub Edmoor()
Dim SH
    Windows("<Bestandsnaam>").Activate
    For Each SH In ActiveWorkbook.Sheets
        With SH.PageSetup
            .LeftFooter = ""
            .CenterFooter = ""
            .RightFooter = ""
        End With
    Next SH
End Sub

Maar als nog dank voor meedenken.
 
Terug
Bovenaan Onderaan