Just nu i M3-nätverket
Gå till innehåll

nybörjar hjälp


t_henrik

Rekommendera Poster

Hej igen,

jag har kollat filen som du skickade och det enda jag kan konstatera är att

Det inte verkar fungera så bra att använda visual basic (knutet till ett specifikt blad) när man hanterar andra dokument.

Har aldrig använt Excel på det sättet innan.

 

Om jag däremot flyttar koden till en modul i VBA så fungerar det perfekt.

Vill du ha knappar direkt i dokumentet kan du då använda Forms-verktygsfältet.

 

Vill du ha ett exempel på hur jag gort via forms?

 

 

Någon annan som vet varför man inte kan använda Visual Basic-verktygsfältet, skapa en knapp och ange ett macro som berör andra dokument än det där koden ligger. Knapp-koden lagras i det aktiva bladet (i VBA-editorn).

 

 

 

Länk till kommentar
Dela på andra webbplatser

Hej och jag börjar med att skriva tack

 

Jag har funnit eventuellt problemet, då jag har mina (CommandButton) och kod på en och samma arbetsbok och öppnar en ny arbetsbok för att därefter markera en kolumn i den nya arbetsboken blir det fel. Referenser fungerar förmodligen inte som jag tänker.

 

Men sent i natt eller tidigt på morgonen så fann jag en funktion i Excel, importera extern data under menyval DATA. Jag valde data här och då TXT fil, data kom då till en och samma arbetsbok, vilket löste problemet.

 

Men helt plötsligt är jag tillbaka på ruta ett.

 

Jag önskar att välja fil.

 

JAG FÖRSÖKER HÄR SAMMANFATTA ALLT.

 

Har gjort ett makro som importerar externa data (verktyg/importera externa data) från en TXT-fil. Detta fungerar väl.

Jag placerar min kod som jag fått av makro under en commandButton

 

Se nedan, kod 1

 

Naturligtvis pekar det alltid på denna fil då jag använder CommandButton knappen. Men jag önskar välja fil, har då gjort enligt KOD 2(se nedan) använt funktionen(Application.GetOpenFilename) och därefter placerat innehållet i (TxtfilePath) detta med bl.a hjälp av signatur LEON (TACK). Men det vill sig inte. Tacksam för förslag

 

Hoppas ni orkat läsa hit

 

mvh

Torbjörn

 

KOD1

 

Private Sub CommandButton2_Click()

With ActiveSheet.QueryTables.Add(Connection:= _

"TEXT;C:\Documents and Settings\Ägaren\Mina dokument\traning\2006\07\14\tider.txt" _

, Destination:=Columns("N:N"))

.Name = "tider_1"

 

.FieldNames = True

.RowNumbers = False

.FillAdjacentFormulas = False

.PreserveFormatting = True

.RefreshOnFileOpen = False

.RefreshStyle = xlInsertDeleteCells

.SavePassword = False

.SaveData = True

.AdjustColumnWidth = True

.RefreshPeriod = 0

.TextFilePromptOnRefresh = False

.TextFilePlatform = 850

.TextFileStartRow = 1

.TextFileParseType = xlDelimited

.TextFileTextQualifier = xlTextQualifierDoubleQuote

.TextFileConsecutiveDelimiter = False

.TextFileTabDelimiter = False

.TextFileSemicolonDelimiter = False

.TextFileCommaDelimiter = True

.TextFileSpaceDelimiter = False

.TextFileColumnDataTypes = Array(2, 2)

.TextFileTrailingMinusNumbers = True

.Refresh BackgroundQuery:=False

End With

End Sub

 

 

KOD2

 

Private Sub CommandButton2_Click()

Dim TxtfilePath

TxtfilePath = Application.GetOpenFilename("SSIM-filer (*.txt), *.txt", , "Öppna text-fil")

 

With ActiveSheet.QueryTables.Add(Connection:= _

"TxtfilePath" _

, Destination:=Columns("N:N"))

.Name = "TxtfilePath"

 

 

.FieldNames = True

.RowNumbers = False

.FillAdjacentFormulas = False

.PreserveFormatting = True

