PCAN EXP 5 VBScript-Makros mit MS-Excel verbinden

Comprehensive CAN monitor for Windows® and its add-ins: Plotter, CANdb Import, Instruments Panel, and J1939
Locked
Zeusbey2
Posts: 2
Joined: Fri 15. Nov 2013, 13:11

PCAN EXP 5 VBScript-Makros mit MS-Excel verbinden

Post by Zeusbey2 » Fri 29. Nov 2013, 13:58

Hallo leute,
ich habe ein Problem bei transmission von Daten über send/empfang fenster oder makro zu Excel.
1.ich bin ne Anfänger
2.Bei Makro durchführung öffnen sich die Excel schon aber die Spalten sind leer
so sieht mein Programme aus:

Code: Select all

 Dim RcvMsg
   Set RcvMsg = MyClient.Messages.Add

 Dim Spannung, Strom, power, nowstop, old_Spannung, old_current
 ' row counter for sheet
 Dim g_CellCount

 PrintToOutputWindow "create Excel connection"  
 Set objXL = CreateObject("Excel.Application") 
 objXL.Visible = True ' make it visible...also possible to bring to top
 Set wbXL = objXL.Workbooks.Add()' ' New sheet
 Set sXL = wbXL.Worksheets(1) ' goto Sheet1 

 ' write Header
 sXL.Cells(1,1) = "PEAK-System Technik PCAN-Explorer5 VBS Excel Demo (c)2013 PEAK Darmstadt"
 sXL.Cells(3,1) = "No."
 sXL.Cells(3,2) = "Spannung"
 sXL.Cells(3,3) = "Strom"
 sXL.Cells(3,4) = "Power"

 
 Set Spannung = RcvMsg.ID.Data(5)
 Set Strom = Signals("Strom")
 g_CellCount=4
 nowstop = false
 
 Set power = Signals("Power")
 If power Is Nothing Then
    ' Signal not found, create and initialize new one
    Set power = Signals.Add("Power")
    power.DataType = peDataTypeFloat
 End If

 PrintToOutputWindow "Start record"  
 While nowstop = false
    'power.Value = Spannung.Value * Strom.Value
    Wait(10)	' Prevent 100% CPU load
    ' WriteToExcel if a value is changed
    if(old_Spannung <> Spannung.Value or old_Strom <> Strom.Value) Then
        PrintToOutputWindow "write row in Excel"  
        ' write directly into Excel sheet
    	sXL.Cells(g_CellCount,1) = g_CellCount-3
 	    sXL.Cells(g_CellCount,2) = Spannung.Value
	    sXL.Cells(g_CellCount,3) = Strom.Value
	    sXL.Cells(g_CellCount,4) = power.Value
	    old_Spannung = Spannung.Value
        old_Strom = Strom.Value
	    g_CellCount=g_CellCount+1
Last edited by M.Gerber on Fri 29. Nov 2013, 14:29, edited 1 time in total.
Reason: [code]-Tag eingefügt wegen Übersichtlichkeit

User avatar
PEAK-Support
Sales & Support
Sales & Support
Posts: 1646
Joined: Fri 10. Sep 2010, 19:34

Re: PCAN EXP 5 VBScript-Makros mit MS-Excel verbinden

Post by PEAK-Support » Fri 29. Nov 2013, 14:52

Hmm...sieht aus wie ein Teil meines Bsp. Codes zum Speichern von CAN Daten in Excel...
Aber auch nur ein Teil davon. Bitte mal das original Bsp. nehmen und durchlesen und verstehen - dann editieren und sich in VBS einlesen.
Was sollen wir denn jetzt mit den paar Zeilen Code anfangen :?:
Wer soll denn darauf eine Antwort geben :?:
Was geht denn nicht, und wie soll man wissen was nicht geht wenn 2/3 des Codes fehlt :?:
--------------------------------
PEAK-System Technik
Technical Support Team
support[at]peak-system.com
-------------------------------

Zeusbey2
Posts: 2
Joined: Fri 15. Nov 2013, 13:11

Re: PCAN EXP 5 VBScript-Makros mit MS-Excel verbinden

Post by Zeusbey2 » Mon 2. Dec 2013, 09:58

Hallo,
Danke für den Rückmeldung.ich will mein RcsMsg(Hexa) von CAN als Excel datei(dezimal) erstellen und zwar mit Verschieden IDs. ich versuche gerade dass es mir überhaupt was anzeigt danach kann ich es convertiren.

