Hilfe bei Code (Speicherort auswählen)

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm TextBox
Bild

Betrifft: Hilfe bei Code (Speicherort auswählen)
von: Michael
Geschrieben am: 20.11.2015 11:10:36

Hallo,
ich habe folgenden Code im Netz gefunden, welcher mir die Möglichkeit bietet das aktive Fenster als Bitmap zu speichern (soll später als Email verschickt werden):

Public Sub prcSave_Picture_Active_Window()  
    Dim hWnd As Long 
    Dim udtRect As RECT 
    Sleep 3000  
    hWnd = GetForegroundWindow 
    GetWindowRect hWnd, udtRect 
    stdole.SavePicture hDCToPicture(GetDC(0&), udtRect.Left, udtRect.Top, _ 
        udtRect.Right - udtRect.Left, udtRect.Bottom - udtRect.Top), _ 
        "D:\Eigene Dateien\Screenshot.bmp" 
End Sub 
Ich wollte euch VBA Profis fragen wie ich diesen Code anpassen müsste, so dass jedes mal gefragt wird wo abgespeichert werden soll?
Hier der gesamte Code:
http://www.office-loesung.de/ftopic208796_0_0_asc.php
Danke,
Michael

Bild

Betrifft: AW: Hilfe bei Code (Speicherort auswählen)
von: Herbert Grom
Geschrieben am: 20.11.2015 11:28:03
Hallo Michael,
so müsste es gehen:

   Dim sWorkBookName$, vFile As Variant
   
   '* Dialog zum öffnen einer Datei
      vFile = Application.GetOpenFilename
      If vFile = False Then Exit Sub
      Workbooks.Open vFile
      sWorkBookName = Dir(vFile)
Servus

Bild

Betrifft: AW: Hilfe bei Code (Speicherort auswählen)
von: Michael
Geschrieben am: 20.11.2015 11:37:55
Hallo Herbert,
leider ist der Code für mich ungeeignet.
Beim öffnen der Excel Datei wird diese automatisch geschützt. Der User bekommt nur eine Userform zu sehen wo er seine Eingaben machen kann. Mit einem Klick auf Add werden die Daten in Excel gespeichert. Das Bild was momentan erstellt wird ist nur ein Screenshot von der Userform (das Active Window) die zusätzlich noch per Email verschickt werden soll.
Ich denke man müsste bei diesme Teil des Codes ansetzen:

stdole.SavePicture hDCToPicture(GetDC(0&), udtRect.Left, udtRect.Top, _ 
        udtRect.Right - udtRect.Left, udtRect.Bottom - udtRect.Top), _ 
        "D:\Eigene Dateien\Screenshot.bmp" 
momentan ist ein fester Speicherort vorgegeben. Dieser müsste dynamisch anpassbar sein wo der User gefragt wird ob er die Datei zB auf dem Desktop abspeichern will.
Gruß
Michael

Bild

Betrifft: AW: Hilfe bei Code (Speicherort auswählen)
von: Herbert Grom
Geschrieben am: 20.11.2015 11:40:34
Hallo Michael,
wenn Du die gesuchte AM direkt öffnen willst, dann kannst Du es auch damit probieren:

Application.Dialogs(xlDialogFindFile).Show

Servus

Bild

Betrifft: AW: Hilfe bei Code (Speicherort auswählen)
von: Michael
Geschrieben am: 20.11.2015 11:45:09
So kann ich anscheinend aber nur etwas öffnen, keine Möglichkeit zum abspeichern ersichtlich oder aber ich hab den Code falsch eingebaut :(

Bild

Betrifft: AW: Hilfe bei Code (Speicherort auswählen)
von: Herbert Grom
Geschrieben am: 20.11.2015 12:01:07
Sorry Michael,
aber ich habe Deine Frage nicht richtig gelesen. Du suchst ja etwas zum speichern und nicht zum öffnen! Wer lesen kann, ist echt im Vorteil! ;o)=)
Rudis Lösung ist sicher die korrekte!
Sorry noch mal!
Servus

Bild

Betrifft: AW: Hilfe bei Code (Speicherort auswählen)
von: Michael
Geschrieben am: 20.11.2015 12:08:09
Danke trotzdem für deine Mühe!

Bild

Betrifft: AW: Hilfe bei Code (Speicherort auswählen)
von: Rudi Maintaire
Geschrieben am: 20.11.2015 11:58:16
Hallo,

Sub prcSave_Picture_Active_Window()
  Dim sFile
  Dim hWnd As Long
  Dim udtRect As RECT
  sFile = Application.GetSaveAsFilename _
    (InitialFileName:=ActiveWorkbook.Path, _
    filefilter:="Bitmaps,*.bmp")
  If sFile <> False Then
    Sleep 3000
    hWnd = GetForegroundWindow
    GetWindowRect hWnd, udtRect
    stdole.SavePicture hDCToPicture(GetDC(0&), udtRect.Left, udtRect.Top, _
      udtRect.Right - udtRect.Left, udtRect.Bottom - udtRect.Top), _
      sFile
  End If
End Sub
Gruß
Rudi

Bild

Betrifft: AW: Hilfe bei Code (Speicherort auswählen)
von: Michael
Geschrieben am: 20.11.2015 12:07:50
Auch Dir ein Dank Rudi,
dein Code funktioniert, leider bekomme ich ein Blanko Bild. Hab es mal angefügt. Keine Vorstellung warum dieses Ergebnis dabei rum kommt. Die Userform ist eigentlich komplett gefüllt mit zahlreichen TextBoxen.
Userbild
Kann es sein, dass Bitmap im Vergleich zu jpg unglaublich viel Speicher braucht?
Gruß
Michael

Bild

Betrifft: AW: Hilfe bei Code (Speicherort auswählen)
von: Rudi Maintaire
Geschrieben am: 20.11.2015 12:11:57
Hallo,
Keine Vorstellung warum dieses Ergebnis dabei rum kommt.
Ich auch nicht.
Kann es sein, dass Bitmap im Vergleich zu jpg unglaublich viel Speicher braucht?
ja. Bitmap ist kein komprimiertes Format.
Gruß
Rudi

Bild

Betrifft: AW: Hilfe bei Code (Speicherort auswählen)
von: Michael
Geschrieben am: 20.11.2015 12:20:36
Rudi,
der Fehler liegt wohl daran, dass das Fenster mit der Auswahl des Speicherortes die Userform überlagert. Ziehe ich das Auswahlfenster auf den anderen Monitor und speichere dann, dann funktioniert es. Hast Du ne Idee wie man das umgehen könnte? Vielleicht in den Zwischenspeicher laden und dann das Auswahlfenster öffnen lassen?
Kann ich nachträglich den Code so anpassen das jpg anstatt bmp verwendet wird?
Gruß
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Hilfe bei Code (Speicherort auswählen)"