Hejsan Det man ser direkt är att du har lagt in "fPath" i strängen. Det rätta skulle isf vara: Hej och tack för svaret. Kommentera ut din Connection, etc. och skriv så här: Om jag kommenterar ut Connectionraden och ersätter den med Range("A1")=fPath Alltså... Det jag menar är att du vill se vad som står i fPath. Ok, det står E:\Excel\Beståndsfil\bestånd.txt. Nej, det är inte felet. Den första: E:\Excel\Beståndsfil\bestånd.txt. Det vi vill är att vi ska få strängen i den connection du har att bli exakt samma som den du skriver in manuellt, då ska det fungera. Att det är så klart när man får det förklarat för sig.Problem med infogande av textfil till excel
Jag försöker infoga en semikolonseparerad fil till excel. Jag har gjort ett makro där jag importerar en fil. Nu vill jag kunna göra så att man med en dialogruta kan välja vilken fil som ska importeras.
Detta är vad jag har:
<Code>
Private Sub openB_Click()
Dim pattern As String
Dim fPath As String
pattern = "Text (*.txt)|*.txt"
CommonDialog1.Filter = pattern
CommonDialog1.ShowOpen
fPath = (CommonDialog1.Filename)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;(fPath)", Destination:=Range("A1"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 1
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 3
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 2, 1, 1, 2, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh
End With
End Sub
</Code>
De felmeddelande som dyker upp är:
"Körfel '1004' Program-eller objektdefinierat fel"
"Det går inte att hitta textfilen för att uppdatera detta externa område."
"Kontrollera att filen inte flyttats eler bytt namn och försök att uppdatera på nytt"
Kan någon var vänlig och berätta vad jag gör fel.
Tacksam för svar.Sv: Problem med infogande av textfil till excel
<code>
...
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;(" & fPath& ")", Destination:=Range("A1"))
...
</code>
Sen verkar det vara ganska mycket kod, en del kanske är överflödig?
Blir mycket lättare att felsöka med mindre kod.Sv:Problem med infogande av textfil till excel
Jag får dock i princip samma fel som tidigare.
"Körfel nr '1004'
Det gick inte att komma åt filenförsök med något av följande:
Kontrollera att mappen finns
Kontrollera att mappen som innehåller filen inte är skrivskyddad
Kontrollera att filnamn och sökväg inte innehåller mer än 128 tecken"
Mappen finns och är inte skrivskyddad och sökvägen är inte mer än 128 tecken.
Tillägg: Har nu provat med bara makrot och en knapp på excelarket och det fungerar. Då ser det ut som nedan. Problemet uppstår alltså när man ska använda en Common dialog box för att markera vilken fil som ska importeras.
<Code>
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;E:\Excel\Beståndsfil\bestånd.txt", Destination:=Range("A1"))
</Code>Sv: Problem med infogande av textfil till excel
Range("A1")=fPath
För att se vad det är för fel på strängen.Sv:Problem med infogande av textfil till excel
får jag "Körfel nr 450 Fel antal argument eller felaktig egenskapstilldelning"Sv: Problem med infogande av textfil till excel
Det här måste väl ändå funka?
<code>
Private Sub openB_Click()
Dim fPath As String
CommonDialog1.Filter = "Text (*.txt)|*.txt"
CommonDialog1.ShowOpen
fPath = (CommonDialog1.Filename)
ActiveWorkbook.ActiveSheet.Range("A1") = fPath
End Sub
</code>Sv:Problem med infogande av textfil till excel
Kan det bero på att CommonDialog1.Filename står med litet n i Filename istället för stort?
Det är enda skillnaden som jag kan upptäcka när man jämför med andra kodexempel. Långsökt eller?Sv: Problem med infogande av textfil till excel
Testa nu att skriva så här:
<code>
Private Sub openB_Click()
Dim fPath As String
CommonDialog1.Filter = "Text (*.txt)|*.txt"
CommonDialog1.ShowOpen
fPath = (CommonDialog1.Filename)
fPath = "TEXT;(" & fPath& ")"
ActiveWorkbook.ActiveSheet.Range("A1") = fPath
End Sub
</code>
Jämför sedan det med den strängen som fungerar. Skiljer det sig?Sv:Problem med infogande av textfil till excel
Den andra: TEXT;(E:\Excel\Beståndsfil\bestånd.txt)
Jag förstår inte riktigt vad vi ska titta efter. Sv: Problem med infogande av textfil till excel
Nu ser du till exempel att det är parenteser som inte ska vara där. Skriv alltså
<code>
...
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & fPath, Destination:=Range("A1"))
...
</code>Sv:Problem med infogande av textfil till excel
Nu fungerar det perfekt. Tackar för all hjälp.
Jesse