Code: Select all

 Dim RcvMsg
 Set RcvMsg = MyClient.Messages.Add

 Dim Spannung, Strom, power, nowstop, old_Spannung, old_current
 ' row counter for sheet
 Dim g_CellCount

 PrintToOutputWindow "create Excel connection"  
 Set objXL = CreateObject("Excel.Application") 
 objXL.Visible = True ' make it visible...also possible to bring to top
 Set wbXL = objXL.Workbooks.Add()' ' New sheet
 Set sXL = wbXL.Worksheets(1) ' goto Sheet1 

 ' write Header
 sXL.Cells(1,1) = "PEAK-System Technik PCAN-Explorer5 VBS Excel Demo (c)2013 PEAK Darmstadt"
 sXL.Cells(3,1) = "No."
 sXL.Cells(3,2) = "Spannung"
 sXL.Cells(3,3) = "Strom"
 sXL.Cells(3,4) = "Power"

 
 Set Spannung = RcvMsg.ID
 Set Strom = Signals("Strom")
 g_CellCount=4
 nowstop = false
 
 Set power = Signals("Power")
 If power Is Nothing Then
    ' Signal not found, create and initialize new one
    Set power = Signals.Add("Power")
    power.DataType = peDataTypeFloat
 End If

 PrintToOutputWindow "Start record"  
 While nowstop = false
    'power.Value = Spannung.Value * Strom.Value
    Wait(10)	' Prevent 100% CPU load
    ' WriteToExcel if a value is changed
    if(old_Spannung <> Spannung.Value or old_Strom <> Strom.Value) Then
        PrintToOutputWindow "write row in Excel"  
        ' write directly into Excel sheet
    	sXL.Cells(g_CellCount,1) = g_CellCount-3
 	    sXL.Cells(g_CellCount,2) = Spannung.Value
	    sXL.Cells(g_CellCount,3) = Strom.Value
	    sXL.Cells(g_CellCount,4) = power.Value
	    old_Spannung = Spannung.Value
        old_Strom = Strom.Value
	    g_CellCount=g_CellCount+1
	    ' if 200 values writte, save file and close Excel (we do not chekc if file exist)
	    if g_CellCount > 200 Then
	    	PrintToOutputWindow "reach the 200 value limit - noe save file (be sure you have rights to this folder!)"
    		wbXL.SaveAs("d:\temp\PowerExcel_Data.xls")
	    	' quit Excel
    		objXL.Application.Quit
    		' set global stop flag to true
    		nowstop=true
	    End If	
	End If    
 Wend ' if stop flag set ...bye bye
 PrintToOutputWindow "End Macro"  

End Sub
Last edited by M.Gerber on Tue 3. Dec 2013, 12:33, edited 1 time in total.
Reason: [Code]-Tag

User avatar
PEAK-Support
Sales & Support
Sales & Support
Posts: 1646
Joined: Fri 10. Sep 2010, 19:34

Re: PCAN EXP 5 VBScript-Makros mit MS-Excel verbinden

Post by PEAK-Support » Mon 2. Dec 2013, 10:18

Sie haben nun unser Bsp. gepostet - schön das es Ihnen gefällt - aber das es funktioniert wissen wir ja (wenn man die passende Symboldatei damit verwendet)

Es wird aber auch nur in das Excel Sheet geschrieben wenn sich der Strom oder Spannungswert zum Vorwert geändert hat.

Code: Select all

' WriteToExcel if a value is changed
if(old_Spannung <> Spannung.Value or old_Strom <> Strom.Value) Then
PrintToOutputWindow "write row in Excel" 
' write directly into Excel sheet
sXL.Cells(g_CellCount,1) = g_CellCount-3
sXL.Cells(g_CellCount,2) = Spannung.Value
sXL.Cells(g_CellCount,3) = Strom.Value
sXL.Cells(g_CellCount,4) = power.Value
old_Spannung = Spannung.Value
old_Strom = Strom.Value
g_CellCount=g_CellCount+1
Wenn dann 200 Zeilen geschrieben wurden, also 200 mal ein anderer Wert eingetragen wurde, wird die Tabelle gespeichert.

Code: Select all

' if 200 values writte, save file and close Excel (we do not chekc if file exist)
if g_CellCount > 200 Then
PrintToOutputWindow "reach the 200 value limit - noe save file (be sure you have rights to this folder!)"
wbXL.SaveAs("d:\temp\PowerExcel_Data.xls")
' quit Excel
objXL.Application.Quit
' set global stop flag to true
nowstop=true
End If
Soweit die Info was die paar Zeilen Code machen. Aber ich denke das man Grundlagen im Programmieren haben sollte um Scripte selber zu schreiben - paste & copy wird auf Dauer nichts. Und wir können keinen Grundlagenkurs im VBS programmieren mit unserem Support abdecken.
Deswegen: Thread closed... :mrgreen:
--------------------------------
PEAK-System Technik
Technical Support Team
support[at]peak-system.com
-------------------------------

Locked