Hallo VBA Experts,
Onderstaand VBA code opent een windows scherm waarbij een bestand kan worden geselecteerd en geladen. De code kopieert uit het geselecteerde bestand in een werkblad de data en plakt deze gegevens naar een zg. verzamel (hierin staat dus deze VBA code)
Echter in het tweede deel dient uit dezelfde file de gegevens uit een andere werkblad te worden gekopieerd naar de verzamel file, ik krijg het niet voor elkaar om dit alles in één keer te doen zonder dat de betreffende file opnieuw dient te worden ingeladen. (Dus op nieuw selecteren via het windows scherm).
Zie de opmerking in de VBA code tussen deze tekens >>>>>>>>>>>>> <<<<<<<<<<<<<<<<< daaronder begint de code opnieuw met het openen van het windows scherm om een file te kunnen selecteren, wat dus eigenlijk niet nodig is omdat ik dezelfde file weer dient te openen/laden als in het begin. Het moet alleen de data uit een ander werkblad kopieren en in een ander werkblad van de verzamel te plakken.
Hopelijk begrijpen jullie aan de hand van onderstaande code wat ik bedoel en jullie mij kunnen helpen.
Verwacht dat de VBA-code ook te lang is dus verbeter voorstellen zijn ook welkom.
groet,
Jan E
Onderstaand VBA code opent een windows scherm waarbij een bestand kan worden geselecteerd en geladen. De code kopieert uit het geselecteerde bestand in een werkblad de data en plakt deze gegevens naar een zg. verzamel (hierin staat dus deze VBA code)
Echter in het tweede deel dient uit dezelfde file de gegevens uit een andere werkblad te worden gekopieerd naar de verzamel file, ik krijg het niet voor elkaar om dit alles in één keer te doen zonder dat de betreffende file opnieuw dient te worden ingeladen. (Dus op nieuw selecteren via het windows scherm).
Zie de opmerking in de VBA code tussen deze tekens >>>>>>>>>>>>> <<<<<<<<<<<<<<<<< daaronder begint de code opnieuw met het openen van het windows scherm om een file te kunnen selecteren, wat dus eigenlijk niet nodig is omdat ik dezelfde file weer dient te openen/laden als in het begin. Het moet alleen de data uit een ander werkblad kopieren en in een ander werkblad van de verzamel te plakken.
Hopelijk begrijpen jullie aan de hand van onderstaande code wat ik bedoel en jullie mij kunnen helpen.
Verwacht dat de VBA-code ook te lang is dus verbeter voorstellen zijn ook welkom.
Code:
Private Sub CommandButton5_Click()
Application.ScreenUpdating = False
Sheets("menu").Select
CommandButton5.BackStyle = fmBackStyleOpaque
CommandButton5.BackColor = &HFF&
Application.ScreenUpdating = False
Sheets("activiteitsuren").Visible = True
Sheets("activiteitsuren").Select
Sheets("activiteitsuren").Visible = False
Sheets("menu").Select
Application.ScreenUpdating = False
With Application
.EnableEvents = False
.DisplayAlerts = False
.Dialogs(1).Show "E:\data\uren\magzaijn1\"
With ActiveWorkbook
Application.DisplayAlerts = False
Sheets("Uren_Magazijn").Visible = True
Sheets("Uren_Magazijn").Select
Range("A2:L" & Range("A4555").End(xlUp).Row).Select
Selection.Copy
Sheets("Uren_Magazijn").Visible = False
ThisWorkbook.Activate
Sheets("Uren").Visible = True
Sheets("Uren").Select
Lrow = Sheets("uren").Cells(Rows.Count, "A").End(xlUp).Row + 1
Sheets("uren").Cells(Lrow, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'onderstaande toegevoegd om te switchens van wel/niet lege cellen anders wordt nieuwe gegevens niet zichtbaar
Sheets("uren").Select
ActiveWorkbook.Worksheets("uren").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("uren").AutoFilter.Sort.SortFields.Add Key:=Range( _
"A1"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("uren").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveSheet.Range("$A$1:$R$5000").AutoFilter Field:=1, Criteria1:="<>"
'onderstaand toegevoegd om te sorteren van nieuw naar oud
ActiveWorkbook.Worksheets("uren").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("uren").AutoFilter.Sort.SortFields.Add Key:=Range( _
"A1:A5000"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("uren").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Range("A5").Select
Sheets("Uren").Visible = False
Sheets("uren per order_machine").Visible = False
Sheets("menu").Select
.Close
End With
.DisplayAlerts = True
.EnableEvents = True
End With
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'onderstaand VBA code haalt activiteitsuren binnen echter het zelfde bestand moet hiervoor opnieuw worden geopend,
'graag zou ik dat de code gewoon doorloopt met het zelfde resultaat en op het eind dit bestand afsluit zo als het nu ook doet.
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
With Application
.EnableEvents = False
.DisplayAlerts = False
.Dialogs(1).Show "E:\data\uren\magzaijn1\"
With ActiveWorkbook
Application.DisplayAlerts = False
Sheets("activiteitsuren").Visible = True
Sheets("activiteitsuren").Select
Range("A2:P" & Range("A4555").End(xlUp).Row).Select
Selection.Copy
Sheets("activiteitsuren").Visible = False
ThisWorkbook.Activate
Sheets("activiteitsuren").Visible = True
Sheets("activiteitsuren").Select
Sheets("menu").Select
Sheets("activiteitsuren").Select
Lrow = Sheets("activiteitsuren").Cells(Rows.Count, "A").End(xlUp).Row + 1
Sheets("activiteitsuren").Cells(Lrow, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A5").Select
Sheets("activiteitsuren").Visible = False
Sheets("Activiteiten_overzicht").Visible = False
.Close
End With
.DisplayAlerts = True
.EnableEvents = True
End With
CommandButton5.BackStyle = fmBackStyleOpaque
CommandButton5.BackColor = &H8000000F
Application.ScreenUpdating = True
End Sub
groet,
Jan E
Laatst bewerkt door een moderator: