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

Worksheet tabbladen exporteren in file op locatie

Status
Niet open voor verdere reacties.

Dappre

Gebruiker
Lid geworden
28 mei 2017
Berichten
102
Beste forumleden,

Is het mogelijk middels de macro van HSV waarin data naar een specifieke tab wordt gekoperd mits die voldoet aan de voorwaarde 'HRM' 'PO' of 'Overig'.
Nu wil ik een vervolgslag maken en dat is dat de afzonderlijke tabbladen automatisch geexporteerd worden naar een specifieke maplocatie met dezelfde naam die in de voorwaarde is opgenomen.
Is hier een mogelijkheid voor?

Zo niet, wat zijn de alternatieve?

Alvast bedankt.Bekijk bijlage Dappre01_tab_file_copy.xlsb
 
Waarom ik wordt aangehaald ivm met je code ontgaat me @Dappre.

Bij deze code moeten alle bestanden aanwezig zijn in een map met dezelfde naam.
De mappen dienen in dezelfde directory te zitten als dit bestand (thisworkbook.path).

Ps: voeg een kopregel toe.
Code:
Sub hsv()
Dim sn, d As Object, i As Long, ii As Long
Application.ScreenUpdating = False
With Sheets("hoofdbestand").Cells(1).CurrentRegion
sn = .Resize(, 23)
Set d = CreateObject("scripting.dictionary")
    For i = 2 To UBound(sn)
      d.Item(sn(i, 17)) = ""
    Next i
    For ii = 0 To d.Count - 1
      .AutoFilter 17, d.keys()(ii)
      .Copy Workbooks.Open(ThisWorkbook.Path & "\" & d.keys()(ii) & "\" & d.keys()(ii) & ".xlsx").Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1)
       Workbooks(d.keys()(ii) & ".xlsx").Close -1
      .AutoFilter
    Next ii
  End With
End Sub
 
Laatst bewerkt:
Sorry HSV, ik dacht dat je me eerder had geholpen aan deze macro. Dus in mijn voorbeeld zou ik een map HRM moeten aanmaken en vervolgens een leeg xlsx bestand verwijzen in de aangeleverde code?
 
Dat is juist, met een .xlsx met dezelfde naam.

Als de mappen toch aanwezig zijn opdat het vaste gegevens zijn, dan net zo goed in een array.
Code:
Sub hsv()
Dim sn, loc
Application.ScreenUpdating = False
With Sheets("hoofdbestand").Cells(1).CurrentRegion
sn = .Resize(, 23)
  For Each loc In Array("HRM", "PO", "Overig", "IT", "Finance")
      .AutoFilter 17, dloc
      .Copy Workbooks.Open(ThisWorkbook.Path & "\" & loc & "\" & loc & ".xlsx").Sheets(1).Cells(1)
       Workbooks(loc & ".xlsx").Close -1
      .AutoFilter
    Next loc
  End With
End Sub
 
Beste,

Bovenstaande code doet zijn werk.
Echter pakt hij niet het juiste tabblad om te kopiëren maar het eerste totaaloverzicht. Tabblad hoofdbestand dus. Ik wil graag de overige tabbladen juist per tabblad kopiëren naar de losse xls files. Hoe kan ik dit middels een simpele aanpassing doen?

Bedankt
 
Ik heb geen idee wat je bedoelt.

Zoiets?
Code:
.Copy Workbooks.Open(ThisWorkbook.Path & "\" & loc & "\" & loc & ".xlsx").Sheets([COLOR=#ff0000]loc[/COLOR]).Cells(1)
 
Heel simpel eigenlijk. Tabblad 2 met naam test1 naar xls bestand met naam test1. Ipv hoofdbestand naar test1.xls.

Hoofdbestand bestaat namelijk uit meerdere tabbladen.
 
In die lege bladen moet gefilterd worden?
 
Toch maar een poging.

Er van uitgaande dat er een map bestaat met de naam van de tabbladen met daarin een bestand met de naam van de tabbladen met daarin een blad met de naam van de tabbladen.
Code:
Sub hsv()
Dim sh As Worksheet
Application.ScreenUpdating = False
  For Each sh In ThisWorkbook.Sheets
    If LCase(sh.Name) <> "hoofdbestand" Then
      sh.UsedRange.Copy Workbooks.Open(ThisWorkbook.Path & "\" & sh.Name & "\" & sh.Name & ".xlsx").Sheets(sh.Name).Cells(1)
       Workbooks(sh.Name & ".xlsx").Close -1
    End If
    Next sh
End Sub
 
Ik gebruik nu de code uit #4 incl. de toevoeging Workbook open.
Echter krijg ik nu een melding dat het subscript buiten het bereik valt.

Vervolgens kopiert hij wederom alleen de eerste sheet, dus het hoofdbestand tabblad richting alle bestanden.
 
Iemand toevallig nog een juiste oplossing hiervoor? Of kan ik iets beter verwoorden?

Als je het voorbeeldbestand pakt, en het tabblad 'Hoofdbestand' opent.
Vervolgens de macrobutton 'Verdeel' toepast. Dan komt de data onder kolom Q in het tabblad waaraan die is gerefereerd.
Wat ik nu graag wil is dat die data (die al verdeeld is) per tabblad wordt geexporteerd naar een .xls bestand in een map.

Ik heb geen idee hoe ik dit nog duidelijker kan verwoorden? Iemand?

Wat er momenteel met de code van HSV gebeurd is dat het 'Hoofdbestand' met inhoud wordt gekopieerd naar alle afzonderlijke bestanden.
Dus ik zou graag zien vanuit hoofdbestand na verdeel HRM, dat HRM tabblad met inhoud wordt gekopieerd naar een map waarin het bestand hrm.xls staat opgeslagen.
 
Laatst bewerkt:
Ik heb nog geen reactie vernomen over de code van #9.
 
Beste HSV,

Vandaag heb ik code #9 getest.
Wat er gebeurd is dat hij juist de gegevens uit het hoofdbestand exporteert richting alle losstaande .xlsx bestanden.
Dus wat er eigelijk moet gebeuren is de juiste filter uit dit tabblad richting de bestanden.
 
Wat zijn we hier aan het doen ? Besparen op het automatiseringsbudget ?
Ik krijg niet de indruk dat de TS enige poot uitsteekt of ook maar iets opsteekt van alle suggesties.
 
Wederom een voorbeeld:

Dus de data die uit het gegenerende hoofdblad is verdeeld richting TAB 2,3,4 met formules kopieren richting losstaande Excel bestanden met exacte naamgeving zoals tabbladen.
Dus in in dit geval TAB2.xls, TAB3.xls, TAB4.xls.
 

Bijlagen

  • Example_verdeel.JPG
    Example_verdeel.JPG
    57,8 KB · Weergaven: 55
Volgens mij heb je nog niets getest.
Zeker #9 niet.
 
Ja dat heb ik wel. Zoals ik al aangaf. Hoofdblad word geëxporteerd en niet TAB2, TAB3 etc.
 
Hoe kom je er bij?
 
Lijkt mij onmogelijk....
Code:
If LCase(sh.Name) <> "hoofdbestand" Then

Waarom je eerst de gegevens gaat kopiëren naar losse tabjes en dan van deze losse tabjes weer losse bestandjes wilt maken ontgaat mij. Wees ook consequent in de naamgeving van het geheel. De ene keer heb je het over 'Hoofdbestand' dan weer over 'Hoofd TAB" een .xlsx is iets anders dan een .xls.

De code uit #9 werkt hier prima.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan