Har gjort ett dokument i word som innehåller ett par textboxar och några comboboxar. Men varför har du ett worddokument från början? Från början så är det ett Word-dokument som man fyller i, ärendenummer, område, utrustning och felbeskrivning m.m. och det dokumentet skriver man sedan ut och sätter in i en pärm under rätt flik. Kommer det in ett nytt jobb så börjar samma förfarande igen. Det borde gå att fixa till, har du jobbat ngt med att anropa Excel från Word tidigare? Nja, jag har inet anropat excel från word tidigare, bara från ett program i vb till excel. Ok, nu har jag fått kontakt med Excel och skriver dit m.h.a koden Nej, herregud, så där behöver du inte göra. Det här sista fick jag inte riktigt att fungera så det blev så här istället Det finns ett aningen bättre sätt att skriva koden: Tack för all hjälp... :)Från Word till Excel
Tanken med det hela är att man skall fylla i word-dokumentet, trycka på knappen Spara då skall dokumentet skrivas ut, sparas som en kopia och det kluriga, informationen skall skrivas till ett Excel-dokument.
I det här word-dokumentet så är det meningen att olika jobb skall fyllas i så nästa gång jag öppnar det och fyller i nästa jobb så skall den informationen infogas på raden under det första jobbet i excel-dokumentet och så fortsätter det att fyllas på med arbetsuppgifter.
Det behöver nödvändigtvis inte vara ett excel-dokument som den skall skriva till men jag tror att det blir smidigast för när ett jobb är utfört så skall det plockas bort från arket och då, tror jag i alla fall, att det är smidigast på detta sätt.
Kan det vara så att detta är möjligt eller skall man börja knyppla eller nått istället? :)
Är det någon som har lust att hjälpa mig och behöver veta mer eller se min hawaii-kod så är det bara att hojta till.Sv: Från Word till Excel
Jag tror att det är väsentligt mycket lättare att göra det arbetet i Excel, och sen generera en wordfil utifrån det.Sv:Från Word till Excel
En gång i veckan så kollar en av oss om jobben har blivit utförda och då flyttar man det pappret till en annan flik som heter utförda jobb.
Jobben ökar fortaren än jobben blir klara så det blir mer och mer att gå igenom den här dagen då allt skall kollas och kan man på nått sätt förenkla det så är det bara bra.
Det var en liten kort förklaring till varför det är ett word-dokument. :)
Anledningen till att jag ville ha det skrivet till ett Excel-dokument är ju det att det är lätt att ta bort en rad, den raden med det jobbet som har blivit utfört. Sv: Från Word till Excel
Jag antar att du redan har kod i Word redan för att hantera kontrollerna... Har du en särskild
Excel fil som du skriver i manuellt nu eller?
Det finns ett bra exempel på Tips och tricks under MS Office
http://www.pellesoft.se/communicate/tips/tips.aspx?tid=500
mvh // AndersSv:Från Word till Excel
Word-dokumentet är helt klart med textfält, knappar, utskrift och spara m.m. det som återstår nu är kopplingen word->excel.
Jag skall kika på Tips och trickset. :)Sv: Från Word till Excel
<code>
Private Sub cmbExcel_Click()
Dim myXL As New Excel.Application
Dim myWkBk As Excel.Workbook
Dim mySheet As Excel.Worksheet
Set myWkBk = myXL.Workbooks.Open("H:\Allt\Felanmälan Drift\jobb.xls")
Set mySheet = myWkBk.Worksheets("Blad1")
mySheet.Range("A3").Value = lblTime
mySheet.Range("B3").Value = txtArendenummer
mySheet.Range("C3").Value = cbxUtrustning
mySheet.Range("D3").Value = cbxEnhet
mySheet.Range("E3").Value = txtBeskrivning
mySheet.Range("F3").Value = cbxUser
myWkBk.Save
myWkBk.Close True
myXL.Quit
Set myXL = Nothing
Set myWkBk = Nothing
End Sub
</code>
Nästa problem som jag inte riktigt vet hur jag skall lösa är hur jag skall få efterföljande information på nästa rad, A4, B4, C4 o.s.v.
På nått sätt så måste jag ju kolla vilken rad som det är skrivet på och lägga på ett på det på någon vänster.Sv:Från Word till Excel
Pelles artikel var inte så dum eller hur !
För det du ska göra nu skulle jag använda ActiveCell.Offset .
-Säg att den aktiva cellen du står i är A5.
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Select flyttar då markören till A6
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Select flyttar då markören till B5
Observera att du inte behöver köra .Select för att fylla i värden. Då behöver du bara använda .Value och då står markören kvar i A5.
Börja med att loopa dig igenom A kolumnen tills du hittar den sista posten (eller den första tomma raden) Därefter använder du
mvSheet.ActiveCell.Value = lblTime
mvSheet.ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Value = txtArendenummer
mvSheet.ActiveCell.Offset(rowOffset:=0, columnOffset:=2).Value = cbxUtrustning
osv.
mvh // AndersSv: Från Word till Excel
Använd något i sitl med:
<code>
Set BottomRange = mySheet.End(xlDown)
BottomRange = lblTime
BottomRange.Offset(0, 1)= txt...
</code>
Fast jag är nog fortfarande av åsikten att det borde bli väsentligt mycket enklare att lösa andra vägen, dvs. skriva in grejerna i Excel, och skapa dokumenten utifrån det.Sv:Från Word till Excel
<code>
val = mySheet.Range("A65536").End(xlUp).Row + 1
mySheet.Range("A" & val).Value = lblTime
mySheet.Range("B" & val).Value = txtArendenummer
o.s.v.
</code>
Om det är den smidigaste och bästa lösningen vet jag inte med det funkar. :)
Det uppstår lite andra problem har jag märkt men jag skall söka lite i forumet innan jag frågar, svaret kanske redan finns här.
Jag får tacka för all hjälp så länge. :)Sv: Från Word till Excel
<code>
val = mySheet.Range("A65536").End(xlUp).Row + 1
mySheet.Cells(val, "A").Value = lblTime
mySheet.Cells(val, "B").Value = txtArendenummer
</code>
Lite snyggare och snabbare, helt enkelt.
Sen är det så att 65536 troligtvis kommer att bli föråldrad förr eller senare, och då är det inte lika bra, men tills posterna riskerar att komma upp i den storleksordningen behöver du nog inte bekymra dig...
<b>>Intressant...
Vad returnerar mySheet.End(xlDown) ?</b>
Jävlar, nu ser jag att jag skrev fel.
Det ska vara en Range man gör End på. Oavsett så gör det så att man kommer till den cell som är längst ner från den cellen sett. Enklaste sättet att förklara det på är att du kan trycka på end i Excel och trycka på någon av piltangenterna, så får du samma effekt.
En annan lämplig i sammanhanget är Sheet.UsedRange, som returnerar alla celler på hela sheetet som är använda på ett eller annat sätt.Sv:Från Word till Excel
Posterna kommer inte att komma upp i den storleksordningen på långavägar... :)
Nu återstår det endast några småproblem. Får se om jag fixar det annars så hör jag av mig igen...var så säkra. :D