VBA vervolgen na openen bestand

Status
Niet open voor verdere reacties.

jan excel

Gebruiker
Lid geworden
4 mrt 2007
Berichten
437
Goede morgen alle,

Met Onderstaande code kan de gebruiker zelf een een file openen vanuit het Hoofmenu in de file ALLdata.xlsm
Dit is ook de bedoeling, echter is het ook mogelijk zodra een file geopend is dat ik deze VBA code kan vervolgen.


Private Sub CommandButton5_Click()
Application.Dialogs(1).Show "N:\overzichten"
end sub

Gebruiker heeft file geselecteerd en geopend.

Hierna:
Als gebruiker File heeft geopend dan VBA code vervolgen in de file ALLdata.xlsm


Hopelijk is mijn vraag stelling duidelijk genoeg om te kunnen beantwoorden.

Jan E
 
Plaats de code die dan moet worden uitgevoerd in de Workbook_Open() sectie van ALLdata.xlsm.
 
Code:
With activeworkbook
    ......vervolg code
End with
 
Hoi Edmoor en Rudi,

Bedankt voor jullie reactie.
De code die jullie geven werkt alleen als ik het bestand ALLdata.xlsm open, echter deze blijft open als de VBA code die aan CommandButton5 hangt wordt geactiveerd.

De bedoeling is nadat door onderstaande code een "windows open scherm" verschijnt en er een bestand wordt geselecteerd en geopend, dat de VBA code die aan CommandButton5 hangt wordt vervolgt .
Het bestand ALLdata.XLSM (waarin deze code staat) blijft gewoon open staan.

Code:
Private Sub CommandButton5_Click()
 Application.Dialogs(1).Show "N:\overzichten"

[QUOTE]Als de geselecteerde file is geopend dan code vervolgen ....[/QUOTE]
 
end sub

Is dit überhaupt mogelijk ???

Het doel is dat ik gegevens van het geopende bestand willen overzetten naar het bestand ALLdata.xlsm.
Hierbij moet ik opmerken dat de bestandsnaam niet altijd het zelfde is.


groet,
Jan E



Hopelijk begrijpen jullie wat ik bedoel.
 
Ik denk dat jij niet goed begrijpt wat ik bedoel.
Als je in het openen-scherm een bestand selecteert en opent wordt dit het actieve workbook.
Dus
Code:
With activeworkbook
    ....vervolg van je code
End with
met bovenstaande kan je gegevens uit dat geopende bestand halen en in je Alldata.xlsm plaatsen
Hiernaar refereer je dan als ThisWorkbook.
Het enige wat je steeds moet weten (en hard coderen) is op welk blad en welke range de gegevens staan die je nodig hebt uit je geselecteerde bestand.
Als dit niet duidelijk is raad ik je aan om je een basisboek VBA aan te schaffen en deze van begin naar eind door te spitten.
 
Hoi Rudi,

Kom er nog niet uit. Omschrijving hoe ik het zou willen.


Gebruikers vullen per dag een blanco file in met productie gegevens, deze worden per ploeg nummer met bestandsnaam "Data productie gegevens + ploegnummer + datum" opgeslagen.
Voorbeeld "Data productie gegevens ploeg 1 01 mei 2013"
Wij werken in 5 ploegen dus er zijn 3 ploeg nummers per dag opgeslagen.

De file "Alldata" heb ik voorzien van een hoofdmenu en via dit hoofdmenu wil ik alle productie gegevens inladen per ploeg en datum.

In de File "Data productie gegevens +ploegnummer + datum" staan in blad "data" in de rijen A2:H.. alle gegevens die naar file "Alldata" in blad "data" wordt gekopieerd.


Onderstaand deels met code willen jullie mij verder helpen kom er echt niet uit ??




'Onderstaande code voor een deel ingevuld echter niet werkend de tekst in de kleur blauw zijn opmerkingen en vragen om e.e.a. te verduidelijken.

Code:
Private Sub CommandButton5_Click()
Application.Dialogs(1).Show "N:\overzichten"  [COLOR="#0000FF"]'nu gewenste bestand openen.[/COLOR]
[COLOR="#0000FF"]'hier loop ik vast , hoe de gegevens van de geopende file naar de "Alldata" file in blad "Data" te kopieeren.[/COLOR]

With ActiveWorkbook[COLOR="#0000FF"][/COLOR][COLOR="#0000FF"] '????????????????[/COLOR]
[COLOR="#0000FF"]'??????????????????????????[/COLOR]

Sheets("data").Select [COLOR="#0000FF"] ' dus van de geopende file "Data productie gegevens met desbetreffende datum")[/COLOR]
Range("A2:H" & Range("A4555").End(xlUp).Row).Select[COLOR="#0000FF"] ' selectie wat te  kopiëren[/COLOR]
 Selection.Copy [COLOR="#0000FF"] 'kopie wordt gemaakt[/COLOR]
 
[COLOR="#0000FF"][/COLOR][COLOR="#0000FF"]'en deze dus kopiëren naar de file alldata in blad "data"
 'onderstaande code zorgt ervoor dat het gekopieerde van bovenstaande op de eerste lege regel in het blad "data" wordt gekopieerd.[/COLOR] 
 Lrow = Sheets("data").Cells(Rows.Count, "A").End(xlUp).Row + 1
    Sheets("data").Cells(Lrow, 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Range("A2").Select
ActiveWorkbook.Close SaveChanges:=False [COLOR="#0000FF"]'bestand "Alldata productie gegevens met betreffende datum  zonder opslaan afsluiten[/COLOR]
[COLOR="#0000FF"]'Bestand "Alldata open laten staan. [/COLOR]   

  End With

End Sub

Hopelijk kan iemand mij verder helpen, alvast bedankt.
 
Laatst bewerkt door een moderator:
Ik denk dat je meer aan een basisboek/cursus Excel/VBA hebt.
 
Hoi allen,

Nog een beetje aan het testen geweest, en wel al een stuk verder gekomen.

Heb twee files toegevoegd, dan kunnen jullie dit ook bekijken cq testen.
Vanuit het bestand urenoverzicht wordt via het menu de file test3.xlsm geopend,
Wat ik van jullie heb geleerd is dit nu de active workbook

Na het openen van deze workbook worden de gegevens juist geselecteerd en gekopieerd, middels een VBA code.

Vervolgens sluit ik het active workbook, zodat het bestand urenoverzicht open blijft staan, wat nu dus de active workbook is.
In dit bestand wordt in de Sheet "uren" ook netjes de laatste lege regel geselecteerd middels een VBA code, echter de gegevens die zijn gekopieerd in de test3.xlsm bestand wordt er niet geplakt.
Hierop loop de VBA code vast.

Is er iemand die mij hierin verder kan helpen hoe dit te realiseren.
Ik heb de bestanden toegevoegd zodat jullie het zelf ook kunnen testen.


Alvast bedankt.

Jan E
 

Bijlagen

Code:
Private Sub CommandButton5_Click()
Application.Dialogs(1).Show "c:\test"
With ActiveWorkbook
    Application.DisplayAlerts = False
        With .Sheets("Uren")
            .Visible = True
            .Range("A2:H" & .Range("A4555").End(xlUp).Row).Copy ThisWorkbook.Sheets("uren").Cells(Rows.Count, "A").End(xlUp).Offset(1)
        End With
        .Close
 End With
 Application.DisplayAlerts = True
End Sub
 
Hoi Rudi,

sorry voor late reactie, maar jou code werkt.

In de orginele bestanden die niet is gepost (ivm gevoelige informatie) waaruit de gegevens worden gehaald, wordt erbij het openen een userform getoont.

In de test file opent nu ook een userform.
Hoe krijg ik nu voor elkaar nadat de gegevens zijn gekopieerd naar urenoverzicht, dat de test bestand afsluit.


VBA unload me en activeworkbook.Close hierin al gebruik op diverse plekken in jou VBA code maar krijg het test bestand niet afgesloten i.c.m. userform.

bijlage toegevoegd om te testen.

alvast bedankt maar weer.

jan E
 

Bijlagen

Code:
Private Sub CommandButton5_Click()
With Application
    .EnableEvents = False
    .DisplayAlerts = False
    .Dialogs(1).Show "c:\test"
    With ActiveWorkbook
        .Sheets("Uren").Range("A2:H" & .Sheets("Uren").Range("A4555").End(xlUp).Row).Copy _
                ThisWorkbook.Sheets("uren").Cells(Rows.Count, "A").End(xlUp).Offset(1)
        .Close
    End With
    .DisplayAlerts = True
    .EnableEvents = True
End With
End Sub
 
Hoi Rudy,

Geweldig dat is het helemaal, duizend maal bedankt.
Zal de status op opgelost zetten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan