15. juni 2005 - 14:06Der er
64 kommentarer og 2 løsninger
Import og opsætning af txt-fil
Nu skal jeg nok bruge rigtigt meget hjælp.
Jeg har fået til opgave, at se om jeg kan få en txt-fil indlæst i Excel, og samtidig få det vist på en overskuelig måde, helst i en graf. Derudover skal det laves, så brugeren kun skal klikke på en knap, og så virker det hele. Det sidste er helt klart den vigtigst parameter pt. så andre ting kan godt undværes, hvis de/det ellers ville gå ud over brugervenligheden.
Det vil sige, at der skal indlæses en fil, som ser ca. sådanne ud: Ojeblikkel. Bvol 21.99 ALARM 10.38:20 19-03-04
Total : 32336.49 Total A,B: 25869.48; 6467.01 SubTotal : 4.95 SubTotal A,B: 3.96; 0.99 Gnms. B volume: 25.03 10.38:36 19-03-04 END
Total : 32336.49 Total A,B: 25869.48; 6467.01 SubTotal : 0 SubTotal A,B: 0; 0 10.38:37 19-03-04 Recept Nr. 2 Bvol % 25 START
Ojeblikkel. Bvol 22.69 ALARM 10.42:31 19-03-04
Total : 32343.09 Total A,B: 25874.76; 6468.33 SubTotal : 6.73 SubTotal A,B: 5.38; 1.34 Gnms. B volume: 25.04 10.42:37 19-03-04 END
Total : 32343.09 Total A,B: 25874.76; 6468.33 SubTotal : 0 SubTotal A,B: 0; 0 10.42:38 19-03-04 Recept Nr. 2 Bvol % 25 START
Ojeblikkel. Bvol 23.53 ALARM 10.52:58 19-03-04
Total : 32348.26 Total A,B: 25878.89; 6469.37 SubTotal : 5.26 SubTotal A,B: 4.2; 1.05 Gnms. B volume: 25.07 10.53:40 19-03-04 END
Det er en oversigt over hvor meget maling og tid der bruges på nogle konstruktioner. Reelt kan vi nøjes med at bruge start og end til at udregne værdier med. Derudover skal der kun vises alarmer. Til bemærkning er filen ikke 100% systematisk opbygget, så en simpel import er ikke nok. Så efterfølgende skal felterne jo splittes yderligere op, for endelig at kunne vises i en graf.
For at brugeren skal have så let ved det som muligt, tænkte jeg om det er noget man kan klare via Makroer, men jeg er desværre ikke særlig stiv i Makro-programmering, så her er hjælpen især velkommen.
Hei lsskaarup Det er ikke sikkert jeg kan hjelpe, men hvis du fårstår min norsk kan jeg prøve :-) ( jeg har fått mye hjelp her på experten, kanskje på tide å betale tilbake)
Hva om vi starter enkelt og deler oppgaven i flere små oppgaver?
1) lage kanpp som starter hele prosessen 2) så kan vi lage modulen som skal åpne tekstfilen ... Når vi kommer til detaljer vi ikke klarer å løse, får du sikkert hjelp fra andre her på eksperten
Øh, jeg ved ikke helt præcist hvordan jeg fik tilknyttet makroen, for jeg havde ikke "tildel makro" ved højre klik, men den virker i hvert fald. Når jeg trykker på den, så kommer dialogboksen og siger "Hej"
Hvis du har litt tid nå, kan vi i løpet av kort tid lage en funksjon som åpner tekstfila, ( tror jeg :-) Når du har lukket kodevinduet, har du bare menyenen synlig i toppen
Hvis du har lukket alle vinduer, slik at bare hovedvinduet i editoren er åpent. Kan du velge View -> Prosjedt Explorer , eller hurtigtast Ctrl + R Nå kan det være litt anderledes i windows 2000 jeg har xp, men hadde 2000 før.
Hvis vi har forstått hverandre riktig. Den eneste koden som står i Ark1 er: Private Sub "knappenavn"_Click() Call HovedRutine End Sub
Så har du en modul under modules som heter module1. Merk Module1 i stifindervinduet og trykk F4, nå kommer det opp et vindu der du kan gi din modul et nytt navn, for eksempel Hovedmodul
Der vi denne koden stå: Option Explicit Option Base 1
Public Sub HovedRutine() MsgBox " Hei :-) " End Sub
Nå er ikke jeg noen ekspert i denne, men jeg ville ha opprettet to moduler til. ved hjelp av: -> insert -> module. Den ene modulen kan du gi navnet Declarasjoner og den andre prosedyrer. ( i ettertid vil du sikkert finne din egen måte å gjøre dette på )
Når det er gjort må du fortelle meg: Navn og sti til tekstfila som skal åpnes
Der udover kommer der en firkant ind i mellem, jeg tror det er et linieskift som ikke ligner de almindelige, men det kommer altså ikke med i outputtet her.
Prøv å kjøre programmet med denne tekste i OpenTekstFilen. (Du kan også prøve deg fram med å spille inn en makro for å se hvilken kode som blir generert. ellers er jeg redd du må opprette et nytt spørsmål for å få hjelp av andre til denne delen.
Nei OpenTextFilen, skal ligge i Modulen prosedyrer.
Dette kan selvfølgelig gjøres på mangen måter. (og jeg er jo bare en amatør ) Men slik jeg har gjort det. Må alle variabler deklareres, Option Explicit. Jeg gjør dette i en engen modul.
så skriver jeg alle prosedyrer i prosedyremodulen, det vil si åpne tekstfiler, lager diagrammer etc. I hovedmodulen får variablene verdier slik som navn på teksfiler og mapper
Så blir selve prosedyrene kaldt, Call prosedyrenavn. fordelen med dette er at du kan benytte samme prosedyre mange ganger. Det er bare variablene som endrer verdi.
Jeg åpnet et nytt excel-regneark, satte inn noen tilfeldige tall i noen celler og lagret excelarket som tekstfil : C:/Temp/Maling2.txt Når jeg trykket på knappen ble tekstfila åpnet.
Min kode ser slik ut, i stifinneren finner du Ark1, der skal denne koden stå: Nb! min knapp heter HentData, du bytter bare ut navnet
Private Sub HentData_Click() Call HovedRutine End Sub .......................................... I Modulen som heter declarasjoner skal følgende stå:
Option Explicit Option Base 1
Public sFolder As String Public sTxtFile As String .....................................
End Sub ..................................................... Og koden i Hovedmodulen: Option Explicit Option Base 1
Public Sub HovedRutine() sFolder = "c:/temp/" sTxtFile = "Maling2.txt" Call OpneTextFilen End Sub ......................................... Dette skal fungerer, hvis du får feil får vi ta detalj for detalj
Glemte å si at også du bør lage en midlertidig tekstfil fra excel først. Når vi får det til å fungere, er det tid for å gå videre med den opprinnelige filen
Hvis du nå endrer sTxtFile = "Maling2.txt" til sTxtFile = "Maling.txt" i Hovedrutinen. Får du da åpnet den opprinnelige datafilen din? Fila må ligge i samme mappe som Maling2.txt
Eller er det slik at alt på en linje står i samme celle? jeg kan prøve å hjelpe, men jeg er helt sikker på denne delen er det enkelte her på eksperten som kan komme med mye bedre løsninger enn det jeg kan klare.
Det gjelder bare å få konkretisert og avgrenset spørsmålet skikkelig.
En annen sak. Den koden som vi til nå har laget, er den forståelig? Tror det er viktig at du skjønner hva som skjer på hver enkelt linje. Da blir det også lettere å stille spørsmål senere.
DataType:=xlDelimited betyre at det er data med skilletegn, for eksempel ; som bestemmer hvilke data som skal i de forskejllige kolonnene. Alternativet er : DataType:=xlFixedWidth, da der det ikke skilletegn, man fast bredde for hver kolonne.
Jeg tror desverre at du bør opprette et nytt spørsmål Problemet slik jeg ser det er å få skilt tekst og data. Tror også du bør beskrive nøyaktig hva du er ute etter. Etter at dataene er organisert i et regneark, er det ikke noe problem å få koden til å lage diagramemr. jeg har ikke tid nå, men hvis du ikke får annen hjelp, skal jeg prøve å finne en løsning, men det vil ta lang tid.
Vi har vel ikke langt selv om vi har holdt på lenge :-) , så du bør ta tilbake de fleste pointene selv. Pointene er ikke viktige for meg, men oppgaven er interesant :-)
Synes godt om
Ny brugerNybegynder
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.