Sub Maak_import_csv()
'selecteer huidige excel als actieve file
Dim wbkCurrent As Workbook
Set wbkCurrent = ActiveWorkbook
'tel aantal tabbladen
aantaltabs = Application.Sheets.Count
'selecteer alle tabbladen behalve de eerste, zet kolom F om naar tekst met Tekst naar Kolommen, check of klom F data bevat
For ordersheet = 1 To aantaltabs
Worksheets(ordersheet).Select
If WorksheetFunction.CountA(Range("F:F")) = 0 Then
Worksheets(ordersheet + 1).Select
Else
Worksheets(ordersheet).Select
Columns("F:F").Select
Selection.TextToColumns Destination:=Range("F1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 2), TrailingMinusNumbers:=True
End If
Next ordersheet
'kopieer data uit tabbladen naar Order 1 tabblad
Dim ar, sh As Variant, i As Long, dict As Object
Set dict = CreateObject("scripting.dictionary")
For Each sh In wbkCurrent.Sheets
If sh.Index > 1 Then
ar = sh.Range("A1:Q" & sh.Range("F" & Rows.Count).End(xlUp).Row)
For i = 2 To UBound(ar)
If Len(ar(i, 6)) Then dict(dict.Count) = Array(ar(i, 6), ar(i, 15), ar(i, 16), ar(i, 17))
Next
End If
Next
With Sheets.Add(, Sheets(Sheets.Count))
.Name = "Order1"
.Cells.NumberFormat = "@"
.Cells(1, 1).Resize(dict.Count, 4) = Application.Index(dict.items, 0, 0)
End With
'voeg tabbladen Orde 2 en order 3 toe en kopieer data
Sheets.Add(after:=Sheets(Sheets.Count)).Name = "Order2"
Sheets("Order2").Select
Cells.Select
Selection.NumberFormat = "@"
Sheets.Add(after:=Sheets(Sheets.Count)).Name = "Order3"
Sheets("Order3").Select
Cells.Select
Selection.NumberFormat = "@"
Sheets("Order1").Select
Rows("1").EntireRow.Delete
Columns("A:D").Select
Selection.Copy
Sheets("Order2").Select
Range("a1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("B").EntireColumn.Delete
Columns("C").EntireColumn.Delete
Columns(2).SpecialCells(4).EntireRow.Delete
Sheets("Order1").Select
Columns("A:D").Select
Selection.Copy
Sheets("order3").Select
Range("a1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("B").EntireColumn.Delete
Columns("B").EntireColumn.Delete
Columns(2).SpecialCells(4).EntireRow.Delete
Sheets("Order1").Select
Columns("C:D").EntireColumn.Delete
Columns(2).SpecialCells(4).EntireRow.Delete
Application.ScreenUpdating = False
'geef hieronder aan uit welke cel de klant en orderomschrijving moeten worden gehaald, uit tabblad 1!
Klant = Worksheets(1).Range("D5")
Orderdesc = Worksheets(1).Range("D3")
Folder = GetFolder 'kies of folder gekozen moet worden
'Folder = "F:....." 'geef hier evt standaard locatie aan
For Each ws In Sheets(Array("Order1", "Order2", "Order3"))
ws.Copy
With ActiveWorkbook
No_Of_Rows = ActiveSheet.UsedRange.Rows.Count
.SaveAs Folder & "\" & Klant & "_" & Orderdesc & "_" & ActiveSheet.Name & "_" & Format(Now(), "DD-MMM-YYYY") & "_" & No_Of_Rows & "_regels.csv", xlCSV, Local:=True
.Close False
End With
Next ws
'verwijder de tijdelijk aangemaakte hulpkolommen
Application.DisplayAlerts = False
Sheets(Array("Order1", "Order2", "order3")).Select
Sheets("order3").Activate
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
End Sub
Function GetFolder() As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Selecteer een Folder"
.AllowMultiSelect = False
.InitialFileName = Application.DefaultFilePath
If .Show = -1 Then sItem = .SelectedItems(1)
End With
GetFolder = sItem
Set fldr = Nothing
End Function