.RefreshOnFileOpen = False

.RefreshStyle = xlInsertDeleteCells

.SavePassword = False

.SaveData = True

.AdjustColumnWidth = True

.RefreshPeriod = 0

.TextFilePromptOnRefresh = False

.TextFilePlatform = 850

.TextFileStartRow = 1

.TextFileParseType = xlDelimited

.TextFileTextQualifier = xlTextQualifierDoubleQuote

.TextFileConsecutiveDelimiter = False

.TextFileTabDelimiter = False

.TextFileSemicolonDelimiter = False

.TextFileCommaDelimiter = True

.TextFileSpaceDelimiter = False

.TextFileColumnDataTypes = Array(2, 2)

.TextFileTrailingMinusNumbers = True

.Refresh BackgroundQuery:=False

End With

End Sub

 

Länk till kommentar
Dela på andra webbplatser

En snabbfix är att byta ut denna kodsnutt:

With ActiveSheet.QueryTables.Add(Connection:= _
"TxtfilePath" _
, Destination:=Columns("N:N"))
.Name = "TxtfilePath"

mot detta:

 

TxtfilePath = "TEXT;" & TxtfilePath
With ActiveSheet.QueryTables.Add(Connection:=TxtfilePath, Destination:=Columns("N:N"))

 

Min jobbversion (2000) av Excel gillade inte raderna

.TextFilePlatform = 850
.TextFileTrailingMinusNumbers = True

 

..men det beror nog på skillnaden i versioner.

 

Jag kan inte låta bli att misstänka att du gör det krångligare än vad det behöver vara. Men å andra sidan så är det ju du som skapar "programmet" och det är ju mycket värt :)

Dessutom så kanske det är för att jag är van att arbeta på ett annat sätt som gör att jag får den misstanken.

 

Lycka till!

Fler frågor? Bara att posta här :)

 

Länk till kommentar
Dela på andra webbplatser

Tja, vad skall sägas????

Jag är jätteglad. Det är såhär jag önskar.

 

Men nu kommer en ny fråga, och den angående följande rad från kod 1, se nedan.

 

TxtfilePath = "TEXT;" & TxtfilePath

 

Vad menas med "TEXT;"

 

Och med tecknet & är det betydelse av sammanslagning med följande, vilket i detta fall är (TxtfilePath)

 

 

 

KOD1

 

Private Sub CommandButton2_Click()

Dim TxtfilePath

TxtfilePath = Application.GetOpenFilename("SSIM-filer (*.txt), *.txt", , "Öppna text-fil")

 

TxtfilePath = "TEXT;" & TxtfilePath

With ActiveSheet.QueryTables.Add(Connection:=TxtfilePath,

Destination:=Columns("N:N"))

 

 

 

 

Krångligt blir det alltid i nybörjarstadie, man har endast en tanke att ta sig till mål. Och då har man oftast bara en väg :thumbsdown: tyvärr.

 

Tusen tack

Torbjörn

 

Länk till kommentar
Dela på andra webbplatser

Vad bra att vi är på rätt spår :)

Angående:

TxtfilePath = "TEXT;" & TxtfilePath

 

TxtFilePath innehåller ju till en början sökvägen till den textfil du öppnar. I raden ovan så sätter jag ihop den texten (sökvägen alltså) med texten "TEXT;".

Anledningen är att ActiveSheet.QueryTables.Add tydligen måste ha just "TEXT;"-biten i sig. Antagligen för att den skall 'veta' att det rör sig om just text (och inte t.ex. en tabell i en databas).

 

alltså: Om du öppnar C:\test\mintextfil.txt så blir TxtfilePath C:\test\mintextfil.txt Efter följande rad:

TxtfilePath = "TEXT;" & TxtfilePath

Så blir TxtfilePath TEXT;C:\test\mintextfil.txt

 

Hoppas att jag inte yrade för mycket nu. Hojta till i så fall.

 

Jag hade hellre velat att det skulle sett ut så här:

With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & TxtfilePath &", Destination:=Columns("N:N"))

..men det uppskattades inte av Excel/VBA.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...