Avatar billede emil_ger Nybegynder
25. august 2008 - 18:36 Der er 2 kommentarer og
1 løsning

Skriv til tekstfil

Jeg har et regneark med et variabelt antal rækker, hvor jeg skal have trukket data ud fra to kolonner.
Dataen skal indgå i et andet script i en tekstfil, hvorfor outputtet gerne skulle blive noget i stil med dette, her med kun to rækker:

-------------------------------------------------
sub subSub1_()
  autECLSession.autECLOIA.WaitForAppAvailable
 
  autECLSession.autECLOIA.WaitForInputReady
  autECLSession.autECLPS.SendKeys "ABC01"      'ABC skal erstattes af cellen B4
  autECLSession.autECLOIA.WaitForInputReady
  autECLSession.autECLPS.SendKeys "[tab]"
  autECLSession.autECLOIA.WaitForInputReady
  autECLSession.autECLPS.SendKeys "12,50"      '12,50 skal erstattes af cellen E4
  autECLSession.autECLOIA.WaitForInputReady
  autECLSession.autECLPS.SendKeys "[pf20]"

  autECLSession.autECLOIA.WaitForInputReady
  autECLSession.autECLPS.SendKeys "TRE01"      'TRE skal erstattes af cellen B4
  autECLSession.autECLOIA.WaitForInputReady
  autECLSession.autECLPS.SendKeys "[tab]"
  autECLSession.autECLOIA.WaitForInputReady
  autECLSession.autECLPS.SendKeys "102,750"    '102,750 skal erstattes af cellen E5 ... og så fremdeles.
  autECLSession.autECLOIA.WaitForInputReady
  autECLSession.autECLPS.SendKeys "[pf20]"
end sub
-------------------------------------------------

Da antallet af rækker kan variere fra gang til gang, skal der være et kontrol for hvor mange gange loopet skal køre.
Derudover vil det være optimalt, hvis der kun skrives til tekstfilen, hvis både B? og E? har indhold; altså hvis en af cellerne er blanke, skal den gå videre til næste linie.

Tekstfilen skal tømmes før der skrives dertil.
Jeg har forsøgt med Print #1 "", men da nogle af mine kommandoer herover indeholder ("), bliver der rod i outputtet og af samme grund kan de ikke bare sættes som strings.
Avatar billede emil_ger Nybegynder
25. august 2008 - 19:29 #1
Jeg er kommet lidt videre og mangler egentligt bare loopet med kontrolfunktion for indhold af både BX og EX.

Mit script ser ud som følger:

-------------------------------------------
Sub test()

Open "C:\test.txt" For Append As #1

Print #1, ""
Print #1, "Sub subSub1_()"
Print #1, "autECLSession.autECLOIA.WaitForAppAvailable"
Print #1, ""
Print #1, "autECLSession.autECLOIA.WaitForInputReady"
Print #1, "autECLSession.autECLPS.SendKeys " & Chr(34) & Worksheets("Ark1").Range("B4") & "01" & Chr(34)
Print #1, "autECLSession.autECLOIA.WaitForInputReady"
Print #1, "autECLSession.autECLPS.SendKeys " & Chr(34) & "[Tab]" & Chr(34)
Print #1, "autECLSession.autECLOIA.WaitForInputReady"
Print #1, "autECLSession.autECLPS.SendKeys " & Chr(34) & Worksheets("Ark1").Range("E4") & Chr(34)
Print #1, "autECLSession.autECLOIA.WaitForInputReady"
Print #1, "autECLSession.autECLPS.SendKeys " & Chr(34) & "[pf20]" & Chr(34)
Print #1, "End Sub"


Close #1

End Sub
------------------------------------------------
Avatar billede emil_ger Nybegynder
25. august 2008 - 20:20 #2
Okay, jeg var for hurtig til at få oprettet tråden, men NU er jeg kørt fast.
Jeg har tilføjet min kontrol, som HVIS G4 er sand (altså indeholder tekst), da skal den gå videre til næste række. Hvis G4 ikke indeholder tekst, skal den udføre loopet.

Derudover mangler jeg at angive, at den skal gå ud fra B4, E4 og G4.
------------------------------------------
Print #1, "Sub subSub1_()"

    If Worksheets("Ark1").Range("G4").True Then Next i
 
    Dim i As Integer
    For i = 1 To Selection.CurrentRegion.Rows.Count - 1
   
    Print #1, "autECLSession.autECLOIA.WaitForAppAvailable"
    Print #1, ""
    Print #1, "autECLSession.autECLOIA.WaitForInputReady"
    Print #1, "autECLSession.autECLPS.SendKeys " & Chr(34) & Worksheets("Ark1").Range("B4") & "01" & Chr(34)
    Print #1, "autECLSession.autECLOIA.WaitForInputReady"
    Print #1, "autECLSession.autECLPS.SendKeys " & Chr(34) & "[Tab]" & Chr(34)
    Print #1, "autECLSession.autECLOIA.WaitForInputReady"
    Print #1, "autECLSession.autECLPS.SendKeys " & Chr(34) & Worksheets("Ark1").Range("E4") & Chr(34)
    Print #1, "autECLSession.autECLOIA.WaitForInputReady"
    Print #1, "autECLSession.autECLPS.SendKeys " & Chr(34) & "[pf20]" & Chr(34)

    Next i

Print #1, "End Sub"
------------------------------------------------
Avatar billede emil_ger Nybegynder
25. august 2008 - 20:39 #3
lukket - tråden giver ikke mening, da der kun er en mindre opgave tilbage :)
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