Avatar billede h_s Forsker
17. marts 2010 - 20:15 Der er 15 kommentarer og
1 løsning

Hente info fra tekst-fil

Jeg har en tekstfil hvor jeg gerne vil hente info fra en tekstfil: Status.txt.
Info jeg skal hente er i første række fra pos. 84 til og med pos. 97.
Det skal indsætte i sheet("Forside").range.("H6") som tekst.

Kan nogen hjælpe?
Avatar billede supertekst Ekspert
17. marts 2010 - 22:54 #1
Hvordan er tekstfilen organiseret - evt send en kopi - mailadr. under profil
Avatar billede h_s Forsker
18. marts 2010 - 18:20 #2
Jeg kan desværre ikke sende dig filen, da det er fortrolige oplysninger, men jeg kan sende dig første linje i filen:

XXXXX YYYYYY, ZZZZZ                                                          Dato 04.04.09 10:42  Side 1

Der er ingen linje skift, men kopier du det hele i en notesblok er der en linje.
X,Y og Z er virksomhedsnavne!

Det jeg skal bruge er 04.04.09 10:42.

Håber du kan hjælpe mig!
Avatar billede supertekst Ekspert
18. marts 2010 - 18:46 #3
Ok - vender tilbage
Avatar billede supertekst Ekspert
19. marts 2010 - 09:12 #4
Koden anbringes som Programkode under ark "Forside"

Const txtFilSti = "C:\Documents and Settings\pb.KHNBPB\Skrivebord\HS\"          'JUSTERES
Const txtFilNavn = "status.txt"
Public Sub indlæsTekstfil()
Dim linje As String, id As String

    Open txtFilSti & txtFilNavn For Input As #1
    Input #1, linje
    Close #1
   
    id = Mid(linje, 84, 14)
    ActiveSheet.Range("H6").Value = id
End Sub
Avatar billede h_s Forsker
21. marts 2010 - 19:30 #5
supertekst> Tak skal du have - Jeg kigger på den i løbet af ugen, men kan allerede nu sige, at den skal indgå i en større makro, der ligger i Module 1.
Er der så nogle ting, der skal ændres?
Avatar billede supertekst Ekspert
21. marts 2010 - 22:13 #6
sikkert denne linje:

    ActiveSheet.Range("H6").Value = id --->

    ActiveWorkbook.Sheets("Ark??").Range("H6").Value = id
Avatar billede h_s Forsker
23. marts 2010 - 20:06 #7
Supertekst>Der er et lille problem i den linje er der et komma "," i 14. karakter. Det ser ud som om den driller. For jeg kan godt få indsat alt før kommaet ved at ændre i Mid(linje, 84, 14). Men så snart der skal startes i karakteren efter den 14. kommer der ikke noget med. og vælger jeg at starte i 1. karakter og skrive 20 kommer kun de første 13 karakterer med!
Avatar billede supertekst Ekspert
23. marts 2010 - 20:48 #8
Ok - prøver at simulere et komma i 14 - vender tilbage..
Avatar billede supertekst Ekspert
23. marts 2010 - 23:11 #9
Version 2

Denne linie rettes:
Input #1, linje --->  Line Input #1, linje
Avatar billede h_s Forsker
01. april 2010 - 08:09 #10
kiger på det og vender tilbage!
Avatar billede h_s Forsker
01. april 2010 - 08:45 #11
får en fejl i: Open txtFilSti & txtFilNavn For Input As #1

Har fundet en anden løsning:
Jeg har optaget en Import af tekstfilen, hvor jeg får oplysningen i en kolonne. Så kopier jeg blot det felt og sletter resten!

Ellers tak for hjælpen!
Avatar billede supertekst Ekspert
01. april 2010 - 12:30 #12
Ok - hvad var detfor en fejl?

og du burde vel også vise din løsning her..
Avatar billede h_s Forsker
04. april 2010 - 13:17 #13
Supertekst> ØH, nu får jeg ingen fejl....
Dog har jeg problemer med at bruge datoen, da jeg skal bruge den i en tekststreng og så ændres 10:42 til 0,45....
Har du nogen forslag?

Jeg skylder dig vel 100 point!
Hvordan gør vi det?

Jeg har valgt min egen løsning, der gør følgende:
Sub Dato()
'
' Dato Makro
'

'
    Application.ScreenUpdating = False
    Sheets("Dato").Visible = True
    Sheets("Dato").Select
    ActiveSheet.Unprotect
   
    Rows("1:1").Select
    Selection.ClearContents
    Range("A1").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Users\Documents\Test\Status.txt", Destination:=Range _
        ("$A$1"))
        .Name = "Status_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1252
        .TextFileStartRow = 1
        .TextFileParseType = xlFixedWidth
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(9, 2, 9, 2, 9, 2, 9)
        .TextFileFixedColumnWidths = Array(78, 4, 1, 8, 1, 5)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Rows("2:19000").Select
    Selection.ClearContents
    ActiveSheet.Protect
    Sheets("Dato").Visible = False
    Sheets("Forside").Select
    ActiveSheet.Unprotect
    Range("E6").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(Dato!R[-5]C[-4]="""",""Der er ikke læst data ind"",""Varebeholdninger fra den ""&Dato!R[-5]C[-3]&"" kl. ""&Dato!R[-5]C[-2]&"" er indlæst!"")"

    ActiveSheet.Protect
    Application.ScreenUpdating = True
End Sub
Avatar billede supertekst Ekspert
04. april 2010 - 15:01 #14
Kan ikke se problemet vedr. dato. Har anvendt din kode og får den korrekt indlæst i C3.

Vedr. points - glem det...
Avatar billede h_s Forsker
04. april 2010 - 20:51 #15
Du har ret - Min kode giver ikke problemer. Det er fordi den har format tekst:

.TextFileColumnDataTypes = Array(9, 2, 9, 2, 9, 2, 9)

2 = Tekst
9 = Ikke importeres

Det er din kode den er gal med!
Det kommer ind som dato og klokkeslet. Når jeg så skal bruge det som tekst bliver det ændret til et decimaltal!
Avatar billede supertekst Ekspert
04. april 2010 - 23:30 #16
ok..
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