Avatar billede oyejo Nybegynder
23. september 2003 - 07:40 Der er 5 kommentarer og
1 løsning

VBA. Importere csv-fil. Array i løkke?

Har noen Csv-filer som jeg importerer ved hjlep av VBA.
Den ser slik ut nå:

Workbooks.OpenText Filename:=strTekstFil, _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, _
FieldInfo:=Array( Array(1, 5), Array(2, 1), ...

Det er opptil 60 kolonner i Csv-filen
Det kan være 1000 rader,
Både antall kollonner og rader varierer.

Spørsmål:
Kan jeg benytte en enkel løkke som først finner antall kolonner og rader og deretter importerer csv-fila til excel?

Og som samtidig merker området, slik at det kan kopieres?
Avatar billede tballe Nybegynder
23. september 2003 - 07:53 #1
Du behøver ikke at skrive noget som helst kode.
Der er en funktion i Excel som laver arbejdet.
Gå ind i menulinien "Data" og vælg "importer eksterne data" Dernæst vælges "importer data". Vælg i "filvælgerboxen vælg datatype" som datatype tekstfiler.
Så er det bare lige derudaf.

Hilsen tballe.
Avatar billede oyejo Nybegynder
23. september 2003 - 08:01 #2
tballe!
Jeg ønsker ikke å gjøre det manuelt lengre. Jeg importerer 200 filer hver mnd. Så det skal være en del av et større program som åpner mange filer automatisk i VBA, der dataene blir behandlet videre.
mvh oyejo
Avatar billede kabbak Professor
23. september 2003 - 08:27 #3
Workbooks.OpenText Filename:=strTekstFil, _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), _
        Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _
        Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
        16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), _
        Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array(28, 1), Array( _
        29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), Array(34, 1), Array(35, 1), _
        Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), Array(40, 1), Array(41, 1), Array( _
        42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array(46, 1), Array(47, 1), Array(48, 1), _
        Array(49, 1), Array(50, 1), Array(51, 1), Array(52, 1), Array(53, 1), Array(54, 1), Array( _
        55, 1), Array(56, 1), Array(57, 1), Array(58, 1), Array(59, 1), Array(60, 1))
End Sub
Avatar billede kabbak Professor
23. september 2003 - 08:28 #4
den er til 60 kolonner , men virker også ved mindre
Avatar billede oyejo Nybegynder
23. september 2003 - 08:46 #5
Kan jeg ikke sette disse Array uttrykkene inn i en løkke, slik at jeg slipper å skrive hele regla?
Jeg har skrevet det slik til nå.
Og hvordan kan jeg merket området etterpå?
Det skal kopieres og limes inn i et annet ark.
Avatar billede kabbak Professor
23. september 2003 - 09:31 #6
En Makro der henter alle i et bibliotek og flytter dem over ie et ark på en anden mappe, under hinanden.

Dim strFilNavn(300), Nr As Integer
mypath = "C:\data\" ' ret til din sti
If Right(mypath, 1) <> "\" Then mypath = mypath & "\"
Nr = 1
strFilNavn(Nr) = Dir(mypath & "*.csv")  ' Hent den første filnavn.
Do While strFilNavn(NO) <> ""  ' Start løkken
  If strFilNavn(NO) <> "." And strFilNavn(Nr) <> ".." Then
  Nr = Nr + 1
End If
strFilNavn(Nr) = Dir    ' Hent næste filnavn.
Loop
'Nr = Nr - 1

' henter alle filer i en løkke
For I = 1 To Nr
FilogSti = mypath & strFilNavn(I)
Workbooks.OpenText FileName:=FilogSti, _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), _
        Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _
        Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
        16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), _
        Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array(28, 1), Array( _
        29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), Array(34, 1), Array(35, 1), _
        Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), Array(40, 1), Array(41, 1), Array( _
        42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array(46, 1), Array(47, 1), Array(48, 1), _
        Array(49, 1), Array(50, 1), Array(51, 1), Array(52, 1), Array(53, 1), Array(54, 1), Array( _
        55, 1), Array(56, 1), Array(57, 1), Array(58, 1), Array(59, 1), Array(60, 1))
  ' filen er hentet, derefter kopieres den over i Datamappen og csvfilen lukkes
Range("A1").Select
Selection.Copy
    Windows("Datamappe.xls").Activate ' navnet på den mappe det skal sættes ind i
    Sheets("Ark3").Select            ' navnet på det ark, det skal sættes ind i
    Range("A65536").Select
    Selection.End(xlUp).Select
    ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
    Windows(strFilNavn(I)).Activate ' navnet på den mappe det dataerne er hentet fra
    ActiveWindow.Close
Next
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester