Avatar billede prar Nybegynder
25. april 2006 - 08:38 Der er 7 kommentarer

Import af textfil

Kan nogen omskrive denne optagede macro, så jeg selv kan vælge filnavnet fra gang til gang.
Den faste del af stien hedder altid: v:\data\abt2xal\, og filnavnet varierer så fra uge til uge.

Jeg har forsøgt med forskellige mforslag her fra forum, men får en fejl 1004 vedr. array.
De forskellige værdier skal altid improteres så de er formatteret som tekst.

Her er den indspillede macro

ActiveWorkbook.RunAutoMacros xlAutoOpen

With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;V:\Data\ABT2XAL\AccTrans.txt", Destination:=Range("A1"))
        .Name = "AccTrans"

        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlWindows
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
        .Refresh BackgroundQuery:=False
    End With
Avatar billede x-lars Novice
25. april 2006 - 09:23 #1
Et bud (ikke testet):

ActiveWorkbook.RunAutoMacros xlAutoOpen
 
filnavn = InputBox("Hvilket firma køres nu?:", "Firma", "AccTrans")

  With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;V:\Data\ABT2XAL\" & filnavn & ".txt", Destination:=Range("A1"))
        .Name = "AccTrans"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlWindows
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
        .Refresh BackgroundQuery:=False
    End With
Set filnavn = nothing
Avatar billede x-lars Novice
25. april 2006 - 09:25 #2
Kan være, at .name - statementet også skal ændres til = filnavn. Det kan jeg ikke gennemskue.
Avatar billede excelent Ekspert
25. april 2006 - 09:31 #3
' hvis du Skriver sti og filnavn i A1 sådan >> "TEXT;V:\Data\ABT2XAL\AccTrans.txt"
' så kan du ændre i A1 og bestemme hvilken fil der skal åbnes

ActiveWorkbook.RunAutoMacros xlAutoOpen
Dim name
name = [a1].Value

With ActiveSheet.QueryTables.Add(Connection:=name, Destination:=Range("A1"))
        .name = "AccTrans"

        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlWindows
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
        .Refresh BackgroundQuery:=False
    End With
Avatar billede bak Forsker
25. april 2006 - 09:33 #4
Hvorfor laver du en ny query hver gang ?
Hvis opsætningen af tekstfilen er ens fra gang til gang og det kun er navnet der er forskelligt, så optag bare en makro hvor du laver en refresh (højreklik i tabellen og vælg at genopfriske den)
Standard står den til at spørge om filnavnet ved refresh og det kan man så ændre...ellers kan man højreklikke og under datarange properties sætte den til at spørge om filnavn ved opdatring.
Avatar billede prar Nybegynder
26. april 2006 - 10:02 #5
X-Lars, smid lige et svar så får du point.
.name skulle også ændres til filnavn.

Takker også de øvrige for deres deltagelse.
Avatar billede x-lars Novice
26. april 2006 - 10:08 #6
Kommer her! Godt, at det virkede! ;-D
Avatar billede x-lars Novice
15. august 2007 - 11:28 #7
Lukketid?
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