Puede agregar un procedimiento al ThisWorkbook/ThisDocument
módulo de su personal.xls / normal.dot que detectaría si estaba en su casa y establecería la impresora por defecto de manera adecuada.
No he probado esto, pero USERDOMAIN
(índice 30) debería ser adecuado para este propósito. El siguiente código debería darle una idea aproximada de lo que se requiere para hacer esto.
Sub checkDomain()
Dim desiredPrinter As String
If Environ(30) = "USERDOMAIN=YOURWORKDOMAIN" Then
'Set work default printer
desiredPrinter = "\\NetworkAddress\Work Printer on Ne04:"
Else
'Set home default printer
desiredPrinter = "Microsoft XPS Document Writer on Ne01:"
End If
If Not Application.ActivePrinter = desiredPrinter Then
Application.ActivePrinter = desiredPrinter
End If
End Sub
Tenga en cuenta que los puertos probablemente serán diferentes en su PC, puede ejecutar el siguiente código para verificar cómo VBA cree que se llaman sus impresoras.
Sub PrinterList()
Dim objWMIService
Dim colInstalledPrinters
Dim objPrinter
Dim strPrinterName As String
Dim strComputer As String
strPrinterName = Application.ActivePrinter
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer ")
For Each objPrinter In colInstalledPrinters
If objPrinter.PrinterStatus = 1 Or objPrinter.PrinterStatus = 2 Or objPrinter.PrinterStatus = 7 Then
Debug.Print "offline:" & objPrinter.Name
Else
If InStr(strPrinterName, objPrinter.Name) Then
Debug.Print objPrinter.Name & "*"
Else
Debug.Print objPrinter.Name
End If
End If
Next
End Sub
Esto enumerará todos los nombres de impresoras instaladas en la ventana Inmediato del Editor de Visual Basic (CTRL + G para la ventana Inmediato si no está muy familiarizado con VBA)