vba 打印窗体内容

就是完整打印窗体内容,不想用printform那个功能,想弹出打印选项对话框,可以选择打印机,设置打印颜色什么的。。。有办法么?

第1个回答  2014-02-24
Sub printSheets()
Application.Dialogs(xlDialogPrint).Show
Sheets("Form").Range("CA2:CA27").ClearContents
End Sub

Private Sub CommandButton1_Click()
Call printSheets
End Sub追问

不是打印表格内容,是打印VBA窗体内容。。。

追答

Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)

Private Const KEYEVENTF_KEYUP = &H2
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12
Private Const VK_LMENU = &HA4

Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim wshTemp As Worksheet
DoEvents
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
DoEvents

ThisWorkbook.Worksheets.Add
ActiveSheet.Name = "Temp"
Set wshTemp = ThisWorkbook.Worksheets("Temp")

With wshTemp
.Paste
.PrintOut
End With

Application.DisplayAlerts = False
ThisWorkbook.Worksheets("Temp").Delete
Application.DisplayAlerts = True
End Sub

追问

看这段程序像是把内容复制到excel表格里面去打呢?我的窗体上不是表格内容啊,是框架和文本框什么的。。。没有直接打印的函数或者指令么?

追答

是把窗体的截图放在Excel里面然后打印的。如果你的VS版本比较高,里面不是有打印机对象吗。

本回答被提问者采纳
相似回答