Annonceindlæg fra HP
16. september 2011 - 11:36
#4
Indlæsning af CSV-fil Public Sub indlæsCSV() With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\Users\peter\Desktop\CSV_Excel\order_export_20110915_123759 - Copy.csv" _ , Destination:=Range("$A$1")) '<--- justeres .Name = "order_export_20110915_123759 - Copy_1" '<--- justeres .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 65001 '<---- UNICODE UTF-8 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With End Sub Opbygning af template på basis af CSV-fil Dim csvArk As Object Const csvArkNavn = "indlæstCsv" '<--- evt. justeres Dim antalCsvRæk As Long Dim templArk As Worksheet Const skabelonArkNavn = "Skabelon" '<--- evt. justeres Dim hovedFelter As Variant, hovedKoordinater As Variant Const startRækkeDetail = 10 '<--- evt. justeres Const totalRække = 30 '<--- evt. justeres Public Sub udfyldSkabelon() Application.ScreenUpdating = False Rem clear detailrækker Range("A10:I30").Select Selection.ClearContents Range("B1").Select Rem Hent antal rækker på csv Set csvArk = ActiveWorkbook.Sheets(csvArkNavn) csvArk.Activate antalCsvRæk = ActiveCell.SpecialCells(xlLastCell).Row Set templArk = ActiveWorkbook.Sheets(skabelonArkNavn) templArk.Activate opbygHovedData opbygDetaildata Application.ScreenUpdating = True End Sub Private Sub opbygHovedData() Dim f As Byte hovedFelter = Array("Billing Name", "Customer Email", "Billing Phone Number", "Billing Zip", "Billing City") hovedKoordinater = Array("B1", "B2", "B3", "B6", "C6") For f = 0 To UBound(hovedFelter) With templArk .Range(hovedKoordinater(f)) = csvArk.Cells(2, findKolonne(hovedFelter(f))) End With Next f End Sub Private Sub opbygDetaildata() Dim startRæk As Long, totalRæk As Long, total As Double Dim ræk As Byte, detailRæk As Byte Dim dkBeløb As String Const DKKiDENT = "DKK" Const momsProcent = "25%" total = 0 detailRæk = startRækkeDetail For ræk = 2 To antalCsvRæk With templArk .Range("A" & detailRæk) = csvArk.Cells(ræk, findKolonne("Item Name")) dkBeløb = csvArk.Cells(ræk, findKolonne("Item Price")) dkBeløb = Replace(dkBeløb, DKKiDENT, "") .Range("C" & detailRæk) = Trim(dkBeløb) .Range("D" & detailRæk) = csvArk.Cells(ræk, findKolonne("Item Qty Ordered")) .Range("E" & detailRæk) = Range("C" & detailRæk) * Range("D" & detailRæk) dkBeløb = csvArk.Cells(ræk, findKolonne("Item Tax")) dkBeløb = Replace(dkBeløb, DKKiDENT, "") .Range("F" & detailRæk) = Trim(dkBeløb) .Range("G" & detailRæk) = momsProcent dkBeløb = csvArk.Cells(ræk, findKolonne("Item Discount")) dkBeløb = Replace(dkBeløb, DKKiDENT, "") .Range("H" & detailRæk) = Trim(dkBeløb) dkBeløb = csvArk.Cells(ræk, findKolonne("Item Total")) dkBeløb = Replace(dkBeløb, DKKiDENT, "") .Range("I" & detailRæk) = Trim(dkBeløb) total = total + .Range("I" & detailRæk) End With detailRæk = detailRæk + 1 Next ræk Range("I" & totalRække) = total End Sub Private Function findKolonne(søgeOrd) With ActiveWorkbook.Sheets(csvArkNavn).Range("A1:IV1") Set c = .Find(søgeOrd, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then findKolonne = c.Column Else findKolonne = 0 End If End With End Function