This has been bugging me (pardon the pun!).
I've done some research, and the only other thing I can come up with, is that Windows appears to regularly change the numbered suffix for a printer. I'm not sure why, or when, but it's not constant - that's for sure.
I don't know whether this is only when on a network, or at each user login, but the port number's definitely not static.
When you did your original post, you obtained the full printer name by using a macro, and (understandably) hard-coded the name into your procedure.
There seem to be several methods of obtaining the current port numbers - including going into the registry - but I'm suggesting the following method, as the most simple one I've found, which might (?) achieve your goal. This particular one comes from Juan Pablo Gonzalez - from this website, but there are quite a few variations on a theme, out there.
The idea seems to be to iterate through the likely printer ports (appending them to the name of the printer you're trying to access), until the code doesn't error, and Bob's your uncle - you've found the CURRENT port for that printer!
Code:
Sub CHANGE_PRINTER_ONE()
Dim sCurrentPrinter As String
sCurrentPrinter = Application.ActivePrinter
Dim intgr As Integer
For intgr = 0 To 16
On Error Resume Next
Application.ActivePrinter = "\\IAN1516\Brother HL-2240 series LV Cell on Ne" & Format$(intgr, "00") & ":"
'Debug.Print "Active printer is " & Application.ActivePrinter & " Integer is now: " & Format$(intgr, "00") & " Error number is now: " & Err.Number
If Err.Number = "0" Then Exit For
Next intgr
If Not Application.ActivePrinter Like "\\IAN1516\Brother HL-2240 series LV Cell on Ne*" Then
MsgBox "Unable to set the printer", vbCritical
Exit Sub
End If
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Application.ActivePrinter = sCurrentPrinter
End Sub
I've made several changes to both his original code, and yours - to make it pertinent to your scenario.
Hopefully, this might just work...
Do tell!