VBA Список принтеров для печати формы.
Формулировка задачи:
Печатаю форму таким способом:
UserForm.PrintForm
Подскажите, пожалуйста, как получить список принтеров и указать "программе" нужный (получить его название, если выбирает пользователь) при таком способе печати? Возможно существуют другие способы печати формы с параметрами?
Хотел бы разместить ListBox, в котором пользователь бы указывал нужный принтер без каких либо других настроек как в диалоговых окнах печати Excel. А я, на основании этого значения, посылал бы из кода форму на печать. При загрузки формы, хотелось бы получать, также, значение принтера установленного по умолчанию.
Заранее благодарен.
UserForm.PrintForm
Подскажите, пожалуйста, как получить список принтеров и указать "программе" нужный (получить его название, если выбирает пользователь) при таком способе печати? Возможно существуют другие способы печати формы с параметрами?
Хотел бы разместить ListBox, в котором пользователь бы указывал нужный принтер без каких либо других настроек как в диалоговых окнах печати Excel. А я, на основании этого значения, посылал бы из кода форму на печать. При загрузки формы, хотелось бы получать, также, значение принтера установленного по умолчанию.
Заранее благодарен.
Решение задачи: «VBA Список принтеров для печати формы.»
textual
Листинг программы
<font color="blue">Option</font> <font color="blue">Explicit</font>
<font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> GetProfileString Lib <font color="teal">"Kernel32"</font> _
Alias <font color="teal">"GetProfileStringA"</font> _
(<font color="blue">ByVal</font> lpAppName <font color="blue">As</font> <font color="blue">String</font>, _
<font color="blue">ByVal</font> lpKeyName <font color="blue">As</font> <font color="blue">String</font>, _
<font color="blue">ByVal</font> lpDefault <font color="blue">As</font> <font color="blue">String</font>, _
<font color="blue">ByVal</font> lpReturnedString <font color="blue">As</font> <font color="blue">String</font>, _
<font color="blue">ByVal</font> nSize <font color="blue">As</font> <font color="blue">Long</font>) <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> WriteProfileString Lib <font color="teal">"Kernel32"</font> _
Alias <font color="teal">"WriteProfileStringA"</font> _
(<font color="blue">ByVal</font> lpszSection <font color="blue">As</font> <font color="blue">String</font>, _
<font color="blue">ByVal</font> lpszKeyName <font color="blue">As</font> <font color="blue">String</font>, _
<font color="blue">ByVal</font> lpszString <font color="blue">As</font> <font color="blue">String</font>) <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> SendMessage Lib <font color="teal">"user32"</font> _
Alias <font color="teal">"SendMessageA"</font> _
(<font color="blue">ByVal</font> hwnd <font color="blue">As</font> <font color="blue">Long</font>, _
<font color="blue">ByVal</font> wMsg <font color="blue">As</font> <font color="blue">Long</font>, _
<font color="blue">ByVal</font> wParam <font color="blue">As</font> <font color="blue">Long</font>, _
lparam <font color="blue">As</font> <font color="blue">String</font>) <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Private</font> <font color="blue">Const</font> HWND_BROADCAST = &HFFFF
<font color="blue">Private</font> <font color="blue">Const</font> WM_WININICHANGE = &H1A
<font color="blue">Private</font> <font color="blue">Type</font> OSVERSIONINFO
dwOSVersionInfoSize <font color="blue">As</font> <font color="blue">Long</font>
dwMajorVersion <font color="blue">As</font> <font color="blue">Long</font>
dwMinorVersion <font color="blue">As</font> <font color="blue">Long</font>
dwBuildNumber <font color="blue">As</font> <font color="blue">Long</font>
dwPlatformId <font color="blue">As</font> <font color="blue">Long</font>
szCSDVersion <font color="blue">As</font> <font color="blue">String</font> * <font color="darkblue"><b>128</b></font>
<font color="blue">End</font> <font color="blue">Type</font>
<font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> GetVersionExA Lib <font color="teal">"Kernel32"</font> _
(lpVersionInformation <font color="blue">As</font> OSVERSIONINFO) <font color="blue">As</font> <font color="blue">Integer</font>
<font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> OpenPrinter Lib <font color="teal">"winspool.drv"</font> _
Alias <font color="teal">"OpenPrinterA"</font> _
(<font color="blue">ByVal</font> pPrinterName <font color="blue">As</font> <font color="blue">String</font>, _
phPrinter <font color="blue">As</font> <font color="blue">Long</font>, _
pDefault <font color="blue">As</font> PRINTER_DEFAULTS) <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> SetPrinter Lib <font color="teal">"winspool.drv"</font> _
Alias <font color="teal">"SetPrinterA"</font> _
(<font color="blue">ByVal</font> hPrinter <font color="blue">As</font> <font color="blue">Long</font>, _
<font color="blue">ByVal</font> Level <font color="blue">As</font> <font color="blue">Long</font>, _
pPrinter <font color="blue">As</font> Any, _
<font color="blue">ByVal</font> Command <font color="blue">As</font> <font color="blue">Long</font>) <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> GetPrinter Lib <font color="teal">"winspool.drv"</font> _
Alias <font color="teal">"GetPrinterA"</font> _
(<font color="blue">ByVal</font> hPrinter <font color="blue">As</font> <font color="blue">Long</font>, _
<font color="blue">ByVal</font> Level <font color="blue">As</font> <font color="blue">Long</font>, _
pPrinter <font color="blue">As</font> Any, _
<font color="blue">ByVal</font> cbBuf <font color="blue">As</font> <font color="blue">Long</font>, _
pcbNeeded <font color="blue">As</font> <font color="blue">Long</font>) <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> lstrcpy Lib <font color="teal">"Kernel32"</font> _
Alias <font color="teal">"lstrcpyA"</font> _
(<font color="blue">ByVal</font> lpString1 <font color="blue">As</font> <font color="blue">String</font>, _
<font color="blue">ByVal</font> lpString2 <font color="blue">As</font> Any) <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> ClosePrinter Lib <font color="teal">"winspool.drv"</font> _
(<font color="blue">ByVal</font> hPrinter <font color="blue">As</font> <font color="blue">Long</font>) <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Private</font> <font color="blue">Declare</font> <font color="blue">Function</font> GetLastError Lib <font color="teal">"Kernel32"</font> () <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Private</font> <font color="blue">Const</font> CCHDEVICENAME = <font color="darkblue"><b>32</b></font>
<font color="blue">Private</font> <font color="blue">Const</font> CCHFORMNAME = <font color="darkblue"><b>32</b></font>
<font color="blue">Private</font> <font color="blue">Const</font> STANDARD_RIGHTS_REQUIRED = &HF0000
<font color="blue">Private</font> <font color="blue">Const</font> PRINTER_ACCESS_ADMINISTER = &H4
<font color="blue">Private</font> <font color="blue">Const</font> PRINTER_ACCESS_USE = &H8
<font color="blue">Private</font> <font color="blue">Const</font> PRINTER_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED <font color="blue">Or</font> PRINTER_ACCESS_ADMINISTER <font color="blue">Or</font> PRINTER_ACCESS_USE)
<font color="blue">Private</font> <font color="blue">Const</font> PRINTER_ATTRIBUTE_DEFAULT = <font color="darkblue"><b>4</b></font>
<font color="blue">Private</font> <font color="blue">Type</font> DEVMODE
dmDeviceName <font color="blue">As</font> <font color="blue">String</font> * CCHDEVICENAME
dmSpecVersion <font color="blue">As</font> <font color="blue">Integer</font>
dmDriverVersion <font color="blue">As</font> <font color="blue">Integer</font>
dmSize <font color="blue">As</font> <font color="blue">Integer</font>
dmDriverExtra <font color="blue">As</font> <font color="blue">Integer</font>
dmFields <font color="blue">As</font> <font color="blue">Long</font>
dmOrientation <font color="blue">As</font> <font color="blue">Integer</font>
dmPaperSize <font color="blue">As</font> <font color="blue">Integer</font>
dmPaperLength <font color="blue">As</font> <font color="blue">Integer</font>
dmPaperWidth <font color="blue">As</font> <font color="blue">Integer</font>
dmScale <font color="blue">As</font> <font color="blue">Integer</font>
dmCopies <font color="blue">As</font> <font color="blue">Integer</font>
dmDefaultSource <font color="blue">As</font> <font color="blue">Integer</font>
dmPrintQuality <font color="blue">As</font> <font color="blue">Integer</font>
dmColor <font color="blue">As</font> <font color="blue">Integer</font>
dmDuplex <font color="blue">As</font> <font color="blue">Integer</font>
dmYResolution <font color="blue">As</font> <font color="blue">Integer</font>
dmTTOption <font color="blue">As</font> <font color="blue">Integer</font>
dmCollate <font color="blue">As</font> <font color="blue">Integer</font>
dmFormName <font color="blue">As</font> <font color="blue">String</font> * CCHFORMNAME
dmLogPixels <font color="blue">As</font> <font color="blue">Integer</font>
dmBitsPerPel <font color="blue">As</font> <font color="blue">Long</font>
dmPelsWidth <font color="blue">As</font> <font color="blue">Long</font>
dmPelsHeight <font color="blue">As</font> <font color="blue">Long</font>
dmDisplayFlags <font color="blue">As</font> <font color="blue">Long</font>
dmDisplayFrequency <font color="blue">As</font> <font color="blue">Long</font>
dmICMMethod <font color="blue">As</font> <font color="blue">Long</font>
dmICMIntent <font color="blue">As</font> <font color="blue">Long</font>
dmMediaType <font color="blue">As</font> <font color="blue">Long</font>
dmDitherType <font color="blue">As</font> <font color="blue">Long</font>
dmReserved1 <font color="blue">As</font> <font color="blue">Long</font>
dmReserved2 <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">End</font> <font color="blue">Type</font>
<font color="blue">Private</font> <font color="blue">Type</font> PRINTER_INFO_5
pPrinterName <font color="blue">As</font> <font color="blue">String</font>
pPortName <font color="blue">As</font> <font color="blue">String</font>
Attributes <font color="blue">As</font> <font color="blue">Long</font>
DeviceNotSelectedTimeout <font color="blue">As</font> <font color="blue">Long</font>
TransmissionRetryTimeout <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">End</font> <font color="blue">Type</font>
<font color="blue">Private</font> <font color="blue">Type</font> PRINTER_DEFAULTS
pDatatype <font color="blue">As</font> <font color="blue">Long</font>
pDevmode <font color="blue">As</font> DEVMODE
DesiredAccess <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">End</font> <font color="blue">Type</font>
<font color="blue">Private</font> m_sCurrPrinterDevName <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Private</font> m_sPrevPrinterDevName <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Private</font> m_sPrevPrinterDriver <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Private</font> m_sPrevPrinterPort <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Private</font> <font color="blue">Function</font> PtrCtoVbString(Add <font color="blue">As</font> <font color="blue">Long</font>) <font color="blue">As</font> <font color="blue">String</font>
<font color="00AA00">'Source - Article ID: Q78304</font>
<font color="blue">Dim</font> sTemp <font color="blue">As</font> <font color="blue">String</font> * <font color="darkblue"><b>512</b></font>, x <font color="blue">As</font> <font color="blue">Long</font>
x = lstrcpy(sTemp, Add)
<font color="blue">If</font> (InStr(<font color="darkblue"><b>1</b></font>, sTemp, Chr(<font color="darkblue"><b>0</b></font>)) = <font color="darkblue"><b>0</b></font>) <font color="blue">Then</font>
PtrCtoVbString = <font color="teal">""</font>
<font color="blue">Else</font>
PtrCtoVbString = Left(sTemp, InStr(<font color="darkblue"><b>1</b></font>, sTemp, Chr(<font color="darkblue"><b>0</b></font>)) - <font color="darkblue"><b>1</b></font>)
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">End</font> <font color="blue">Function</font>
<font color="blue">Private</font> <font color="blue">Function</font> SetDefaultPrinter(<font color="blue">ByVal</font> DeviceName <font color="blue">As</font> <font color="blue">String</font>, <font color="blue">ByVal</font> DriverName <font color="blue">As</font> <font color="blue">String</font>, <font color="blue">ByVal</font> PrinterPort <font color="blue">As</font> <font color="blue">String</font>) <font color="blue">As</font> <font color="blue">Boolean</font>
<font color="blue">Dim</font> DeviceLine <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> r <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Dim</font> l <font color="blue">As</font> <font color="blue">Long</font>
DeviceLine = DeviceName & <font color="teal">","</font> & DriverName & <font color="teal">","</font> & PrinterPort
r = WriteProfileString(<font color="teal">"windows"</font>, <font color="teal">"Device"</font>, DeviceLine)
<font color="blue">If</font> r <font color="blue">Then</font>
l = SendMessage(HWND_BROADCAST, WM_WININICHANGE, <font color="darkblue"><b>0</b></font>, <font color="teal">"windows"</font>)
SetDefaultPrinter = True
m_sCurrPrinterDevName = DeviceName
<font color="blue">Else</font>
SetDefaultPrinter = False
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">End</font> <font color="blue">Function</font>
<font color="blue">Private</font> <font color="blue">Function</font> Win95SetDefaultPrinter(<font color="blue">ByRef</font> DeviceName <font color="blue">As</font> <font color="blue">String</font>) <font color="blue">As</font> <font color="blue">Boolean</font>
<font color="blue">Dim</font> Handle <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Dim</font> pd <font color="blue">As</font> PRINTER_DEFAULTS
<font color="blue">Dim</font> x <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Dim</font> need <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">Dim</font> pi5 <font color="blue">As</font> PRINTER_INFO_5
<font color="blue">Dim</font> LastError <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">If</font> DeviceName = <font color="teal">""</font> <font color="blue">Then</font>
Win95SetDefaultPrinter = False
<font color="blue">Exit</font> <font color="blue">Function</font>
<font color="blue">End</font> <font color="blue">If</font>
pd.pDatatype = <font color="darkblue"><b>0</b></font>&
pd.DesiredAccess = PRINTER_ALL_ACCESS
x = OpenPrinter(DeviceName, Handle, pd)
<font color="blue">If</font> x = False <font color="blue">Then</font>
Win95SetDefaultPrinter = False
<font color="blue">Exit</font> <font color="blue">Function</font>
<font color="blue">End</font> <font color="blue">If</font>
x = GetPrinter(Handle, <font color="darkblue"><b>5</b></font>, <font color="blue">ByVal</font> <font color="darkblue"><b>0</b></font>&, <font color="darkblue"><b>0</b></font>, need)
<font color="blue">ReDim</font> t((need \ <font color="darkblue"><b>4</b></font>)) <font color="blue">As</font> <font color="blue">Long</font>
x = GetPrinter(Handle, <font color="darkblue"><b>5</b></font>, t(<font color="darkblue"><b>0</b></font>), need, need)
<font color="blue">If</font> x = False <font color="blue">Then</font>
Win95SetDefaultPrinter = False
<font color="blue">Exit</font> <font color="blue">Function</font>
<font color="blue">End</font> <font color="blue">If</font>
pi5.pPrinterName = PtrCtoVbString(t(<font color="darkblue"><b>0</b></font>))
pi5.pPortName = PtrCtoVbString(t(<font color="darkblue"><b>1</b></font>))
pi5.Attributes = t(<font color="darkblue"><b>2</b></font>)
pi5.DeviceNotSelectedTimeout = t(<font color="darkblue"><b>3</b></font>)
pi5.TransmissionRetryTimeout = t(<font color="darkblue"><b>4</b></font>)
pi5.Attributes = PRINTER_ATTRIBUTE_DEFAULT
x = SetPrinter(Handle, <font color="darkblue"><b>5</b></font>, pi5, <font color="darkblue"><b>0</b></font>)
<font color="blue">If</font> x = False <font color="blue">Then</font>
Win95SetDefaultPrinter = False
<font color="blue">Exit</font> <font color="blue">Function</font>
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">Call</font> ClosePrinter(Handle)
m_sCurrPrinterDevName = DeviceName
Win95SetDefaultPrinter = True
<font color="blue">End</font> <font color="blue">Function</font>
<font color="blue">Private</font> <font color="blue">Sub</font> GetDriverAndPort(<font color="blue">ByVal</font> Buffer <font color="blue">As</font> <font color="blue">String</font>, <font color="blue">ByRef</font> DriverName <font color="blue">As</font> <font color="blue">String</font>, <font color="blue">ByRef</font> PrinterPort <font color="blue">As</font> <font color="blue">String</font>)
<font color="blue">Dim</font> iDriver <font color="blue">As</font> <font color="blue">Integer</font>
<font color="blue">Dim</font> iPort <font color="blue">As</font> <font color="blue">Integer</font>
DriverName = <font color="teal">""</font>
PrinterPort = <font color="teal">""</font>
iDriver = InStr(Buffer, <font color="teal">","</font>)
<font color="blue">If</font> iDriver > <font color="darkblue"><b>0</b></font> <font color="blue">Then</font>
DriverName = Left(Buffer, iDriver - <font color="darkblue"><b>1</b></font>)
iPort = InStr(iDriver + <font color="darkblue"><b>1</b></font>, Buffer, <font color="teal">","</font>)
<font color="blue">If</font> iPort > <font color="darkblue"><b>0</b></font> <font color="blue">Then</font>
PrinterPort = <font color="blue">Mid</font>(Buffer, iDriver + <font color="darkblue"><b>1</b></font>, iPort - iDriver - <font color="darkblue"><b>1</b></font>)
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">End</font> <font color="blue">Sub</font>
<font color="blue">Private</font> <font color="blue">Function</font> WinNTSetDefaultPrinter(<font color="blue">ByRef</font> DeviceName <font color="blue">As</font> <font color="blue">String</font>) <font color="blue">As</font> <font color="blue">Boolean</font>
<font color="blue">Dim</font> Buffer <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> DriverName <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> PrinterPort <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> r <font color="blue">As</font> <font color="blue">Long</font>
<font color="blue">If</font> DeviceName <> <font color="teal">""</font> <font color="blue">Then</font>
Buffer = Space(<font color="darkblue"><b>1024</b></font>)
r = GetProfileString(<font color="teal">"PrinterPorts"</font>, DeviceName, <font color="teal">""</font>, Buffer, Len(Buffer))
<font color="blue">Call</font> GetDriverAndPort(Buffer, DriverName, PrinterPort)
<font color="blue">If</font> DriverName <> <font color="teal">""</font> <font color="blue">And</font> PrinterPort <> <font color="teal">""</font> <font color="blue">Then</font>
WinNTSetDefaultPrinter = SetDefaultPrinter(DeviceName, DriverName, PrinterPort)
<font color="blue">Else</font>
WinNTSetDefaultPrinter = False
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">End</font> <font color="blue">Function</font>
<font color="blue">Function</font> SetPrinterAsDefault(<font color="blue">ByVal</font> DeviceName <font color="blue">As</font> <font color="blue">String</font>) <font color="blue">As</font> <font color="blue">Boolean</font>
<font color="blue">Dim</font> osinfo <font color="blue">As</font> OSVERSIONINFO
<font color="blue">Dim</font> retvalue <font color="blue">As</font> <font color="blue">Integer</font>
osinfo.dwOSVersionInfoSize = <font color="darkblue"><b>148</b></font>
osinfo.szCSDVersion = Space$(<font color="darkblue"><b>128</b></font>)
retvalue = GetVersionExA(osinfo)
<font color="blue">If</font> m_sCurrPrinterDevName <> DeviceName <font color="blue">Then</font>
<font color="blue">If</font> osinfo.dwMajorVersion = <font color="darkblue"><b>3</b></font> <font color="blue">And</font> osinfo.dwMinorVersion = <font color="darkblue"><b>51</b></font> <font color="blue">And</font> osinfo.dwBuildNumber = <font color="darkblue"><b>1057</b></font> <font color="blue">And</font> osinfo.dwPlatformId = <font color="darkblue"><b>2</b></font> <font color="blue">Then</font>
SetPrinterAsDefault = WinNTSetDefaultPrinter(DeviceName)
<font color="blue">ElseIf</font> osinfo.dwMajorVersion = <font color="darkblue"><b>4</b></font> <font color="blue">And</font> osinfo.dwPlatformId = <font color="darkblue"><b>1</b></font> <font color="blue">Then</font>
SetPrinterAsDefault = Win95SetDefaultPrinter(DeviceName)
<font color="blue">ElseIf</font> osinfo.dwMajorVersion = <font color="darkblue"><b>4</b></font> <font color="blue">And</font> osinfo.dwMinorVersion = <font color="darkblue"><b>0</b></font> <font color="blue">And</font> osinfo.dwBuildNumber = <font color="darkblue"><b>1381</b></font> <font color="blue">And</font> osinfo.dwPlatformId = <font color="darkblue"><b>2</b></font> <font color="blue">Then</font>
SetPrinterAsDefault = WinNTSetDefaultPrinter(DeviceName)
<font color="blue">ElseIf</font> osinfo.dwMajorVersion > <font color="darkblue"><b>4</b></font> <font color="blue">Then</font>
SetPrinterAsDefault = WinNTSetDefaultPrinter(DeviceName)
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">Else</font>
SetPrinterAsDefault = True
<font color="blue">End</font> <font color="blue">If</font>
<font color="blue">End</font> <font color="blue">Function</font>
<font color="blue">Private</font> <font color="blue">Sub</font> Class_Initialize()
<font color="blue">Dim</font> Buffer <font color="blue">As</font> <font color="blue">String</font>
<font color="blue">Dim</font> r <font color="blue">As</font> <font color="blue">Long</font>
Buffer = Space(<font color="darkblue"><b>8192</b></font>)
r = GetProfileString(<font color="teal">"windows"</font>, <font color="teal">"Device"</font>, <font color="teal">""</font>, Buffer, Len(Buffer))
<font color="blue">If</font> r <font color="blue">Then</font>
Buffer = <font color="blue">Mid</font>(Buffer, <font color="darkblue"><b>1</b></font>, r)
m_sPrevPrinterDevName = <font color="blue">Mid</font>(Buffer, <font color="darkblue"><b>1</b></font>, InStr(Buffer, <font color="teal">","</font>) - <font color="darkblue"><b>1</b></font>)
m_sPrevPrinterDriver = <font color="blue">Mid</font>(Buffer, InStr(Buffer, <font color="teal">","</font>) + <font color="darkblue"><b>1</b></font>, InStrRev(Buffer, <font color="teal">","</font>) - InStr(Buffer, <font color="teal">","</font>) - <font color="darkblue"><b>1</b></font>)
m_sPrevPrinterPort = <font color="blue">Mid</font>(Buffer, InStrRev(Buffer, <font color="teal">","</font>) + <font color="darkblue"><b>1</b></font>)
<font color="blue">Else</font>
m_sPrevPrinterDevName = <font color="teal">""</font>
m_sPrevPrinterDriver = <font color="teal">""</font>
m_sPrevPrinterDevName = <font color="teal">""</font>
<font color="blue">End</font> <font color="blue">If</font>
m_sCurrPrinterDevName = m_sPrevPrinterDevName
<font color="blue">End</font> <font color="blue">Sub</font>
<font color="blue">Private</font> <font color="blue">Sub</font> Class_Terminate()
<font color="blue">Call</font> SetPrinterAsDefault(m_sPrevPrinterDevName)
<font color="blue">End</font> <font color="blue">Sub</font>