none
Mit vb.net in einem SSIS Paket einen Screenshot eines Bereichs eines Excel Tabellenblatts erzeugen. RRS feed

  • Allgemeine Diskussion

  • Hallo,

    ich bekomme jeden Monat mehrere Excel Dateien deren Tabellenblätter am Ende Aufsummireungen enthalten.
    Von diesen Aufsummierungen benötige ich neuerdings einen Screenshot.
    Da ich die Daten dieser Dateien/Tabellen eh schon mit vb.net bearbeite, habe ich gedacht das ich dann auch gleich die Screenshots erstellen kann, da ich an der Stelle jeweils weiß, welchen Bereich ich benötige.
    Diese Bereiche sind in jeder Tabelle andere.

    Für Excel VBA hab ich dazu zwar etwas gefunden aber in vb.net finde ich nichts analoges.

    Hat jemand eine Idee, wie ich das mit vb.net hin bekommen kann?

    Gruß

    cheapy

    Freitag, 20. Oktober 2017 08:37

Alle Antworten

  • Warum einen Screenshot, wenn du die Daten sowieso abgreifst?
    Das Problem ist hier tatsächlich, dass es nicht funktioniert, wenn Excel im Hintergrund und unsichtbar läuft.
    Ohne einen Bildschirm wird nämlich nichts gezeichnet.

    Du muss dann Excel sichtbar machen, das Tabellenblatt auswählen, die Zellen noch in den sichtbaren Bereich rollen.
    Anschließend kannst du aus dem Applicaten-Objekt auf die hWnd-Eigenschaft zugreifen um die Bildschirmkoordinaten abzufragen. Anschließend kannst du vom .NET-Screen-Objekt einen Screenshot machen:

    http://www.pinvoke.net/default.aspx/user32.getwindowrect

    https://stackoverflow.com/questions/5049122/capture-the-screen-shot-using-net

    Machst du das z.B. in einer unbeaufsichtigten Task funktioniert dies nicht, da du keinen sichbaren Screen hast und die Zeichnungsroutinen gar nicht aufgerufen werden.

    Freitag, 20. Oktober 2017 09:20
  • Könnte man nicht anstelle dessen, den Druck zu pdf bemühen? Früher ging doch auch mal Tiff. Und ich bin sicher da gibt es auch Anbieter für andere Formate.

    Das wäre dann sicher ein automatisierbarer Weg. Screenshot klingt so manuell nach Steinzeit-IT


    Andreas Wolter (Blog | Twitter)
    MCSM: Microsoft Certified Solutions Master Data Platform/SQL Server 2012
    MCM SQL Server 2008
    MVP Data Platform MCSE Data Platform
    MCSM Charter Member, MCITP Charter Member etc.
    www.SarpedonQualityLab.com
    (Founder)

    Samstag, 21. Oktober 2017 07:22
  • Natürlich kannst du auch dieses tun.
    In Office gibt es die integrierte Export-Funktion in PDF/XPS.
    Per Makroaufzeichung kann man es verfolgen und per Application-Objekt dann nachvollziehen.
    Dies eignet sich besser als PDF-Writer, da diese i.d.R. einen Dialog zur Namensvergabe hochbringen.
    Samstag, 21. Oktober 2017 07:48
  • Im Endefekt soll es auch ein pdf werden und für Office habe ich schon eine Lösung, die ich in mein Outlook einbauen könnte. Dort wird diese Datei eh schon in das benötigte Verzeichnis kopiert und der Verarbeitungsjob in der SQL-Server Datenbank gestartet.

    Das Problem ist halt, dass das alles in meinem Outlook läuft und nicht, wenn die Kollegen diesen Verarbeitungsjob mal manuell starten, weil z.B. mein PC mal off ist.

    Samstag, 21. Oktober 2017 15:34
  • Dann kann man das Ganze auch in eine .vbs-Datei (VBScript) auslagern und diese wahlweise von Outlook oder manuell aufrufen, da vbs-Dateien von "cscript.exe" ausgeführt werden und, vbs is ähnlich vba mit dem Unterschied dass eine Variable typlos ist, also grundsätzlich vom Typ Variant:
    VBA: Dim MyVar as VarType
    VBS: Dim MyVar
    Sonntag, 22. Oktober 2017 07:23