печать на заданный принтер
переменная Prt содержит имя принтера (не default).
как печатать именно на этот Prt
Заранее благодарен
Там всё написано. С примерами кода.
Поиск по MSDN дает такое (заметь... дошел до 248-го сообщения :))):
[COLOR="DarkSlateBlue"]Results 201-248 of about 1,500 for: PrinterName property[/COLOR]
А можно пальцем ткнуть? Пожалуйста!
Хм, я имел в виду локальную MSDN.
Цитата: koodeer
Хм, я имел в виду локальную MSDN.
Я в ней и искал. А ты думал я поиск по слову...:):):)
Действительно, я не очень понятно вопрос задал.... извини и спасибо.
Но вопрос не снят. Код нужен на VBA Excal03. Я так понял, что метод PrintOut не подходит. Тогда чем? Подмена DefaultPrint на нужный тоже не желательна.
Подскажите.
Может кому пригодится... организует ComboBox со списком доступных принтеров и возможностью выбора. DefaultPrinter не меняет.
' для выбора принтера
'Option Explicit
Private Declare Function GetProfileString Lib "kernel32" _
Alias "GetProfileStringA" _
(ByVal lpAppName As String, _
ByVal lpKeyName As String, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long) As Long
' для выбора принтера
Public Function ProfileLoadWinIniList(lst As MSForms.ComboBox, lpSectionName As String) As Long
Dim success As Long
Dim nSize As Long
Dim lpKeyName As String
Dim ret As String
ret = Space$(8102)
nSize = Len(ret)
success = GetProfileString(lpSectionName, vbNullString, "", ret, nSize)
If success Then
ret = Left$(ret, success)
x = Application.ActivePrinter()
Do Until ret = ""
lpKeyName = StripNulls(ret)
If Left(lpKeyName, 4) = Left(x, 4) Then
ComboBox1.Text = lpKeyName - [COLOR="DarkRed"]тута хранится имя принтера[/COLOR]
Else
lst.AddItem lpKeyName
End If
Loop
End If
ProfileLoadWinIniList = lst.ListCount
End Function
' для выбора принтера
Private Function StripNulls(startstr As String) As String
Dim pos As Long
pos = InStr(startstr$, Chr$(0))
If pos Then
StripNulls = Mid$(startstr, 1, pos - 1)
startstr = Mid$(startstr, pos + 1, Len(startstr))
End If
End Function
Private Sub UserForm_Activate()
Call ProfileLoadWinIniList(ComboBox1, "PrinterPorts") - [COLOR="DarkRed"]вызов процедуры определения списка принтеров[/COLOR]
End Sub
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=SpinButton1.Value, ActivePrinter:=ComboBox1.Text, Collate:=True
- [COLOR="DarkRed"]печатаем на то, что в ComboBox1.Text
[/COLOR]
Не совсем верно даёт список принтеров в Combobox, а как бы через один..
посмотри это