Hej! Vill du få upp Excel och visa diagrammen där eller vill du använda VB:s inbyggda Har nu lyckats öppna Excel från Vb. Hur för jag nu över data från mina variabler till ett diagram på ett enkelt sätt? Hej! har gjort nått liknande, har diagrammen i mall.xls som ligger i samma mapp som programmet. Tack för svaret, men jag har fått det att fungera under helgen! Lägg gärna in den koden då, så hjälper du andra som sökt på detta problem! Hej! Hur löste du det med visningen av diagrammen då? Har inte lagt ut diagrammet än, måste fixa lite annat först. Men jag tänkte sen göra ett makro Hej, Hej grandma, Tack Emma, ska kolla på det. Hej BN, Hej! Hej Grandma, Hej! Hej Grandma, ska testa dennis förslag ovan vid tillfälle! Hej xlDennis! Hej Grandma, Hej! Har löst det och om det finns nägon som vill veta hur kan jag försöka förklara det.Visa digram i excel från Vb6?
Är ny på det här med Vb och Excel, och har letat lite på nätet men har inte fått några riktiga svar. Så jag hoppas någon här kan ge några enkla svar och förklara vad som händer för en nybörjare.
Har gjort ett litet program där jag läser in data från en textfil och därefter räknar ut några värden. Genom att trycka på en knapp(cmdVisaDiagram) vill jag sedan öppna Excel och presentera värdena i ett diagram. Sen vill jag även ha en knapp i Excel där jag då kör programmet igen.Hur går jag till väga? Har lagt till Microsoft Excel 10.0 Object Library i referenser.
Har testat lite grann men som sagt inte fått det att fungera. Hur gör jag för att slippa få upp formuläret. När jag har försökt köra VisaDiagram så har jag fått upp ett tomt formulär. Vad jag fattar så ska jag väl bara starta upp Excel och därefter lägga in värden. Ska formuläret/projektet sparas på nåt annat sätt?
Språk: VB6
Excel 2002Sv: Visa digram i excel från Vb6?
diagramfunktion?
/EmmaSv: Visa digram i excel från Vb6?
Sv: Visa digram i excel från Vb6?
Jag vill visa diagrammet i Excel. Är Vb´s inbyggda krångligare? Det kanske också blir snyggare i Excel? Eller?Sv: Visa digram i excel från Vb6?
mall.xls innehåller ett diagramblad i blad1 och en diagramtabell i blad 2
Har ett formulär som heter frmMain med ett OLE som heter oleDiagram (enabled=false, SizeMode=3 – Zoom, class= Excel.Sheet.8)
Hm… blev mycket klipp o klistra här men tror att det ska funka, inget vackert slut dock…
<code>
dim goExcel As Excel.Application
Global wsTabell As Excel.Worksheet
sub starta_Excel_mm ()
On Error GoTo Fel
Set goExcel = CreateObject("Excel.Application") 'öppnar excel
goExcel.Visible = False 'kör Excel dolt
DoEvents
mallen = App.Path & "\mall.xls" 'sökväg o filnamn
goExcel.Workbooks.Open (mallen) 'öppnar mall.xls
goExcel.Sheets(1).Select 'bladet diagram ska vara framme för att visas i OLE
Set wsTabell = goExcel.Sheets(2) 'för att kunna ändra i Diagramtabellen
'sen kommer det luriga att få OLE att funka som man vill
' finns det nåt bättre sätt?????????
frmMain.oleDiagram.CreateLink (mallen) 'Länkar OLE till mall.xls
frmMain.oleDiagram.DoVerb 'detta hoppar till excel (och gör så att OLE visas rätt..?)
goExcel.Visible = False 'dölj excel igen...
frmMain.SetFocus
frmMain.oleDiagram.Update
Exit Sub
Fel:
MsgBox "Problemas med Excel eller mall.xls?", vbCritical,
End
End Sub
'för att ändra i Tabbelbladet använd typ:
'wsTabell.Cells(rad, kolumn).Value = 88
'wsTabell.Cells(1, 1).Font.ColorIndex = 3'cell A1 dådå…
</code>Sv: Visa digram i excel från Vb6?
Sv: Visa digram i excel från Vb6?
/bSv: Visa digram i excel från Vb6?
Lägger ut min nuvarande kod. Den kanske är lite omständig, men den fungerar för mig. Tips på hur jag kan göra det enklare tas emot tacksamt. Jag vill också kunna spara data FRÅN Excel till en fil, hur gör man enklast då? Eller ska man spara det i Excel?
Hur får jag till färger till koderna när jag postar det här?
Kod:
<code>
Private Sub cmdBerakna_Click()
'Variabler
.
.
.
'Startvärde på vilket cellnr som data ska skrivas till
nr = 3
'Loopar igenom listruta
For idx = 0 To lstResultat.ListCount - 1
sTid = Mid(lstResultat.List(idx), 11, 2) 'Plockar ut 2 första siffrorna i klockslaget
sTid2 = Mid(lstResultat.List(idx), 11, 5) 'Plockar ut hela klockslaget
iTal = Mid(lstResultat.List(idx), 18, 3) 'Plockar ut det systoliska värdet
iTal2 = Mid(lstResultat.List(idx), 22, 3) 'Plockar ut det diastoliska värdet
iTal3 = Mid(lstResultat.List(idx), 26, 3) 'Plockar ut värdet för medeltryck
iTal4 = Mid(lstResultat.List(idx), 30, 3) 'Plockar ut värdet för pulsfrekvens
'Summerar systoliskt,diastoliskt,medeltryck och pulsfrekvens
iTot = iTot + iTal
iTot2 = iTot2 + iTal2
iTot3 = iTot3 + iTal3
iTot4 = iTot4 + iTal4
'Kollar om det är dagtid eller nattid
If sTid >= 6 And sTid < 24 Then
dSysDag = dSysDag + iTal
dDiaDag = dDiaDag + iTal2
dMedelTryckDag = dMedelTryckDag + iTal3
dPulsFrekvensDag = dPulsFrekvensDag + iTal4
i2 = i2 + 1
Else
dSysNatt = dSysNatt + iTal
dDiaNatt = dDiaNatt + iTal2
dMedelTryckNatt = dMedelTryckNatt + iTal3
dPulsFrekvensNatt = dPulsFrekvensNatt + iTal4
i3 = i3 + 1
End If
'Skriver ut värdena i Excel
xlBook.Worksheets("Blad2").Range("A" & nr).Value = sTid2
xlBook.Worksheets("Blad2").Range("B" & nr).Value = iTal
xlBook.Worksheets("Blad2").Range("C" & nr).Value = iTal2
xlBook.Worksheets("Blad2").Range("D" & nr).Value = iTal3
xlBook.Worksheets("Blad2").Range("E" & nr).Value = iTal4
nr = nr + 1
i = i + 1
Next
'Räknar ut medelvärden
dSysDag = Round(dSysDag / i2)
dSysNatt = Round(dSysNatt / i3)
dSysDygn = Round(iTot / i)
dSysNDKvot = Round(dSysNatt / dSysDag, 2)
dSysDNKvot = Round(dSysDag / dSysNatt, 2)
dDiaDag = Round(dDiaDag / i2)
dDiaNatt = Round(dDiaNatt / i3)
dDiaDygn = Round(iTot2 / i)
dDiaNDKvot = Round(dDiaNatt / dDiaDag, 2)
dDiaDNKvot = Round(dDiaDag / dDiaNatt, 2)
dMedelTryckDag = Round(dMedelTryckDag / i2)
dMedelTryckNatt = Round(dMedelTryckNatt / i3)
dMedelTryckDygn = Round(iTot3 / i)
dMTNDKvot = Round(dMedelTryckNatt / dMedelTryckDag, 2)
dMTDNKvot = Round(dMedelTryckDag / dMedelTryckNatt, 2)
dPulsFrekvensDag = Round(dPulsFrekvensDag / i2)
dPulsFrekvensNatt = Round(dPulsFrekvensNatt / i3)
dPulsFrekvensDygn = Round(iTot4 / i)
dPFNDKvot = Round(dPulsFrekvensNatt / dPulsFrekvensDag, 2)
dPFDNKvot = Round(dPulsFrekvensDag / dPulsFrekvensNatt, 2)
Kan man göra nedanstående på nåt enklare sätt här?? Tycker att det blir väldigt många rader.
'Skriver ut medelvärden i Excel
xlBook.Worksheets("Blad1").Range("C35").Value = dSysDag
xlBook.Worksheets("Blad1").Range("C36").Value = dSysNatt
xlBook.Worksheets("Blad1").Range("C37").Value = dSysDygn
xlBook.Worksheets("Blad1").Range("C38").Value = dSysNDKvot
xlBook.Worksheets("Blad1").Range("C39").Value = dSysDNKvot
xlBook.Worksheets("Blad1").Range("D35").Value = dDiaDag
xlBook.Worksheets("Blad1").Range("D36").Value = dDiaNatt
xlBook.Worksheets("Blad1").Range("D37").Value = dDiaDygn
xlBook.Worksheets("Blad1").Range("D38").Value = dDiaNDKvot
xlBook.Worksheets("Blad1").Range("D39").Value = dDiaDNKvot
xlBook.Worksheets("Blad1").Range("E35").Value = dMedelTryckDag
xlBook.Worksheets("Blad1").Range("E36").Value = dMedelTryckNatt
xlBook.Worksheets("Blad1").Range("E37").Value = dMedelTryckDygn
xlBook.Worksheets("Blad1").Range("E38").Value = dMTNDKvot
xlBook.Worksheets("Blad1").Range("E39").Value = dMTDNKvot
xlBook.Worksheets("Blad1").Range("F35").Value = dPulsFrekvensDag
xlBook.Worksheets("Blad1").Range("F36").Value = dPulsFrekvensNatt
xlBook.Worksheets("Blad1").Range("F37").Value = dPulsFrekvensDygn
xlBook.Worksheets("Blad1").Range("F38").Value = dPFDNKvot
xlBook.Worksheets("Blad1").Range("F39").Value = dPFDNKvot
'Öppnar Excel
oExcel.Application.Visible = True
.
.
.
.
.
End Sub
</code>Sv: Visa digram i excel från Vb6?
ang. färger till koderna, klicka på svara eller ändra, läs under rubriken:
Då du besvarar frågan
EMMA!
VB:s inbyggda diagramfunktion?
Hur funkar den?? Sv: Visa digram i excel från Vb6?
som hämtar värdena från "Blad2" och skapar diagrammet i "Blad1".
Sv: Visa digram i excel från Vb6?
Se mitt uppladdade exempel i filarean, sök på graf eller flexgrid så får du upp det.
Tycker dock att den diagramfunktionen är oflexibel och mer svåranvänd än den i
Excel. Den kan vara svår att formatera som man vill m.m.
/EmmaSv: Visa digram i excel från Vb6?
Så här kan du få en mindre kodkrävande lösning till stånd:
<code>
With xlBook.Worksheets("Blad1")
.Range("C35:C39").Value = oExcel.Application.Transpose(VBA.Array(dSysDag, dSysNatt, dSysDygn, dSysNDKvot, dSysDNKvot))
'övriga cellområden hanteras på samma sätt
End With
</code>
Även i andra delar av din kod kan ovanstående komma till användning för.Sv: Visa digram i excel från Vb6?
Snyggt Dennis!
Fördelen med Excel-diagram är att dessa är mer flexibla än MSchart om jag förstått saken rätt. Men en klar nackdel med Excel är att det tar en sån jäkla tid att skriva till värdecellerna, om man vill skicka nya värden till ett diagram med 1000 poster tex. suck o pust!
Ibland lönar det sig att skapa en fil, öppna denna i Excel och kopiera över värdena. Detta går snabbare än att skriva in dom med en lop! Men ack så ful lösning...
vet ni nåt sätt att snabbt skriva i Excel-cellerna? Sv: Visa digram i excel från Vb6?
Ska lösningen köras i XL 97 och uppåt krävs en DAO-baserad lösning eller från 2000 och uppåt en ADO-baserad.
Följande är hämtat från min hemsida och demonstrerar hur vi kan hantera stora datamängder i XL mha DAO:
<code>
Sub Importera_Stora_Textfiler_DAO()
'Referens krävs till DAO Object Library
Dim stSokVag As String, stFilnamn As String, stHamtaFil As String
Dim Db As DAO.Database
Dim Rst As DAO.Recordset
Dim fsoObj As Object
stHamtaFil = Application.GetOpenFilename("Textfiler (*.txt),*.txt", , "Välj en textfil...")
If stHamtaFil = "Falskt" Then Exit Sub
Application.ScreenUpdating = False
Set fsoObj = CreateObject("Scripting.FileSystemObject")
stSokVag = fsoObj.GetFile(stHamtaFil).ParentFolder.Path
stFilnamn = fsoObj.GetFile(stHamtaFil).Name
Set Db = OpenDatabase(stSokVag, False, True, "Text;")
Set Rst = Db.OpenRecordset("SELECT * FROM " & stFilnamn)
While Not Rst.EOF
Worksheets.Add
'Här läses klumpvis 65536 poster in
ActiveSheet.Range("A1").CopyFromRecordset Rst, 65536
Wend
Rst.Close
Db.Close
Set Rst = Nothing
Set Db = Nothing
Application.ScreenUpdating = True
End Sub
</code>Sv: Visa digram i excel från Vb6?
Tack för hälpen xlDennis! Koden funkade skitbra och jag fick ner antalet rader lite.
Antar att du har ett bra svar på nästa fråga också ;). Jag vill nu kunna spara data från XL till en fil. Är det enklast att göra det i XL eller går det bra att flytta data till VB och där spara undan datat till en ny fil? Vad är smidigast?
Jag tänkte att allting ska skötas av VB(beräkningar,flytta data o.s.v), men samtidigt blir det väl lite segare också att köra så. Eller?
/JariSv: Visa digram i excel från Vb6?
[quote]
Jag vill nu kunna spara data från XL till en fil. Är det enklast att göra det i XL eller går det bra att flytta data till VB och där spara undan datat till en ny fil? Vad är smidigast?
[/quote]
Ska data återanvändas eller ska den endast sparas undan?
Om återanvändning så är det att föredra att spara i XL-format annars kan du spara excel-bladet i textformat (detta ska ske i XL med koden i din VB-app) och avsluta XL därefter i koden.
För övrigt: Ju färre punkter som förekommer i XL-kod desto snabbare kod ;-)Sv: Visa digram i excel från Vb6?
Programmet ska fungera så att när jag öppnar XL-filen(24timblt.xls) så ska de senaste sparade värdena laddas in(hämtas från en fil). Sen när jag trycker på en knapp som heter Ny patient så ska nya värden hämtas från en annan fil. Så den sparade filen kommer att användas varje gång jag öppnar XL-filen.
[quote]
Om återanvändning så är det att föredra att spara i XL-format annars kan du spara excel-bladet i textformat (detta ska ske i XL med koden i din VB-app) och avsluta XL därefter i koden.
[/quote]
XL-format? Hur menar du då? Kan man helt enkelt ta en kopia på 24timblt.xls(typ kopiera o klistra) och spara den filen under ett annat namn? Sen när man öppnar 24timblt.xls så kopieras värdena tillbaka. Hmm...låter iof lite konstigt på nåt sätt.
Om jag sparar filen i textformat hur menar du då när du säger att det ska göras i XL med min VB kod?
Jag hade fundreringar på om man kunde läsa in värden från XL till VB(variabler) och därefter spara undan värdena på en fil.
Ursäkta mina många och konstiga frågor, men det är första gången jag programmerar med XL.Sv: Visa digram i excel från Vb6?
"Ursäkta mina många och konstiga frågor, men det är första gången jag programmerar med XL."
Finns ingen anledning att be om ursäkt :-)
Det finns per se inga dumma frågor i detta sammanhang däremot finns det en massa dumma svar!!
"Så den sparade filen kommer att användas varje gång jag öppnar XL-filen."
Så här tycker jag att du förfara:
I din VB-applikation
- checka om filen 24timblt.xls finns eller inte.
- Om inte skapa den
- Öppna 24timblt.xls
- Läs in de nya posterna till 24timblt.xls
- Spara 24timblt.xls
Det finns ingen anledning till att skapa en extra textfil e d för att spara data utan all data sparas i filen 24timblt.xls.
Kan du publicera den senaste lösningen du har?
Varför jag fråga är att vi ska lägga till litet kod som gör att data läggs till tidigare data och därmed skapa löpande dataserier :-)
I nästa steg kan vi skapa ett dynamiskt namn i 24timblt.xls och låta diagrammet referera till namnet. Därmed uppdateras diagrammet automatiskt varje gång ny data läggs till ;-)
Läste din presentation och upptäckte att vi bor och verkar i samma stad ;-)Sv: Visa digram i excel från Vb6?
får man flika mellan med en fråga till?
Vad anger man om man vill att vissa bitar av ett linje diagram inte ska ritas ut?
Call frmDia.mscDia2.DataGrid.SetData(r, k, ?, nullFlag)Sv: Visa digram i excel från Vb6?
Ja, man ska aldrig sluta att förvånas. Världen är bra liten ändå.
Jag praktiserar sjukhuset här i Ösd och har fått ett litet uppdrag(24timblt.xls). Det är ett gammalt XL4 makro som inte fungerar riktigt längre. Så då tänkte jag försöka göra nåt nytt i VB.
Jag ska försöka förklara hur det "ska" fungera.
-Man tar olika tester på en patient under en viss tidsperiod (ex.vis från 22:45 till 07:30).
-Testutrustningen genererar en fil (ex.vis varden.txt) med bl.a klockslag, felkoder, felorsaker, olika mätvärden naturligtvis o.s.v.
-Jag läser av filen i VB. Plockar ut diverse värden och räknar på dem.
-Därefter skriver jag dem till XL. Medelvärden till blad1 och alla mätvärden som inte har några felkoder till blad2 där sen diagrammet ska hämta sina värden (men så långt har jag inte gjort än). Det kanske går att göra det på nåt bättre sätt.
-Sen är det meningen att man ska kunna spara värdena. Vad jag fattar så, när den sparas så sparas den under en annan fil(t.ex sparat.xls) genom kopiera/klipp och klistra.
Sen kan man avsluta XL.
-När 24timblt.xls körs på nytt så laddas de sparade värdena in antingen genom kopiera/klipp och klistra eller så döps sparat.xls om till 24timblt.xls på nåt sätt. Det kanske låter mest förnuftigt.
-Därefter så hämtar jag ny patient via knapp i XL som då ska köra VB igen som i sin tur ska läsa av varden.txt och ladda in dem i XL igen.
VB:n kommer att bara köras i bakgrunden.
Det kommer aldrig att "läggas till" data i varden.txt, utan det kommer att bli en ny fil hela tiden efter varje testperiod. Man kan säga att varje person har en egen fil.
Hängde du med? Det är lite svårt att förklara det här, men jag hoppas du förstår någorlunda.
Sitter hemma just nu (ska ha påsklov över helgen) och koderna finns på den bärbara, så jag lägger ut dem i början av nästa vecka.
Glad påsk!Sv: Visa digram i excel från Vb6?
Skulle du bli mycket besviken om jag rekommenderar att du utvecklar hela lösningen i XL?
Både beräkning och lagring av data sker bäst i XL och då du även presenterar data i diagram blir helheten av sådant slag att jag förordar XL.
Fundera på det och även vilken hjälp du behöver för att få en nöjsam lösning till stånd!
//DennisSv: Visa digram i excel från Vb6?
Det är klart om programmet i sin helhet blir bättre i XL så kunde jag kanske göra det där istället, men då får jag börja om. Och eftersom jag inte är så hemma i XL så vet jag inte riktigt hur jag ska börja.
I makrot som dem har kört tidigare så funkar inte omberäkningarna riktigt (i 2000 och 98:an hittills), men i 2002 funkar det. Vet du nånting om det? Har försökt hitta information på nätet, utan resultat.
Kommer koderna att göras i VBA (och några makron kanske)? Finns det nån tutorial eller typ "XL-skola" någonstans som man kan läsa på? Vilka XL-funktioner som finns? Din hemsida kanske?
Det är ju egentligen inte så mycket kvar i min VB applikation (spara data till VB) så den ska jag försöka göra på sidan om isåfall, och så får jag jämföra dem två programmen.
Jag tar som vanligt emot all hjälp jag kan få. Lite tips Kanske?
/JariSv: Visa digram i excel från Vb6?
Tack för hjälpen!