• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Bereiknamen kopiëren naar een andere werkblad

Status
Niet open voor verdere reacties.

Rabberzzz

Gebruiker
Lid geworden
10 apr 2018
Berichten
59
Op een onverklaarbare reden lukt het mij niet om met de originele werkblad de bereiknamen over te zetten naar een andere werkbladmiddels een VBA code. Nu vind je in de bijlage de privacy proof versies van Renovatie.xlsm en Nieuwbouw.xlsm.
Zelf krijg ik een syntax 1004 error. Ik dacht dat het lag aan een aantal verborgen bereiknamen die beginnen met _xlfn*. Echter als ik deze verwijder of ik pas de VBA code erop aan 'If Not m Like _xlfn*' zoiets lukt het nog steeds niet en krijg ik (zo uit mijn hoofd) een 404 object error.

Casus:
In de bijlage vind je de bereiknaam 'KNVBRENOVATIE_OnderbouwOpLocatieIndringingsNorm' op B30 op het tabblad Onderbouw Op Locatie van Book1.xlsm en Renovatie.xlsm
terwijl je in dezelfde cel van Nieuwbouw.xlsm de bereiknaam 'KNVBNIEUW_OnderbouwOpLocatieIndringingsNorm' leest.

Graag wil ik dat vanuit Renovatie.xlsm de bereiknaam 'KNVBRENOVATIE_OnderbouwOpLocatieIndringingsNorm' op B30 op het tabblad Onderbouw Op Locatie in het werkblad Nieuwbouw.xlsm erbij komt.

Zelf lukt het mij wel om de bereiknaam 'KNVBRENOVATIE_OnderbouwOpLocatieIndringingsNorm' vanuit Book1.xlsm over te zetten naar Nieuwbouw.xlsm. Maar bij Renovatie.xlsm krijg ik de hierboven beschreven errors.

Graag begrijp ik waar in mij originele werkbladen de fout(en) is/staan.

Hopelijk kan iemand mij hier inzicht in geven.
 

Bijlagen

  • Book1.xlsm
    20,4 KB · Weergaven: 34
  • Nieuwbouw.xlsm
    1,4 MB · Weergaven: 31
  • Renovatie.xlsm
    1,4 MB · Weergaven: 26
Als u mijn bericht gelezen heeft dan weet u wellicht ook dat wanneer ik de VBA code in een voorbeeld bestand toepas het wel werkt. Maar dat wanneer ik de VBA code toepas in onze originele werkbladen, en hier de privacy proof versies, het dan niet werkt.

Code:
Sub Copy_All_Defined_Names()
   ' Loop through all of the defined names in the active
   ' workbook.
     For Each x In ActiveWorkbook.Names
      ' Add each defined name from the active workbook to
      ' the target workbook ("Book2.xls" or "Book2.xlsm").
      ' "x.value" refers to the cell references the
      ' defined name points to.
      Workbooks("Book2.xls").Names.Add Name:=x.Name, _
         RefersTo:=x.Value
   Next x
End Sub
 
Laatst bewerkt:
U spreekt altijd van book1 in uw code staat book2
 
book1 is waar ik de bovenstaande VBA code in zet, als ik dat toepas op een leeg bestand book2 dan werkt het. Maar bron bestand(book1) moet renovatie zijn en doelbestand(book2) moet nieuwbouw zijn. Ik heb book1 toegevoegd zodat als je de vba/macro code in dat bestand uitvoer dat het bij book1 naar nieuwbouw wel werkt, maar vanuit renovatie naar nieuwbouw niet werkt. Dan krijg ik foutmeldingen, wat ik ook probeer, daarom hoop ik dat iemand beter in debuggen is met meer kennis dan ik en die mij van informatie kan voorzien waaraan het ligt.

edit:
dank jkpieterse, echter krijg ik de syntax 1004 foutmelding.
 
Laatst bewerkt:
Klopt, door het weghalen van bepaalde tabbladen komen die #verw, de originele hebben dat niet. Ik ga mij er bij neerleggen dit wordt een onmogelijk verhaal. Bedankt in ieder geval!
 
Volgens mij is de juiste syntax:
Code:
Workbooks("Renovatie.xlsm").Worksheets("Onderbouw").Range("B30").Name = "KNVBRENOVATIE_OnderbouwOpLocatieIndringingsNorm"
Misschien kan je daarmee verder?
 
Ik snap wat je bedoeld en het zou goed kunnen werken, echter gaat het in deze hulpvraag om één specifiek voorbeeld (B30 met de bijbehandere bereiknaam), maar in feiten gaat het om alle bereiknamen in de werkblad. Waarbij ik alle namen verander naar KNVBRENOVATIE_ ipv KNVBNIEUW_ en dat ik dan alles in één keer overzet om vervolgens een paar kleine aanpassingen te maken. De enige manier, aangezien dat idee niet werkt, is alles handmatig invoeren.
 
Zo iets?
Code:
Sub NamenWijzigen()
'KNVBRENOVATIE_ ipv KNVBNIEUW_
    Dim oNm As Name
    For Each oNm In ActiveWorkbook.Names
        If LCase(oNm.Name) Like LCase("KNVBNIEUW_*") Then
            oNm.Name = Replace(oNm.Name, "KNVBNIEUW_", "KNVBRENOVATIE_")
        End If
    Next
End Sub
 
Het wijzigen van de namen is mij gelukt met een soortgelijke VBA code, die ook te vinden is in de bijlage. Het veranderen lukt wel. Echter niet het (weer terug) overzetten naar hetzelfde werkblad om zodoende KNVBNIEUW_ + KNVBRENOVATIE bereiknamen met dezelfde ranges naast elkaar te hebben.

Zonder de bovenstaande VBA code te testen, kan het zijn dat de bereiknamen worden dupliceerd? Alles wat KNVBNIEUW_ is wordt KNVBNIEUW_ maar ook KNVBRENOVATIE_?
 
Kan je toch zien in Namen beheren? Download anders mijn Name Manager, dan zie je beter wat er gaande is que bereiknamen.
 
Ik had al via Name Manager gekeken wat er mogelijk aan de hand was, vandaar ik achter die _xlfn errors kwam(zie eerste bericht). Via Name Manager kon ik die niet eens verwijderen, ik kreeg enkele foutmeldingen.
Deze moest ik eerst zichtbaar maken voor Namen beheren met:

Code:
Sub ShowNames() 
 Dim nName As Name 
  For Each nName In ThisWorkbook.Names 
   nName.Visible = True 
  Next nName 
End Sub

Toen kon ik de _xlfn errors in Namen beheren wel verwijderen, (wel met de wetenschap dat de errors terug zouden komen bij het opnieuw opstarten van het werkblad) toen heb ik geprobeerd zonder het werkblad te sluiten de namen over te zetten, want in feiten had ik alleen die aangepaste namen nodig. Echter kreeg ik(zo uit mijn hoofd) niet de 1004 foutmelding meer, maar een 404 foutmelding. Iets met object niet gedefinieerd o.i.d.

Voor mij mag het duidelijk zijn dat er 'iets' mis is met mijn werkbladen maar wat? Geen idee eerlijk gezegd, vandaar ik mijn hulpvraag hier had neergelegd. Inmiddels heb ik een andere manier gevonden om mijn einddoel te bereiken. Toch bedankt voor het meedenken!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan