Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1140to1144
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Userform kopieren und als als Grafik einfügen
Pepi
Hallo zusammen
Ich möchte ein Userform kopieren und als Grafik wieder einfügen, damit ersichtlich ist mit welchen Basiswerten eine Tabelle erstellt wurde (Basiswerte werden über Userform eingegeben)
Ctrl-Alt-Printscreen oder ein Bildschirmprogramm (Snagid) geht nicht, da dies automatisch auf Knopfdruck geschehen muss
vielen Dank für Eure Unterstützung
Pepi
AW: Userform kopieren und als als Grafik einfügen
22.02.2010 13:20:05
Uwe
Hallo Pepi,
Option Explicit
Private Declare Sub keybd_event Lib "User32" _
(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Sub CommandButton1_Click()
keybd_event &H2C, 1, 0, 0
DoEvents
With ActiveSheet
.Paste .Range("D4")
End With
End Sub
Gruß Uwe
AW: Userform kopieren und als als Grafik einfügen
22.02.2010 14:27:53
Pepi
Hallo Zusammen
Vom Code her, verstehe ich nicht genau was das Programm macht, doch es öffnet ein mir bisher unbekanntes Programm "PrintKey 2000", das mir erlaubt die UserForm als Bild zu speichern oder auch zu verändern.
Doch möchte ich ohne Umwege die Userform direkt als Grafik auf dem gleichen Tabellenblatt wie die Original-userfom hinkopieren (aber als Grafik)
Bin dankbar für weitere Tipps
Pepi
Anzeige
Was das Programm macht ist einfach...
22.02.2010 14:34:38
Renee
Pepi,
Es schickt einen Tastatur-Event von Alt-PrintScreen an die Applikation.
Diese Windows-Standard-Tastenfolge plaziert einen Screenshot des aktiven Fensters (deine UF) ins Clipboard und mit .Paste würde es wieder ausgelesen.
Da du anscheinend ein Programm hast, dass diesen Event abfängt kann dir schwerlich geholfen werden.
Das ist halt, wenn man nicht bei den installierten Standards bleibt.
GreetZ Renée
AW: Was das Programm macht ist einfach...
22.02.2010 14:45:05
Pepi
Hallo Renée
Schon gut wegen Standards. Neuer PC, habe kein einziges Programm installiert.
Doch ich sollte ich statt Alt-Printscreen "Ctrl-Alt-Printscreen" haben, damit nur das Fenster kopiert wird - dann würde es gehen, wie heisst denn der Code dafür?
vielen Dank
Pepi
Anzeige
AW: Was das Programm macht ist einfach...
22.02.2010 15:53:03
Uwe
Hallo Pepi,
teste mal das.
Gefunden auf
http://www.xlam.ch/pos/code.htm#Screen%20Shot%20eines%20Benutzerformulares%20in%20die%20Zwischenablage%20erstellen
' **************************************************************
'  Modul:  UserForm1  Typ = Userform
Option Explicit
Private Sub CommandButton1_Click()
Me.Repaint
Call UserFormScreenShot
With ActiveSheet
.Paste .Range("D4")
End With
End Sub
'  Modul:  Modul1  Typ = Allgemeines Modul
Option Explicit
Type RECT_Type
left As Long
top As Long
right As Long
bottom As Long
End Type
Declare Function GetActiveWindow Lib "User32" () As Long
Declare Function GetDesktopWindow Lib "User32" () As Long
Declare Sub GetWindowRect Lib "User32" (ByVal Hwnd As Long, lpRect As RECT_Type)
Declare Function GetDC Lib "User32" (ByVal Hwnd As Long) As Long
Declare Function CreateCompatibleDC Lib "Gdi32" (ByVal hdc As Long) As Long
Declare Function CreateCompatibleBitmap Lib "Gdi32" (ByVal hdc As Long, ByVal nWidth As Long, _
ByVal nHeight As Long) As Long
Declare Function SelectObject Lib "Gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Declare Function BitBlt Lib "Gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, _
ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop As Long) As Long
Declare Function OpenClipboard Lib "User32" (ByVal Hwnd As Long) As Long
Declare Function EmptyClipboard Lib "User32" () As Long
Declare Function SetClipboardData Lib "User32" (ByVal wFormat As Long, ByVal hMem As Long) As  _
Long
Declare Function CloseClipboard Lib "User32" () As Long
Declare Function ReleaseDC Lib "User32" (ByVal Hwnd As Long, ByVal hdc As Long) As Long
Declare Function DeleteDC Lib "Gdi32" (ByVal hdc As Long) As Long
Global Const SRCCOPY = &HCC0020
Global Const CF_BITMAP = 2
Public Sub UserFormScreenShot()
Dim FormHwnd As Long
Dim DeskHwnd As Long
Dim hdc As Long
Dim hdcMem As Long
Dim rect As RECT_Type
Dim junk As Long
Dim fwidth As Long
Dim fheight As Long
Dim hBitmap As Long
DeskHwnd = GetDesktopWindow()
FormHwnd = GetActiveWindow()
Call GetWindowRect(FormHwnd, rect)
fwidth = rect.right - rect.left
fheight = rect.bottom - rect.top
hdc = GetDC(DeskHwnd)
hdcMem = CreateCompatibleDC(hdc)
hBitmap = CreateCompatibleBitmap(hdc, fwidth, fheight)
If hBitmap  0 Then
junk = SelectObject(hdcMem, hBitmap)
junk = BitBlt(hdcMem, 0, 0, fwidth, fheight, hdc, rect.left, rect.top, SRCCOPY)
junk = OpenClipboard(DeskHwnd)
junk = EmptyClipboard()
junk = SetClipboardData(CF_BITMAP, hBitmap)
junk = CloseClipboard()
End If
junk = DeleteDC(hdcMem)
junk = ReleaseDC(DeskHwnd, hdc)
End Sub
Gruß Uwe
Anzeige
AW: Was das Programm macht ist einfach...
23.02.2010 21:25:41
Peter
Hallo Uwe
Als ich den Code sah, dachte Mensch hast du noch alle - keine Ahnung was da abgeht. Ich habs dann probiert und ich staunte nicht schlecht, als es doch sehr schnell funktionierte - manchmal ist es doch wichtiger "dass es funktioniert" als zu wissen "warum es funktioniert" - nochmals vielen Dank
Gruss aus der CH
Pepi
Der Code funktioniert doch...
22.02.2010 15:57:02
Renee
Pepi,
Wenn ich das austeste, so wird eine Kopie der UF in D4 als TopLeftCell abgelegt.
Was funktioniert denn bei dir nicht ?
Der Code gehört in das Klassenmodul der Userform zum entsprechenden Button, der die Kopie auf das aktive Blatt ablegen soll.
GreetZ Renée
Anzeige
AW: Der Code funktioniert doch...
22.02.2010 18:17:07
Peter
Hallo Renée
Bei mir funktioniert es auch, ich habe das ganze auch ins Klassenmudul kopiert.
Auf meinem PC muss ich Crtr-Alt-PrtScr eingeben damit das Userform kopiert wird mit Alt-PrtScr wird das ganze Fenster kopiert - meine Frage: kann ich Deinen Befehl um "Ctrl" auf "Crtr-Alt-PrtScr" erweitern
vielen Dank
Pepi

351 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige