Você pode adicionar um procedimento ao módulo ThisWorkbook/ThisDocument
do seu personal.xls / normal.dot que detectaria se você estivesse em casa e definiria o padrão da impressora adequadamente.
Eu não testei isso, mas USERDOMAIN
(índice 30) deve ser adequado para essa finalidade. O código a seguir deve fornecer uma ideia aproximada do que é necessário para fazer isso.
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
Observe que as portas provavelmente serão diferentes em seu PC, você pode executar o seguinte código para verificar o que o VBA acha que suas impressoras são chamadas.
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
Isso listará todos os nomes de impressoras instaladas na janela Immediate do Editor do Visual Basic (CTRL + G para a janela Immediate se você não estiver muito familiarizado com o VBA)