Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
956to960
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
956to960
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Msgbox ausdrucken

Msgbox ausdrucken
02.03.2008 17:51:00
Walter
Hallo Zusammen,
kann man eine MSGBOX genau so ausdrucken, wie eine UF ?
Ich hatte das mal gefunden und geändert:

Sub MSGBOX_Ausdrucken()
Application.ScreenUpdating = False
MSGBOX.Zoom = 95
Me.PrintForm
Me.Zoom = 100
Application.ScreenUpdating = True
End Sub


mfg Walter mg

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Msgbox ausdrucken
02.03.2008 18:04:25
Tino
Hallo,
kann ich mir nicht vorstellen, bei einer geöffneten Userform kann der Code weiterlaufen, aber bei einer MsgBox bleibt ja der Code stehen.
Gruß
Tino

Vielleicht weiß noch jemand was ?
02.03.2008 18:43:00
Walter
Hallo Tino,
danke vorab für die Info, mal sehen vielleicht weiß noch jemand was.
mfg Walter mg

AW: Vielleicht weiß noch jemand was ?
02.03.2008 18:53:00
Josef
Hallo Walter,
eine MsgBox kann man nicht direkt ausdrucken.
Aber man könnte den Text temporär in eine Textdatei schreiben und diese Drucken.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long

Private Declare Function GetTempFilename Lib "kernel32" Alias _
    "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, _
    ByVal wUnique As Long, ByVal lpTempFileName As String) As Long

Private Declare Function GetTempPath Lib "kernel32.dll" Alias "GetTempPathA" _
    (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Private Function TextFileTempFilename(Optional Path As String, Optional suffix As String) As String
Dim myTempFileName As String
Dim RetVal As Long

If Path = "" Then
    Path = Space$(256)
    RetVal = GetTempPath(Len(Path), Path)
    Path = Left$(Path, RetVal)
End If

myTempFileName = Space$(256)

Call GetTempFilename(Path, "txt", 0&, myTempFileName)

myTempFileName = Left$(myTempFileName, InStr(myTempFileName, Chr$(0)) - 1)
If suffix <> "" Then
    myTempFileName = Replace(myTempFileName, "tmp", suffix)
End If
TextFileTempFilename = myTempFileName

End Function

Sub msgbox_Print()
Dim strMsg As String, strFile As String, F As Integer

strMsg = "Blablabla" & vbLf & "Bla bla bla"

If MsgBox(strMsg & vbLf & vbLf & "Drucken?", vbYesNo, "Nachricht") = vbYes Then
    strFile = TextFileTempFilename(, "txt")
    F = FreeFile
    Open strFile For Output As #F
    Print #F, strMsg
    Close #F
    ShellExecute 0, "Print", strFile, "", "", 0
    Sleep 5000
    Kill strFile
End If

End Sub


Gruß Sepp



Anzeige
J aber Wo setze
02.03.2008 19:38:00
Walter
Hallo Sepp,
habe ja die MSGBOX in einem Makro, wie setze oder Wo die Box
rein oder muß ich das Makro als Überschrift nehmen für:
msgbox_Print
mfg Walter mg

AW: J aber Wo setze
02.03.2008 19:42:20
Josef
Hallo Walter,
zeig doch dein Makro mit der MsgBox, dann bau ich das ein.

Gruß Sepp



Hier der Ausschnitt
02.03.2008 19:52:00
Walter
Hallo Sepp,
danke im voraus.
Hier die Box:
Dim strT As String, zz As Long
With Sheets("Druck_Geburstag")
For zz = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row
If Not IsEmpty(.Cells(zz, 1)) Then
If strT "" Then strT = strT & vbLf
strT = strT & .Cells(zz, 1) & " / " & .Cells(zz, 6) _
& " / " & .Cells(zz, 21) _
& " "
End If
Next
End With
If strT "" Then
If MsgBox("Das sind die Gebursttage von HEUTE: " & Chr(13) & Chr(13) _
& strT & " " & Chr(13) _
& " " & _
" " & Chr(13) & Chr(13) & _
"Diese Daten ausdrucken ? ", _
vbYesNo + 64, "Die Geburtstage HEUTE: ") = vbYes Then
Hier sollte die Anweisung kommen
Else
Exit Sub
End If
End If
mfg walter mg

Anzeige
AW: Hier der Ausschnitt
02.03.2008 19:56:00
Josef
Hallo Walter,
dein Codefragment so.
Dim strT As String, zz As Long

With Sheets("Druck_Geburstag")
    For zz = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row
        If Not IsEmpty(.Cells(zz, 1)) Then
            If strT <> "" Then strT = strT & vbLf
            strT = strT & .Cells(zz, 1) & " / " & .Cells(zz, 6) _
                & " / " & .Cells(zz, 21) _
                & " "
        End If
    Next
End With

If strT <> "" Then
    If MsgBox("Das sind die Gebursttage von HEUTE: " & Chr(13) & Chr(13) _
        & strT & " " & Chr(13) _
        & " " & _
        " " & Chr(13) & Chr(13) & _
        "Diese Daten ausdrucken ? ", _
        vbYesNo + 64, "Die Geburtstage HEUTE: ") = vbYes Then
        
        msgbox_Print strT
        
    End If
End If

und diese Prozedur in ein separates Modul.
Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long

Private Declare Function GetTempFilename Lib "kernel32" Alias _
    "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, _
    ByVal wUnique As Long, ByVal lpTempFileName As String) As Long

Private Declare Function GetTempPath Lib "kernel32.dll" Alias "GetTempPathA" _
    (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Private Function TextFileTempFilename(Optional Path As String, Optional suffix As String) As String
Dim myTempFileName As String
Dim RetVal As Long

If Path = "" Then
    Path = Space$(256)
    RetVal = GetTempPath(Len(Path), Path)
    Path = Left$(Path, RetVal)
End If

myTempFileName = Space$(256)

Call GetTempFilename(Path, "txt", 0&, myTempFileName)

myTempFileName = Left$(myTempFileName, InStr(myTempFileName, Chr$(0)) - 1)
If suffix <> "" Then
    myTempFileName = Replace(myTempFileName, "tmp", suffix)
End If
TextFileTempFilename = myTempFileName

End Function

Sub msgbox_Print(ByVal strMsg As String)
Dim strFile As String, F As Integer

strFile = TextFileTempFilename(, "txt")
F = FreeFile
Open strFile For Output As #F
Print #F, strMsg
Close #F
ShellExecute 0, "Print", strFile, "", "", 0
Sleep 5000
Kill strFile

End Sub


Gruß Sepp



Anzeige
DANKE Du bist ein Genie! -)
02.03.2008 20:08:06
Walter
Hallo Sepp,
DANKE für die Unterstützung, klappt !
mfg Walter mg

AW: Msgbox ausdrucken
02.03.2008 18:46:00
Nepumuk
Hallo Walter,
nicht genauso, aber mit ein bisschen API-Gedöns:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function MapVirtualKey Lib "user32.dll" Alias "MapVirtualKeyA" ( _
    ByVal wCode As Long, _
    ByVal wMapType As Long) As Long
Private Declare Sub keybd_event Lib "user32.dll" ( _
    ByVal bVk As Byte, _
    ByVal bScan As Byte, _
    ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)
Private Declare Sub Sleep Lib "kernel32.dll" ( _
    ByVal dwMilliseconds As Long)
Private Declare Function SetTimer Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal nIDEvent As Long, _
    ByVal uElapse As Long, _
    ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32.dll" ( _
    ByVal hWnd As Long, _
    ByVal nIDEvent As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long

Private Const GC_CLASSNAMEMSEXCEL = "XLMAIN"
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_MENU = &H12

Private hWnd As Long

Private Sub prcPrintMsgBox()
    Dim intAltScan As Integer, intIndex As Integer
    Call prcStopTimer
    Application.ScreenUpdating = False
    intAltScan = MapVirtualKey(VK_MENU, 0&)
    keybd_event VK_MENU, intAltScan, 0&, 0&
    keybd_event vbKeySnapshot, 0&, 0&, 0&
    DoEvents
    keybd_event VK_MENU, intAltScan, KEYEVENTF_KEYUP, 0&
    ThisWorkbook.Worksheets.Add
    With ActiveSheet
        .Paste
        .PrintOut
        Application.DisplayAlerts = False
        .Delete
        Application.DisplayAlerts = True
    End With
    Application.ScreenUpdating = True
End Sub

Private Sub prcStopTimer()
    Call KillTimer(hWnd, 0)
End Sub

Public Sub test()
    hWnd = FindWindow(GC_CLASSNAMEMSEXCEL, Application.Caption)
    Call SetTimer(hWnd, 0, 100, AddressOf prcPrintMsgBox)
    MsgBox "Hallo Walter," & vbLf & "Ich druck mich jetzt mal." & _
        vbLf & vbLf & "Deine MsgBox", vbOKOnly, "MsgBox drucken"
End Sub

Gruß
Nepumuk

Anzeige
Schau mir das heute Nacht an -)
02.03.2008 19:44:00
Walter
Hallo Nepumuk,
das ist ja eine Nummer zu groß teste später mal,
DANKE
mfg Walter mg

AW: Schau mir das heute Nacht an -)
03.03.2008 20:11:04
Volti
Hi Nepumuk,
super Teil. Selbst gemacht?
Wozu brauchst Du die 100 msec Waitingtime?
Und den habe ich auch noch nicht ganz verstanden: MapVirtualKey(VK_MENU, 0&)
viele Grüße
Karl-Heinz

AW: Schau mir das heute Nacht an -)
04.03.2008 09:28:00
Nepumuk
Hallo Karl-Heinz,
die 100 MS gebe ich dem Rechner Zeit die Msgbox aufzurufen.
MapVirtualKey ist eine reine Vorsichtsmaßname da es auf vielen Tastaturen zwei Control-, Windows- und Shift - Tasten gibt. Sonst müsste ich die unterscheiden.
VK_LSHIFT
VK_RSHIFT
VK_LCONTROL
VK_RCONTROL
VK_LMENU
VK_RMENU
Gruß
Nepumuk

Anzeige
AW: Msgbox ausdrucken
03.03.2008 20:12:50
Volti
Hi Nepumuk,
super Teil. Selbst gemacht?
Wozu brauchst Du die 100 msec Waitingtime?
Und den habe ich auch noch nicht ganz verstanden: MapVirtualKey(VK_MENU, 0&)
viele Grüße
Karl-Heinz

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige