• 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.

Macro aanpassing, verwijzing Blad1 kan ook bijv. Blad2 zijn

Status
Niet open voor verdere reacties.

mieppie1984

Gebruiker
Lid geworden
31 jan 2008
Berichten
31
Goedemiddag,

ooit eens geholpen door jullie met deze macro, werkt echt top!:thumb:
echter het programma is verder ontwikkeld, waardoor het tabblad van de bestanden die we willen invoeren met deze macro: "Blad1" of "Invoer export" kunnen heten.
bestanden gemaakt in de oude versie hebben het tabblad: "Blad1"
bestanden gemaakt in de nieuwe versie hebben het tabblad: "Invoer export"

In het bronbestand komen de gegevens uiteindelijk in het tabblad "invoer"

Om zowel de oude als nieuwe bestanden in het programma (bronbestand) te kunnen blijven gebruiken heb ik een aanpassing in de macro nodig.
Echter ik dacht iets te kunnen met if en else, maar mijn kennis in vba reikt nog niet zover dat me dat lukt.
onderstaand de huidige code, in het origineel is hij nog langer met knip en plak acties. dit werkt uitstekend op de tekst "blad1" na.
Het stukje met NAW gegevens staat tijdelijk inactief in de macro, mogelijk willen we dit nog gebruiken.

bedankt weer voor de aanvulling!
is er meer info over, dan hoor ik dat graag.

groetjes,
Miranda


Code:
Sub Import_gegevens()
'
' Import gegevens in invoerblad
' '
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

    Dim fd As FileDialog
    Dim vrtSelectedItem As Variant
    Dim sBestandsnaam As String
    Dim sBronbestand As String
    
    sBronbestand = ActiveWorkbook.Name

    'Create a FileDialog object as a File Picker dialog box.
    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    'Use a With...End With block to reference the FileDialog object.
    With fd
        If .Show = -1 Then
            'Step through each string in the FileDialogSelectedItems collection.
            For Each vrtSelectedItem In .SelectedItems
                sBestandsnaam = vrtSelectedItem
            Next vrtSelectedItem
        'The user pressed Cancel.
        Else
        End If
    End With

    'Set the object variable to Nothing.
    Set fd = Nothing

'Open gekozen bestand.
    Workbooks.Open Filename:=sBestandsnaam
   

 'selecteer NAW gegevens
   'Sheets("Blad1").Range("A1:E8").Copy
   'Plak NAW gegevens.
    'Workbooks(sBronbestand).Sheets("Invoer").Range("F2").PasteSpecial Paste:=xlPasteAll


    'Selecteer blauw Kop.
    Sheets("Blad1").Range("A13:A1008").Copy
    'Plak de gegevens.
    Workbooks(sBronbestand).Sheets("Invoer").Range("D12").PasteSpecial Paste:=xlPasteAll
    
    'Selecteer blauw Cat.
    Sheets("Blad1").Range("B13:B1008").Copy
    'Plak de gegevens.
    Workbooks(sBronbestand).Sheets("Invoer").Range("F12").PasteSpecial Paste:=xlPasteAll
     
     'Selecteer blauw F.
    Sheets("Blad1").Range("C13:C1008").Copy
    'Plak de gegevens.
    Workbooks(sBronbestand).Sheets("Invoer").Range("H12").PasteSpecial Paste:=xlPasteAll
    
    'Selecteer blauw Prod.
    Sheets("Blad1").Range("D13:D1008").Copy
    'Plak de gegevens.
    Workbooks(sBronbestand).Sheets("Invoer").Range("J12").PasteSpecial Paste:=xlPasteAll
    
       
   'Zet de copy mode uit.
    Application.CutCopyMode = False
  'Sluit geselecteerd bestand.
    Workbooks(Right(sBestandsnaam, Len(sBestandsnaam) - InStrRev(sBestandsnaam, "\"))).Close SaveChanges:=False
    'Opruimen dialoog object
    Set fd = Nothing
        Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 
Miranda,

Een aantal mogelijkheden:
- Maak alle bestanden gelijk en noem het Sheet of "Blad1" of "Invoer export". Houd dit altijd goed in de hand, anders is er
altijd wel weer iemand die "Invoer export" een vreemde naam vind en daar "Uitvoer export van maakt.
- Alle tabbladen hebben behalve een naam ook een nummer. Waarschijnlijk zijn alle Sheets(1) of "Blad1" of "Invoer export".
maar dat moet je controleren.
- Zoek met on error (foutafhandeling) of de naam "Blad1" bestaat, zo wel wijs deze toe aan een variabele en gebruik
deze in de aanroep b.v. variabele
Code:
Function WorksheetExists(ByVal WorksheetName As String) As Boolean
Dim Sht As Worksheet

For Each Sht In ThisWorkbook.Worksheets
    If Application.Proper(Sht.Name) = Application.Proper(WorksheetName) Then
        WorksheetExists = True
        Exit Function
    End If
Next Sht
WorksheetExists = False
End Function

Deze roep je aan met
Code:
 If WorksheetExists("Blad1") Then
    MijnTabblad = "Blad1"
Else
    MijnTabblad = "Invoer export"
End If

Veel Succes
 
Laatst bewerkt:
Gebruik de codenaam (in VB-Editor zie naam NIET tussen haakjes) v/d werkbladen indien het hetzelfde werkblad is in de beide bestanden
 
bedankt voor jullie reactie,

alle bestanden gelijk houden gaat niet meer lukken.

ik heb het idee dat niet helemaal duidelijk is wat het programma doet, of ik begrijp jullie antwoord niet 

Hier begon het mee:
http://www.helpmij.nl/forum/showthre...dere-bestanden

Het is een rekenprogramma waar we enkel de variabelen (uniek per project) uit filteren en opslaan in een apart (klein) bestand.
Het kan zijn dat dit project na een tijd herzien wordt, om niet alles opnieuw handmatig in te hoeven voeren, importeren we met deze macro het aparte bestandje (kopieren en plakken de juiste gegevens weer terug in de juiste kolommen) dan rekent het programma weer met de nieuwste gegevens en kunnen we aanpassen waar nodig.


In de oude versie werd dit aparte bestandje gewoon opgeslagen zonder een naam aan het tabblad toe te wijzen, dus standaard met "blad1".
De export macro voegde een tabblad toe in het programma zelf, nummerde deze door.
Echter als dit bestand werd aangemaakt met deze "export macro" en je sloot excel daarna niet af, liep hij bij de volgende x uitvoeren van de macro vast op het plakken naar blad 1, want dan werd blad 2 aangemaakt...
Daarom dit tabblad een naam gegeven (invoer export) en deze na het uitvoeren ook weer laten verwijderen. Zodat de macro daarna ook gewoon weer werkt, zonder excel te sluiten.

Alle kopieer en plak acties zijn net als de import macro gekoppeld aan deze bladnaam.

Nu hebben we al vele honderden projecten met het tabblad "blad1" waarvan het noodzakelijk is deze ook in de nieuwste versie van het rekenprogramma te kunnen gebruiken.
daarom dacht ik aan het aanpassen van deze macro met beide tabblad namen.
Maar hoe?

Sorry voor mijn ontbrekende kennis:
Waar plaats ik jullie code in mijn macro?

gr. Miranda
 
Je link werkt niet dus kunnen we daar ook niet gaan kijken.
Als het betreffende werkblad als 1ste blad in de rij staat kan je ook Sheets(1) gebruiken en heeft de naam zo geen belang.
 
Warme Bakkertje,
Jouw antwoord is de oplossing!!
Echt super bedankt!:thumb:

gr. Miranda
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan