Excel makró elérési útvonal hiba

Excel makró elérési útvonal hiba
2012-11-25T16:02:52+01:00
2012-11-25T23:00:45+01:00
2022-11-27T13:00:40+01:00
byprog
Írtam egy programot ami egymás után 3 db fájlt olvasna be elérési útvonaluk szerint. p1, p2 és p3 tartalmazza az elérési útvonalakat. Egy k változó szerint ovasna be a megfelelő p1, p2, p3 tartalmat.

Sub filetoopen()

Dim path As String

Dim k, i, Check
Check = True: k = 1: i = 1: oszlop = 0
Do
For i = 1 To 3
If i = k Then
p = "p" & k
p1 = "F:\progic2\20121123094739C2.csv"
p2 = "F:\progic2\20121122235937C1.csv"
p3 = "F:\progic2\20121123000051C1.csv"
path = p
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;path, Destination:=Range("A1").Offset(0, oszlop)) 'TEXT;F:\progic2\20121122152123C2.csv
...
End With
oszlop = oszlop + 2
k = k + 1
i = i + 1
End If
Next
Exit Do
Loop Until Check = False
End Sub


Valószínűleg ebben a sorban van a hiba:
"TEXT;path,
méghozzá futáskor a path értékét nem ismeri fel így nem tudja az elérési útvonalat beolvasni.

Kérdésem, hogy hogyan tudnám orvosolni e problémát?
Mutasd a teljes hozzászólást!
Jó lenne a "..." részt is látni.

Meg ha lehetne, tedd be egy "forráskód" blokkba.

--
With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;path, Destination:=Range("A1").Offset(0, oszlop)) 'TEXT;F:\progic2\20121122152123C2.csv ...

Hol a TEXT elötti ' lezárása

A
Range("A1").Offset(0, oszlop))
és
'TEXT;F:\progic2\20121122152123C2.csv
közül hiányzik műveleti jel, és " is.
Mutasd a teljes hozzászólást!

  • itt az egész kód:

    Sub filetoopen() Dim path As String Dim k, i, Check Check = True: k = 1: i = 1: oszlop = 0 Do For i = 1 To 3 If i = k Then p = "p" & k p1 = "F:\progic2\20121123094739C2.csv" p2 = "F:\progic2\20121122235937C1.csv" p3 = "F:\progic2\20121123000051C1.csv" path = p With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;"path", Destination:=Range("A1").Offset(0, oszlop)) .Name = "munka" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 852 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileOtherDelimiter = ";" .TextFileColumnDataTypes = Array(1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With oszlop = oszlop + 2 k = k + 1 i = i + 1 End If Next Exit Do Loop Until Check = False End Sub
    Mutasd a teljes hozzászólást!
  • Változókra így nem hivatkozhatsz, használj inkább tömböt.
    Mutasd a teljes hozzászólást!
  • "TEXT;"path", Destination:=Range("A1").Offset(0, oszlop))


    Ez elég rossznak tűnik.

    Leltározd az "-eket.
    --

    Más kérdés, hogy ez is igaz:
    Változókra így nem hivatkozhatsz, használj inkább tömböt.
    Mutasd a teljes hozzászólást!
  • pl:
    p(1) = "F:\progic2\20121123094739C2.csv"
    p(2) = "F:\progic2\20121122235937C1.csv"

    vagy IF illetve Select Case szerkezetet:

    If i=1 then
    p = "F:\progic2\20121123094739C2.csv"
    Else
    p= "F:\progic2\20121122235937C1.csv"
    End If


    Select Case i
    Case 1:
    p = "F:\progic2\20121123094739C2.csv"
    Case 2:
    p= "F:\progic2\20121122235937C1.csv"
    End Select
    Mutasd a teljes hozzászólást!
  • Átírtam tömbre ahogy javasoltad.
    Egy probléma még mindig fent áll sajnos. Mikor Connection:="TEXT;path" -nál beolvassa az elérési útvonalat, a p(1), p(2), p(3) -nál is plusszba van az elérési út elején és végén " karakterem. Muci is írta hogy ezt valahogy leltározni kellene. Ezt hogy tehetem meg?

    Sub filetoopen() Dim path As String Dim p(0 To 3) As String, i As Long p(1) = "C:\excelmakro\1.txt" p(2) = "C:\excelmakro\2.txt" p(3) = "C:\excelmakro\3.txt" Dim k, Check Check = True: k = 1: oszlop = 0 Do For i = LBound(p) To UBound(p) path = p(k) With ActiveSheet.QueryTables.Add(Connection:="TEXT;path", Destination:=Range("$A$1")) .Name = "munka" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 852 .TextFileStartRow = 1 .TextFileParseType = xlFixedWidth .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1) .TextFileFixedColumnWidths = Array(1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With oszlop = oszlop + 2 k = k + 1 Next i Exit Do Loop Until Check = False End Sub
    Mutasd a teljes hozzászólást!
  • Bocs
    ActiveSheet.QueryTables.Add(Connection:="TEXT;" & path, destination:= ..
    Mutasd a teljes hozzászólást!
  • With ActiveSheet.QueryTables.Add(Connection:="TEXT;path" & Destination:=Range("$A$1"))
    Mutasd a teljes hozzászólást!
  • így már sikeres volt a lefutás:)

    végleges program:
    Sub filetoopen() Dim path As String Dim p(0 To 3) As String, i As Long p(1) = "C:\excelmakro\3.txt" p(2) = "C:\excelmakro\2.txt" p(3) = "C:\excelmakro\1.txt" Dim k, Check Check = True: k = 1: fajlokszama = 0: oszlop = 0 Do For i = LBound(p) To UBound(p) path = p(k) With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & path, Destination:=Range("$A$1")) .Name = "Munka1" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 852 .TextFileStartRow = 1 .TextFileParseType = xlFixedWidth .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1) .TextFileFixedColumnWidths = Array(1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With oszlop = oszlop + 2 k = k + 1 fajlokszama = fajlokszama + 1 If fajlokszama = 3 Then End End If Next i Exit Do Loop Until Check = False End Sub

    köszönöm a segítségeket!
    Mutasd a teljes hozzászólást!
  • Szeretem amikor két hiba közül elsőnek megmondom az egyiket, aztán azt, hogy a másik javítást hogyan kell használni és utána másét fogadják el.

    Ez a szép a prog.hu-ban.

    Egyébként
    Dim p(1 To 3)
    célszerűbb.
    Mutasd a teljes hozzászólást!
  • Légy szíves a jövőben figyelj oda arra, hogy az 1. olyan hozzászólást jelöld meg megoldásként, amelyik a helyes választ tartalmazza! Pontozás korrigálva!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd