Распечатать текст сообщения MsgBox
sashgera
Дата: Четверг, 23.06.2016, 22:21 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация:
0
±
Замечаний:
20% ±
Excel 2007
Здравствуйте Чтобы распечатать сообщение в MsgBox, я его копирую комбинацией Ctrl+C, вставляю в какой нибудь документ и потом распечатываю. Пожалуйста, подскажите, как можно сделать в message box кнопку 'Печать', по нажатию которой распечатать текст сообщения?
Здравствуйте Чтобы распечатать сообщение в MsgBox, я его копирую комбинацией Ctrl+C, вставляю в какой нибудь документ и потом распечатываю. Пожалуйста, подскажите, как можно сделать в message box кнопку 'Печать', по нажатию которой распечатать текст сообщения? sashgera
Ответить
Сообщение Здравствуйте Чтобы распечатать сообщение в MsgBox, я его копирую комбинацией Ctrl+C, вставляю в какой нибудь документ и потом распечатываю. Пожалуйста, подскажите, как можно сделать в message box кнопку 'Печать', по нажатию которой распечатать текст сообщения? Автор - sashgera Дата добавления - 23.06.2016 в 22:21
RAN
Дата: Четверг, 23.06.2016, 22:26 |
Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
В MsgBox никакую кнопку сделать нельзя. Поэтому, начните с хотелки, а не с того, как вы свою хотелку реализовать пытаетесь.
В MsgBox никакую кнопку сделать нельзя. Поэтому, начните с хотелки, а не с того, как вы свою хотелку реализовать пытаетесь. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение В MsgBox никакую кнопку сделать нельзя. Поэтому, начните с хотелки, а не с того, как вы свою хотелку реализовать пытаетесь. Автор - RAN Дата добавления - 23.06.2016 в 22:26
sashgera
Дата: Четверг, 23.06.2016, 23:07 |
Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация:
0
±
Замечаний:
20% ±
Excel 2007
В MsgBox никакую кнопку сделать нельзя.
ну какую нибудь кнопку показать можно, например, vbOKOnly, про кнопку Печать понял - нельзя а по нажатию этой копки (OK) можно распечатать текст сообщения?
В MsgBox никакую кнопку сделать нельзя.
ну какую нибудь кнопку показать можно, например, vbOKOnly, про кнопку Печать понял - нельзя а по нажатию этой копки (OK) можно распечатать текст сообщения?sashgera
Ответить
Сообщение В MsgBox никакую кнопку сделать нельзя.
ну какую нибудь кнопку показать можно, например, vbOKOnly, про кнопку Печать понял - нельзя а по нажатию этой копки (OK) можно распечатать текст сообщения?Автор - sashgera Дата добавления - 23.06.2016 в 23:07
krosav4ig
Дата: Пятница, 24.06.2016, 02:15 |
Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
можно как-то так
Option Explicit
Private Type DOCINFO
pDocName As String
pOutputFile As String
pDatatype As String
End Type
Private Declare Function ClosePrinter _
Lib "winspool.drv" ( _
ByVal hPrinter As Long _
) As Long
Private Declare Function EndDocPrinter _
Lib "winspool.drv" ( _
ByVal hPrinter As Long _
) As Long
Private Declare Function EndPagePrinter _
Lib "winspool.drv" ( _
ByVal hPrinter As Long _
) As Long
Private Declare Function OpenPrinter _
Lib "winspool.drv" _
Alias "OpenPrinterA" ( _
ByVal pPrinterName As String , _
phPrinter As Long , _
ByVal pDefault As Long _
) As Long
Private Declare Function StartDocPrinter _
Lib "winspool.drv" _
Alias "StartDocPrinterA" ( _
ByVal hPrinter As Long , _
ByVal Level As Long , _
pDocInfo As DOCINFO _
) As Long
Private Declare Function StartPagePrinter _
Lib "winspool.drv" ( _
ByVal hPrinter As Long _
) As Long
Private Declare Function WritePrinter _
Lib "winspool.drv" ( _
ByVal hPrinter As Long , _
pBuf As Any, _
ByVal cdBuf As Long , _
pcWritten As Long _
) As Long
Public Sub PrintStr(sWrittenData As String , Optional prn As String )
Dim lhPrinter As Long
Dim lReturn As Long
Dim lpcWritten As Long
Dim lDoc As Long
Dim MyDocInfo As DOCINFO
If Len (prn) = 0 Then prn = ActivePrinter
prn = Left (prn, InStr (prn & " (Ne" , "(Ne" ) - 2 )
lReturn = OpenPrinter(prn, lhPrinter, 0 )
If lReturn = 0 Then
MsgBox "Принтер не найден"
Exit Sub
End If
MyDocInfo.pDocName = "AAAAAA"
MyDocInfo.pOutputFile = vbNullString
MyDocInfo.pDatatype = vbNullString
lDoc = StartDocPrinter(lhPrinter, 1 , MyDocInfo)
Call StartPagePrinter(lhPrinter)
lReturn = WritePrinter(lhPrinter, _
ByVal (sWrittenData & vbFormFeed), _
Len (sWrittenData), lpcWritten)
lReturn = EndPagePrinter(lhPrinter)
lReturn = EndDocPrinter(lhPrinter)
lReturn = ClosePrinter(lhPrinter)
End Sub
использование в коде
call PrintStr("Текст который нужно печатать" ,"Имя принтера" )
Второй аргумент не обязателен, если его не указывать, будет печататься на активный принтер
Sub dd()
Dim s$
s = "Текст"
If MsgBox(s, 4 , "Печатать?" ) = vbYes Then PrintStr s
End Sub
можно как-то так
Option Explicit
Private Type DOCINFO
pDocName As String
pOutputFile As String
pDatatype As String
End Type
Private Declare Function ClosePrinter _
Lib "winspool.drv" ( _
ByVal hPrinter As Long _
) As Long
Private Declare Function EndDocPrinter _
Lib "winspool.drv" ( _
ByVal hPrinter As Long _
) As Long
Private Declare Function EndPagePrinter _
Lib "winspool.drv" ( _
ByVal hPrinter As Long _
) As Long
Private Declare Function OpenPrinter _
Lib "winspool.drv" _
Alias "OpenPrinterA" ( _
ByVal pPrinterName As String , _
phPrinter As Long , _
ByVal pDefault As Long _
) As Long
Private Declare Function StartDocPrinter _
Lib "winspool.drv" _
Alias "StartDocPrinterA" ( _
ByVal hPrinter As Long , _
ByVal Level As Long , _
pDocInfo As DOCINFO _
) As Long
Private Declare Function StartPagePrinter _
Lib "winspool.drv" ( _
ByVal hPrinter As Long _
) As Long
Private Declare Function WritePrinter _
Lib "winspool.drv" ( _
ByVal hPrinter As Long , _
pBuf As Any, _
ByVal cdBuf As Long , _
pcWritten As Long _
) As Long
Public Sub PrintStr(sWrittenData As String , Optional prn As String )
Dim lhPrinter As Long
Dim lReturn As Long
Dim lpcWritten As Long
Dim lDoc As Long
Dim MyDocInfo As DOCINFO
If Len (prn) = 0 Then prn = ActivePrinter
prn = Left (prn, InStr (prn & " (Ne" , "(Ne" ) - 2 )
lReturn = OpenPrinter(prn, lhPrinter, 0 )
If lReturn = 0 Then
MsgBox "Принтер не найден"
Exit Sub
End If
MyDocInfo.pDocName = "AAAAAA"
MyDocInfo.pOutputFile = vbNullString
MyDocInfo.pDatatype = vbNullString
lDoc = StartDocPrinter(lhPrinter, 1 , MyDocInfo)
Call StartPagePrinter(lhPrinter)
lReturn = WritePrinter(lhPrinter, _
ByVal (sWrittenData & vbFormFeed), _
Len (sWrittenData), lpcWritten)
lReturn = EndPagePrinter(lhPrinter)
lReturn = EndDocPrinter(lhPrinter)
lReturn = ClosePrinter(lhPrinter)
End Sub
использование в коде
call PrintStr("Текст который нужно печатать" ,"Имя принтера" )
Второй аргумент не обязателен, если его не указывать, будет печататься на активный принтер
Sub dd()
Dim s$
s = "Текст"
If MsgBox(s, 4 , "Печатать?" ) = vbYes Then PrintStr s
End Sub
krosav4ig
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение можно как-то так
[vba]
Option ExplicitPrivate Type DOCINFO pDocName As String pOutputFile As String pDatatype As StringEnd TypePrivate Declare Function ClosePrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long _ ) As LongPrivate Declare Function EndDocPrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long _ ) As LongPrivate Declare Function EndPagePrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long _ ) As LongPrivate Declare Function OpenPrinter _ Lib "winspool.drv" _ Alias "OpenPrinterA" ( _ ByVal pPrinterName As String ; _ phPrinter As Long ; _ ByVal pDefault As Long _ ) As LongPrivate Declare Function StartDocPrinter _ Lib "winspool.drv" _ Alias "StartDocPrinterA" ( _ ByVal hPrinter As Long ; _ ByVal Level As Long ; _ pDocInfo As DOCINFO _ ) As LongPrivate Declare Function StartPagePrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long _ ) As LongPrivate Declare Function WritePrinter _ Lib "winspool.drv" ( _ ByVal hPrinter As Long ; _ pBuf As Any ; _ ByVal cdBuf As Long ; _ pcWritten As Long _ ) As LongPublic Sub PrintStr(sWrittenData As String ; Optional prn As String ) Dim lhPrinter As Long Dim lReturn As Long Dim lpcWritten As Long Dim lDoc As Long Dim MyDocInfo As DOCINFO If Len(prn ) = 0 Then prn = ActivePrinter prn = Left(prn ; InStr(prn & " (Чe"; "(Чe") - 2) lReturn = OpenPrinter(prn ; lhPrinter ; 0) If lReturn = 0 Then MsgBox "Принтер не найден" Exit Sub End If MyDocInfo.pDocName = "AAAAAA" MyDocInfo.pOutputFile = vbNullString MyDocInfo.pDatatype = vbNullString lDoc = StartDocPrinter(lhPrinter ; 1; MyDocInfo ) Call StartPagePrinter(lhPrinter ) lReturn = WritePrinter(lhPrinter ; _ ByVal (sWrittenData & vbFormFeed ); _ Len(sWrittenData ); lpcWritten ) lReturn = EndPagePrinter(lhPrinter ) lReturn = EndDocPrinter(lhPrinter ) lReturn = ClosePrinter(lhPrinter )End Sub
[/vba]
использование в коде [vba]
call PrintStr("Текст который нужно печатать","Имя принтера")
[/vba] Второй аргумент не обязателен, если его не указывать, будет печататься на активный принтер [vba]
Sub dd() Dim s $ s = "Текст" If MsgBox(s , 4, "Печатать?") = vbYes Then PrintStr sEnd Sub
[/vba] Автор - krosav4ig Дата добавления - 24.06.2016 в 02:15
_Boroda_
Дата: Пятница, 24.06.2016, 02:37 |
Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16901
Репутация:
6613
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Ой! Какой кошмар! У меня более рабоче-крестьянский способ, аж стыдно стало
Sub dd()
s = "Текст"
If MsgBox(s, 4 , "Печатать?" ) = 6 Then
ad_ = Selection.Address
With Range("A1" ).SpecialCells(xlLastCell).Offset(1 )
.Value = s
.PrintOut
.Clear
End With
Range(ad_).Select
End If
End Sub
Ой! Какой кошмар! У меня более рабоче-крестьянский способ, аж стыдно стало
Sub dd()
s = "Текст"
If MsgBox(s, 4 , "Печатать?" ) = 6 Then
ad_ = Selection.Address
With Range("A1" ).SpecialCells(xlLastCell).Offset(1 )
.Value = s
.PrintOut
.Clear
End With
Range(ad_).Select
End If
End Sub
_Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Ой! Какой кошмар! У меня более рабоче-крестьянский способ, аж стыдно стало [vba]
Sub dd() s = "Текст" If MsgBox(s , 4, "Печатать?") = 6 Then ad_ = Selection.Address With Range("A1").SpecialCells(xlLastCell ).Offset(1) .Value = s .PrintOut .Clear End With Range(ad_ ).Select End IfEnd Sub
[/vba] Автор - _Boroda_ Дата добавления - 24.06.2016 в 02:37
krosav4ig
Дата: Пятница, 24.06.2016, 03:56 |
Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
sashgera
Дата: Пятница, 24.06.2016, 08:53 |
Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация:
0
±
Замечаний:
20% ±
Excel 2007
krosav4ig , _Boroda_ , спасибо, оба варианта работают. А как показать окно Печать, в котором можно выбрать нужный принтер?
krosav4ig , _Boroda_ , спасибо, оба варианта работают. А как показать окно Печать, в котором можно выбрать нужный принтер?sashgera
Ответить
Сообщение krosav4ig , _Boroda_ , спасибо, оба варианта работают. А как показать окно Печать, в котором можно выбрать нужный принтер?Автор - sashgera Дата добавления - 24.06.2016 в 08:53
SLAVICK
Дата: Пятница, 24.06.2016, 09:43 |
Сообщение № 8
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация:
766
±
Замечаний:
0% ±
2019
А как показать окно Печать, в котором можно выбрать нужный принтер?
Почитайте тут
А как показать окно Печать, в котором можно выбрать нужный принтер?
Почитайте тут SLAVICK
Иногда все проще чем кажется с первого взгляда.
Ответить
Сообщение А как показать окно Печать, в котором можно выбрать нужный принтер?
Почитайте тут Автор - SLAVICK Дата добавления - 24.06.2016 в 09:43
krosav4ig
Дата: Воскресенье, 26.06.2016, 15:07 |
Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 2348
Репутация:
997
±
Замечаний:
0% ±
Excel 2007,2010,2013
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Ответить
Сообщение или тут Автор - krosav4ig Дата добавления - 26.06.2016 в 15:07
Alex_ST
Дата: Понедельник, 27.06.2016, 11:13 |
Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация:
622
±
Замечаний:
0% ±
2003
Если сам пишешь код, но не знаешь, понадобится ли в дальнейшем то, что выдал MsgBox, то можно тупо после вывода каждого MsgBox закидывать его текст в буфер обмена, а там уж понадобится/не понадобится. На скорую руку примерно так:
Sub ttt()
Dim sText$: sText = "Text MsgBox"
MsgBox (sText)
With GetObject ("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}" ): .SetText sText: .PutInClipboard: End With
End Sub
Если сам пишешь код, но не знаешь, понадобится ли в дальнейшем то, что выдал MsgBox, то можно тупо после вывода каждого MsgBox закидывать его текст в буфер обмена, а там уж понадобится/не понадобится. На скорую руку примерно так:
Sub ttt()
Dim sText$: sText = "Text MsgBox"
MsgBox (sText)
With GetObject ("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}" ): .SetText sText: .PutInClipboard: End With
End Sub
Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение Если сам пишешь код, но не знаешь, понадобится ли в дальнейшем то, что выдал MsgBox, то можно тупо после вывода каждого MsgBox закидывать его текст в буфер обмена, а там уж понадобится/не понадобится. На скорую руку примерно так: [vba]
Sub ttt() Dim sText $: sText = "Тext MsgBox" MsgBox (sText ) With GetObject("Чew:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText sText : .PutInClipboard : End WithEnd Sub
[/vba] Автор - Alex_ST Дата добавления - 27.06.2016 в 11:13