返回列表 上一主題 發帖

[發問] 如何取得印表機的PORT?

[發問] 如何取得印表機的PORT?

網路上找到的都是用Application.Printer.Port

但是vba不支援

因為網路印表機的port會更動,導致雖然印表機名稱相同

但是port錯誤導致無法列印
PKKO

回復 2# GBKEE


    感謝,這篇的功能跟我的程式碼不一樣,我目前的方式可以自動列出,也可以透過程式自動選擇印表機並且用測試的方式找出port,但這篇多了一個功能(彈跳視窗選擇印表機!)
  1. Dim reg As Variant, oreg As Object, mystr As Variant
  2.     Const HKEY_CURRENT_USER = &H80000001
  3.     Set oreg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
  4.     oreg.enumvalues HKEY_CURRENT_USER, "Software\Microsoft\Windows NT\CurrentVersion\Devices", mystr, Arr
  5.     For Each reg In mystr
  6.         If Left(reg, Len(Sheets("其他").[k2])) = Sheets("其他").[k2] Then '找出類似名稱的印表機
  7.             Exit For
  8.         End If
  9.     Next
  10.     '測試看看是哪一個Port
  11.     For i = 0 To 999
  12.         On Error Resume Next
  13.         If i < 10 Then X = "0" & i Else X = i
  14.         If i = 0 Then
  15.             Application.ActivePrinter = reg & " on nul:"
  16.             If Application.ActivePrinter = reg & " on nul:" Then Exit For
  17.         End If
  18.         Application.ActivePrinter = reg & " on Ne" & X & ":" '設定指定的印表機
  19.         If Application.ActivePrinter = reg & " on Ne" & X & ":" Then Exit For
  20.     Next
複製代碼
PKKO

TOP

        靜思自在 : 小事不做、大事難成。
返回列表 上一主題