Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 8 von 8

Thema: WinCC-Variablenwerte in Excel-Sheet eintragen

  1. #1
    Registriert seit
    02.05.2006
    Beiträge
    47
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen!

    Ich möchte aus meinem WinCC-Projekt heraus zu bestimmten Zeiten Prozesswerte in eine vorgefertigte Excel-Tabelle eintragen. Vom Prinzip her soll das so ablaufen:

    -Beim Start einer Schrittkette in der Steuerung soll im Hintergrund von WinCC eine vorgefertigte Excel-Tabelle geöffnet werden.
    ->Während der Schrittkette werden zu bestimmten Zeiten Variablenwerte in bestimmte Zellen des Excel-Sheets eingetragen.
    ->Nach Beenden der Schrittkette soll die Datei automatisch abgespeichert werden. Dabei soll der Wert einer WinCC-Textvariablen als Dateiname übernommen werden.

    Ist dies mit WinCC möglich. Der Siemens-Support hat mich auf das OPC-DA-Beispiel in der WinCC-Hilfe verwiesen, aber da ich von VB keine Ahnung habe, komme ich damit nicht zurecht .

    Vielen Dank für Eure Hilfe!
    Zitieren Zitieren WinCC-Variablenwerte in Excel-Sheet eintragen  

  2. #2
    Registriert seit
    22.04.2005
    Beiträge
    100
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hi, versuche es mal damit.
    leider konnte ich es nicht testen.


    Dim DATA1
    Dim DATA2
    Dim SFC_RUN
    Dim Dateiname
    Dim objExcelApp

    Set DATA1 = HMIRuntime.Tags("DATA1")
    Set DATA2 = HMIRuntime.Tags("DATA2")
    Set SFC_RUN = HMIRuntime.Tags("SFC_RUN")
    Set Dateiname = HMIRuntime.Tags("Dateiname")
    Set objExcelApp = CreateObject("Excel.Application")

    objExcelApp.Visible = False
    objExcelApp.Workbooks.Open Dateiname.Read(1)
    If SFC_RUN.Read(1) = 1 Then
    objExcelApp.Range("A4").Select
    objExcelApp.ActiveCell.FormulaR1C1 = "Wert 1:"
    objExcelApp.Range("A5").Select
    objExcelApp.ActiveCell.FormulaR1C1 = "Wert 2:"
    objExcelApp.Range("A6").Select
    objExcelApp.ActiveCell.FormulaR1C1 = "Summe:"
    objExcelApp.Range("B4").Select
    objExcelApp.ActiveCell.FormulaR1C1 = DATA1.Read(1)
    objExcelApp.Range("B5").Select
    objExcelApp.ActiveCell.FormulaR1C1 = DATA2.Read(1)
    objExcelApp.Range("B6").Select
    objExcelApp.ActiveCell.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"
    Else
    objExcelApp.ActiveWorkbook.Save
    objExcelApp.Workbooks.Close
    objExcelApp.Quit
    Set objExcelApp = Nothing
    End If

  3. #3
    MKP ist offline Benutzer
    Themenstarter
    Registriert seit
    02.05.2006
    Beiträge
    47
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Vielen Dank für die schnelle Antwort!

    Könntest du das Script vielleicht kommentieren? Ich habe wie gesagt von VB keine Ahnung. Habe daher Schwierigkeiten, meine Variablen in das Script einzubauen, einen Pfad zuzuordnen usw.

    Muss ich das Script als globale Aktion ausführen, oder kann ich es z.B. als Aktion auf einen Button legen?

  4. #4
    MKP ist offline Benutzer
    Themenstarter
    Registriert seit
    02.05.2006
    Beiträge
    47
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hab das Script jetzt hinbekommen. Nur zwei Sachen bereiten mir noch Kopfzerbrechen:

    - Ich möchte die Excel Datei unter dem Namen einer Variablen in einem bestimmten Pfad speichern. Wie bringe ich die Variable in der Pfadangabe unter?

    - Wie kann ich in VB Datum und Uhrzeit auslesen und ebenfalls in das Excel-Sheet übertragen?

    Vielen Dank für Eure Hilfe!

  5. #5
    Registriert seit
    22.04.2005
    Beiträge
    100
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    objExcelApp.Workbooks.Open "c:\pfad\" + Dateiname.Read(1)

    und schaue dir mal die date und time funktionen an.

  6. #6
    Registriert seit
    22.04.2005
    Beiträge
    100
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    vielleicht kannst du das auch gebrauchen.

    Dim strFilename, Dialog, fso, Filename
    Set Dialog = CreateObject("MSComDlg.CommonDialog")

    'Explorer-Dialog zum Speichern von Dateien
    'Titelzeile
    Dialog.MaxFileSize = 260 ' Init buffer (NECESSARY!)
    'Dialog.Flags = &H1004 ' Datei muss vorhanden sein
    Dialog.Flags = &H0004 ' datei muss nicht vorhanden sein

    'Filter setzen
    Dialog.Filter = "All Files (*.*)|*.*|" & "Excel Files (*.xls) |*.xls*|"

    Dialog.DialogTitle = "Save Current Values"

    ' Filter auf xls setzen
    Dialog.FilterIndex = 2

    'Flags setzen: Explorer-Dialog mit langen Dateinamen
    Dialog.Flags = &H1814

    'Dialog.ShowOpen
    Dialog.ShowSave

    Filename = Dialog.Filename
    Filename = Filename & ".xls"

    Set Dialog = Nothing
    Zitieren Zitieren dialog script  

  7. #7
    MKP ist offline Benutzer
    Themenstarter
    Registriert seit
    02.05.2006
    Beiträge
    47
    Danke
    1
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Ich möchte die Variante "Speichern unter" verwenden, da ich auf ein vorgefertigtes Excel-Sheet zugreife. Die Anweisung sieht folgendermaßen aus:

    objExcelApp.ActiveWorkbook.SaveAs "D:\Ordner\... .xls"

    An die Stelle '...' muss ich nur irgendwie meinen Dateinamen bringen.

    Die Date- und die Time-Funktion habe ich mir in der VB-Hilfe angeschaut. Aber die Übertragung der Werte in Excel funktioniert nicht mit der gleichen Syntax wie bei den WinCCVariablen.

  8. #8
    Registriert seit
    22.04.2005
    Beiträge
    100
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    wenn ich das richtig vestehe, möchtest du eine vorlage bearbeiten und unter einem anderen namen speichern?

    zu 1.
    mein vorschlag wäre die vorlage zuerst in die neue datei zu kopieren und dann diese über das script zu füllen und speichern.

    Das folgende Beispiel zeigt die Verwendung der Copy-Methode:
    Dim fso, MeineDatei
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set MeineDatei = fso.GetFile("c:\vorlage.xls")
    MeineDatei.Copy "c:\ergebnisse.xls"
    zu 2.
    objExcelApp.ActiveWorkbook.SaveAs "D:\Ordner\"+ Dateiname.Read(1) +".xls"

    zu 3.
    objExcelApp.Range("B4").Select
    objExcelApp.ActiveCell.FormulaR1C1 = Time
    objExcelApp.Range("B5").Select
    objExcelApp.ActiveCell.FormulaR1C1 = Date

Ähnliche Themen

  1. Variablenwerte halbieren sich ohne Grund
    Von TaffySD im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 27.05.2010, 13:11
  2. Variablenwerte in Tabellenform anzeigen
    Von -Andreas- im Forum HMI
    Antworten: 0
    Letzter Beitrag: 04.12.2009, 14:07
  3. Antworten: 10
    Letzter Beitrag: 03.09.2008, 07:43
  4. WinCC2005flex... S5T Zeit eintragen...
    Von AndreK im Forum HMI
    Antworten: 2
    Letzter Beitrag: 06.03.2008, 12:18
  5. Daten in Tabelle eintragen
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 02.07.2004, 13:53

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •