Board logo

標題: [發問] 如何取得印表機的PORT? [打印本頁]

作者: PKKO    時間: 2015-7-13 10:55     標題: 如何取得印表機的PORT?

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

但是vba不支援

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

但是port錯誤導致無法列印
作者: GBKEE    時間: 2015-7-14 06:01

回復 1# PKKO

可參考一下
作者: PKKO    時間: 2015-7-14 14:24

回復 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
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)