Fragensteller
Mit vb.net in einem SSIS Paket einen Screenshot eines Bereichs eines Excel Tabellenblatts erzeugen.

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
- Typ geändert Ivan DragovMicrosoft contingent staff, Moderator Montag, 30. Oktober 2017 08:24 Keine Rückmeldung
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.
-
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) -
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. -
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.
-
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