PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerVBAVBASkriva data från txt-fil till ExcelarkSkriva data från txt-fil till Excelark
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2023-08-10 10:00
 
 Ändrad av Haglund  på 2023-08-10 09:40:32

 Jag har en txt-fil som ser ut enl. följande.

1,9,2

2,4

3,6,2

4,8

5,1,2

6,1

Första siffran i början av varje rad representerar radnumret, medan de efterföljande siffrorna är data.

Nu vill jag skriva in siffrorna i ett Excel ark ,där första datasifran på rad ett hamnar i cell (10,3) andra datasiffran på rad ett i Cell(12,3).

Datasiffran på rad två ska till Cell(10,5)

Datasiffrorna på rad 3 ska till Cell(10,7) resp. Cell(12,7)

På rad 4 ska Datasiffran till Cell(10,9)

Datasiffrorna på rad 5 ska till Cell(10,11) resp. Cell(12,11)

Och slutligen ska Datasiffran på rad 6 till Cell(10,13)

Resultatet ska bli enl. följande.

Nu undrar jag om någon har en kod som kan göra jobbet?

Tacksam för svar.

//Folke

 

Nytt inlägg
 2023-08-26 10:07
 

Hej Folke,

Här kommer koden som gör jobbet åt dig.

Public Sub ImportCSV()

    Dim rawData As String, lineArr As Variant, cellArr As Variant, arr As Variant

    Dim ubR As Long, ubC As Long, r As Long, c As Long

    Dim writeRow As Long, writeCol As Long, i As Long, j As Long

 

    Open ActiveWorkbook.Path & "\" & "Data.csv" For Binary As #1

    rawData = Space$(LOF(1))

    Get #1, , rawData

    Close #1

 

    If Len(rawData) > 0 Then

 

        'If spaces are delimiters for lines change vbCrLf to " "

        lineArr = Split(Trim$(rawData), vbCrLf)

 

        ubR = UBound(lineArr) + 1

        ubC = UBound(Split(lineArr(0), ",")) + 1 ' use "," as column separator

        ReDim arr(1 To ubR, 1 To ubC)

 

        For r = 1 To ubR

            If Len(lineArr(r - 1)) > 0 Then

                cellArr = Split(lineArr(r - 1), ",")

                For c = 1 To UBound(cellArr) + 1

                    arr(r, c) = cellArr(c - 1)

                Next

            End If

        Next

       

        'Write array values to ActiveSheet

       

        writeCol = 3 'start writing in column C

       

        For i = 1 To UBound(arr, 1)

            writeRow = 10 'start writing in row 10

                For j = 2 To UBound(arr, 2)

                    If Len(arr(i, j)) > 0 Then

                        ActiveSheet.Cells(writeRow, writeCol) = arr(i, j)

                    End If

                    writeRow = writeRow + 2

                Next

            writeCol = writeCol + 2

        Next

    End If

End Sub

 

 

Nytt inlägg
 2023-09-02 11:43
 

 Tack Gondi,

Fungerar jättebra.

//Folke

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBASkriva data från txt-fil till ExcelarkSkriva data från txt-fil till Excelark

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter