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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: wieder mal: DB-Werte per Script in Excel

  1. #1
    Registriert seit
    01.02.2006
    Beiträge
    212
    Danke
    33
    Erhielt 6 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen!

    Ich muss das Thema wiedermal aufnehmen, habe schon etwa 100 Beiträge hier gefunden, allerdings fehlt jedesmal der entscheidende Teil:

    Eine Anlage prüft Ventile auf Funktion und die Messdaten sollen in eine Excel-Tabelle hinterlegt werden. Bei meiner Runtime funktioniert das auch schon gut, die Daten werden per Script in die Tabelle geschrieben, wobei auch die Tabelle, die Datei und auch der Ordner erst erstellt wird. Nun sind das recht viele Prüfungen pro Tag, wodurch eben sehr viele Excel-Dateien entstehen würden. Ich hätte gerne, dass ich die Datei wieder öffnen kann und diese um eine Tabelle ergänze, dann die Daten eintragen und wieder speichern und schliessen.

    Wie gesagt, das Grundprinzip hab ich:

    Code:
    Dim IP
    Dim FrgName
    Dim OrdnerName
    Dim DateiName
    Dim erw
    Dim pfad
    
    'Parameter für Skript
    IP = "192.168.1.10"
    FrgName = "ewj"
    OrdnerName = "zgt"
    DateiName = "asd"
    erw = ".xls"
    pfad = "\\" & IP & "\" & FrgName & "\" & OrdnerName
    
    Dim fso
    Dim fil
    Dim ord
    Dim xlApp
    Dim xlWB
    Dim xlWS
    
    'File-Objekt erstellen
        Set fso = CreateObject("Scripting.FileSystemObject")                    'File-Objekt erstellen
            
    'Ordner erstellen, sofern nicht vorhanden
        If Not fso.FolderExists(pfad) Then
            Set ord = fso.CreateFolder(pfad)                                    'Ordner erstellen
        End If
        
    'Excel-Applikationen
        Set xlApp = CreateObject("Excel.Application")                            'Excel-Applikation aufrufen        
        xlApp.Visible = True                                                    'Sichtbarkeit von Excel
        
    'Excel-Datei erstellen, sofern nicht vorhanden
        If Not fso.FileExists(pfad & "\" & DateiName & erw) Then
            Set xlWB = xlApp.Workbooks.Add()                                    'Datei erstellen
            xlWB.SaveAs(pfad & "\" & DateiName & erw)                            'Datei speichern unter bestimmten Namen    
        End If    
    
    'Worksheet erstellen und Namen vergeben
        Set xlWS = xlWB.Worksheets.Add                                            'Tabelle aussuchen
        xlWS.name = (DateiName)                                                    'Tabellennamen ändern
    
    
    
    
        
    'AB HIER TEST                                            
        Dim xlWS2
        Set xlWS2 = xlWB.Worksheets.Add
        xlWS2.name = ("11123")    
        
    'ENDE TEST
    
    
    
    
        
    'Rohtabellen löschen        
        If Not xlWB.Worksheets("Tabelle1") Is Nothing Then
            xlWB.Worksheets("Tabelle1").Delete        
        End If        
        If Not xlWB.Worksheets("Tabelle2") Is Nothing Then
            xlWB.Worksheets("Tabelle2").Delete        
        End If    
        If Not xlWB.Worksheets("Tabelle3") Is Nothing Then
            xlWB.Worksheets("Tabelle3").Delete        
        End If    
    
    'Daten eintragen    
        xlWS.range("c3").Value = "Name"
        xlWS.range("d3").Value = "Jehle"
        xlWS.range("c4").Value = "Vorname"
        xlWS.range("d4").Value = "jippie"
        xlWS.range("c5").Value = "Alter"
        xlWS.range("d5").Value = "sag ich nich"
        xlWS.range("c6").Value = "Song"
        xlWS.range("d6").Value = "Pokerface"
        xlWS.range("c7").Value = "noch mehr Text"
        xlWS.range("d7").Value = "und noch mehr..."
        xlWS.range("c8").Value = "Name 1"
        xlWS.range("d8").Value = "Name 2"
        
    'Datei speichern und schliessen    
        xlApp.ActiveWorkbook.Save                                                'Datei speichern
        xlApp.ActiveWorkbook.Close                                                'Datei schliessen
        xlApp.ActiveWorkbook.Quit
        xlApp.Quit                                                                'Excel beenden
        xlApp.Visible = False                                                    'Sichtbarkeit von Excel
        Set xlApp = Nothing
    Zwischen "AB HIER TEST" und "ENDE TEST" bin ich nun dran. Denn wenn die Datei einmal geöffnet und geschlossen wurde, kann ich sie nicht mehr öffnen bzw. bekomme eben keine weitere Tabelle zugefügt. Für jeden Prüfling hätte ich gerne nur eine neue Tabelle und nicht eine komplett neue Excel-Datei.

    Also falls jemand helfen kann, wäre ich sehr dankbar, sitze schon Tage dran, VBS ist auch neu für mich, aber das obenstehende hab ich ja schon mal.

    was ich nachher habe: WCF 2008 Adv, MP277 Key per Ethernet mit Rechner mit fester IP verbunden.

    Nice day!
    Gruß

    Jelly
    Zitieren Zitieren wieder mal: DB-Werte per Script in Excel  

  2. #2
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Hast du dazu auch schon den Beitrag in der FAQ gelesen?
    http://www.sps-forum.de/showthread.php?t=15348
    Dort schreibt Larry unter anderem
    Zitat von Larry Laffer
    Hallo Volker,
    zu dem genannten FAQ hätte ich noch ein schönes Addon.
    Wenn man ständig auf Excel zugreifen möchte, um Daten dahin zu schreiben, dann kann man es auch als Instanz geöffnet lassen (mit dem richtigen Workbook) und dann ständig auf die geöffnete Instanz zugreifen. Das spart Systemresourcen ...

    die datei (EXCEL-Script.doc) ist im anhang

  3. #3
    Registriert seit
    01.02.2006
    Beiträge
    212
    Danke
    33
    Erhielt 6 Danke für 5 Beiträge

    Standard

    Danke, aber die hab ich schon etwa 47 mal angesehen. und hier wird die tabelle auch nur 1x geöffnet, seh ich das richtig? klar scheint logisch, die datei geöffnet zu lassen. aber ich weiss nie, was nach dem Prüfungsende passiert. die lassen die anlage genauso laufen, auch übers wochenende, alles bleibt an. dies könnte man in der sps erkennen, klar.
    schliessen und öffnen wäre mir nun lieber.
    Gruß

    Jelly
    Zitieren Zitieren jep  

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    ich habe das gerade mal gegen-gechecked.
    In meinem Script Schliesse (und speichere) ich das Workbook und und beende die Applikation - also so :
    Code:
    xlWB.Close
    xlApp.Quit
    ... versuch das doch mal ...

    Gruß
    LL

  5. #5
    Registriert seit
    01.02.2006
    Beiträge
    212
    Danke
    33
    Erhielt 6 Danke für 5 Beiträge

    Standard

    danke das prüf ich mal.

    was ich eben gesehen habe:
    Code:
    'Excel-Datei erstellen, sofern nicht vorhanden
        If Not fso.FileExists(pfad & "\" & DateiName & erw) Then
            Set xlWB = xlApp.Workbooks.Add()                                    'Datei erstellen
            xlWB.SaveAs(pfad & "\" & DateiName & erw)                            'Datei speichern unter bestimmten Namen    
        End If
    d.h. wenn die datei schon existiert, wird "Set xlWB = xlApp.Workbooks.Add()" ja nicht bearbeitet, was widerum heisst, dass die Datei gar nicht GEÖFFNET WIRD, sondern nur die Applikation, richtig? ich habe das nun so:

    Code:
    'Excel-Datei erstellen, sofern nicht vorhanden
        If Not fso.FileExists(pfad & "\" & DateiName & erw) Then
            Set xlWB = xlApp.Workbooks.Add()                                    'Datei erstellen und automatisch öffnen
        Else
            Set xlWB = xlApp.Workbooks.Open (pfad & "\" & DateiName & erw)        'Datei öffnen, wenn sie bereits existiert
        End If    
        xlWB.SaveAs(pfad & "\" & DateiName & erw)
    damit kann ich die datei auch wieder öffnen. klapt prima nun!

    nur was noch ist, dass beim speichern die Datei überschrieben wird, worauf eine Rückfrage erscheint. Das überschreiben soll aber automatisch gehen.
    und KILL geht nicht, da ich sonst meine anderen daten lösche...
    Gruß

    Jelly

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    ... da gab es auch noch was ... versuch mal :
    Code:
    xlWB.Close true
    .. die Meldung müßte beim Schliessen desd Workbooks kommen und nicht beim Speichern ...

    Gruß
    LL

  7. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    Jelly (19.04.2010)

  8. #7
    Registriert seit
    01.02.2006
    Beiträge
    212
    Danke
    33
    Erhielt 6 Danke für 5 Beiträge

    Standard

    also soweit hab ich es mal. Nun läufts per Runtime sehr gut, freu!

    nun kommt das große ABER:
    was ich nicht beachtet habe (sicher ein Neulings-Fehler): mit der Runtime funzt es ja, nur nicht im Panel.
    der bisherige Text sieht so aus:

    Code:
    Dim IP
    Dim FrgName
    Dim OrdnerName
    Dim DateiName
    Dim erw
    Dim pfad
    
    'Parameter für Skript
    IP = "192.168.1.10"
    FrgName = "ewj"
    OrdnerName = "zgt"
    DateiName = "asd"
    erw = ".xls"
    pfad = "\\" & IP & "\" & FrgName & "\" & OrdnerName
    
    Dim fso
    Dim fil
    Dim ord
    Dim xlApp
    Dim xlWB
    Dim xlWS
    
    'File-Objekt erstellen
          Set fso = CreateObject("Scripting.FileSystemObject")                        'File-Objekt erstellen
            
    'Ordner erstellen, sofern nicht vorhanden
        If Not fso.FolderExists(pfad) Then
            Set ord = fso.CreateFolder(pfad)                                    'Ordner erstellen
        End If
        
    'Excel-Applikationen
        Set xlApp = CreateObject("Excel.Application")                            'Excel-Applikation aufrufen        
        xlApp.Visible = True                                                    'Sichtbarkeit von Excel
        
    'Excel-Datei erstellen, sofern nicht vorhanden und dann öffnen
        If Not fso.FileExists(pfad & "\" & DateiName & erw) Then
            Set xlWB = xlApp.Workbooks.Add()                                    'Datei erstellen und automatisch öffnen
            xlWB.SaveAs(pfad & "\" & DateiName & erw)                            'Datei speichern unter bestimmten Namen    
        Else
            Set xlWB = xlApp.Workbooks.Open (pfad & "\" & DateiName & erw)        'Datei öffnen, wenn sie bereits existiert
            xlWB.Save                                                            'Datei speichern
        End If    
                                        
            
    'Worksheet erstellen und Namen vergeben
        Set xlWS = xlWB.Worksheets.Add                                            'Tabelle aussuchen
        xlWS.name = ("6680")                                                    'Tabellennamen ändern
    
    'Rohtabellen löschen        
        If Not xlWB.Worksheets("Tabelle1") Is Nothing Then
            xlWB.Worksheets("Tabelle1").Delete        
        End If        
        If Not xlWB.Worksheets("Tabelle2") Is Nothing Then
            xlWB.Worksheets("Tabelle2").Delete        
        End If    
        If Not xlWB.Worksheets("Tabelle3") Is Nothing Then
            xlWB.Worksheets("Tabelle3").Delete        
    End If    
    
    'Daten eintragen    
        xlWS.range("c3").Value = "Prüfprogramm"    
        xlWS.range("c4").Value = "Prüflingsnummer"
        xlWS.range("c8").Value = "Datum"
        xlWS.range("d8").Value = "Uhrzeit"
        
    'Datei speichern und schliessen    
        xlApp.ActiveWorkbook.Save                                                'Datei speichern
        xlApp.ActiveWorkbook.Close                                                 'Datei schliessen
        xlApp.ActiveWorkbook.Quit
        xlApp.Quit                                                                'Excel beenden
        xlApp.Visible = False                                                    'Sichtbarkeit von Excel
        Set xlApp = Nothing
    das nützt aber recht wenig, richtig?

    weiss nun jemand, ob das alles fürn Eimer ist?
    was sicher sein muss ist, dass ich in eine neue Excel-Tabelle Daten eintragen soll, eine csv oder so tuts nicht...
    und eigentlich ist es ja nur der code der die Datei erzeugt usw. richtig?
    hat jemand hilfe?
    Gruß

    Jelly
    Zitieren Zitieren nun so weit...  

  9. #8
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    damit das Ganze funktioniert muß auf dem Rechner Excel installiert sein. Wenn dein Panel ein Panel-PC ist, dann sehe ich da kein Problem - allerdings schon bei einem Multipanel oder noch darunter ...

    Gruß
    LL

  10. #9
    Registriert seit
    01.02.2006
    Beiträge
    212
    Danke
    33
    Erhielt 6 Danke für 5 Beiträge

    Standard

    dann hab ich wohl ins schwarze gegriffen....
    habe ein mp277 Key

    auf dem Empfangs-rechner ist excel drauf, ja. auf dem panel natürlich nicht.

    oje...
    Gruß

    Jelly
    Zitieren Zitieren hm  

  11. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.709
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... du mußt dabei berücksichtigen, dass in dem Script die Fähigkeiten und Eigenschaften von Excel (lokal installiert) genutzt werden ...

    Was hast du nun vor ?
    CSV wäre ja auch noch ein Weg und auf dem PC ggf. eine Art Import initiieren ...

Ähnliche Themen

  1. Antworten: 15
    Letzter Beitrag: 04.04.2011, 12:18
  2. Excel Werte in DB schreiben?
    Von Poldi007 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 28.03.2010, 16:25
  3. Antworten: 4
    Letzter Beitrag: 17.03.2009, 13:10
  4. Werte in Excel übertragen
    Von Fluffi im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 28.11.2007, 21:19
  5. DB-Baustein (Werte) ins EXCEL übertragen
    Von ernestol im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 05.03.2006, 19:02

Lesezeichen

Berechtigungen

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