我想用我的爱普生TM U220,因为我在安装WIN 7 64bit和Excel2010的新PC之前没有并行端口。在过去,我用这个简单的代码来打开钱箱:excel bva代码发送命令到USB打印机
Sub drawer_opener()
Open "LPT1" For Output As #1
Print #1, Chr(27) + Chr(112) + Chr(0) + Chr(25) + Chr(250)
Close #1
End Sub
现在我使用的适配器并行-USB但在代码中改变“LPT1”到“USB001”后打开钱箱commnad没有反应。 经过一些网络研究后,我发现下面的代码应该工作,但它由于某种原因或其他原因不断弹出错误消息。
我引用了我找到的线索并将所有功劳归于“Mike” 报价 正如您发现的那样,该方法在USB打印机上无法使用。改为尝试 。我假设USB打印机设置为 您的默认打印机(虽然如果不是,则可以添加代码以查找 ),当然您还需要检查您的新打印机是否符合与旧的相同的控制代码。
迈克
Option Explicit
Private Declare Function OpenPrinter Lib "winspool.drv" _
Alias "OpenPrinterA" (ByVal pPrinterName As String, _
phPrinter As Long, ByVal pDefault As Long) As Long
Private Declare Function StartDocPrinter Lib "winspool.drv" _
Alias "StartDocPrinterA" (ByVal hPrinter As Long, _
ByVal Level As Long, pDocInfo As DOCINFO) As Long
Private Declare Function StartPagePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function WritePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long, pBuf As Any, _
ByVal cdBuf As Long, pcWritten As Long) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function EndDocPrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Declare Function EndPagePrinter Lib "winspool.drv" _
(ByVal hPrinter As Long) As Long
Private Type DOCINFO
pDocName As String
pOutputFile As String
pDatatype As String
End Type
Private Sub Command1_Click()
Dim printerHandle As Long, retVal As Long
Dim bytesWritten As Long, lDoc As Long
Dim s1 As String, MyDocInfo As DOCINFO
retVal = OpenPrinter(Printer.DeviceName, printerHandle, 0)
If retVal = 0 Then
MsgBox "Printer Not found"
Exit Sub
End If
MyDocInfo.pDocName = "Any Name"
MyDocInfo.pOutputFile = vbNullString
MyDocInfo.pDatatype = vbNullString
lDoc = StartDocPrinter(printerHandle, 1, MyDocInfo)
Call StartPagePrinter(printerHandle)
s1 = Chr(27) + Chr(112) + Chr(0) + Chr(25) + Chr(250)
retVal = WritePrinter(printerHandle, ByVal s1, _
Len(s1), bytesWritten)
retVal = EndPagePrinter(printerHandle)
retVal = EndDocPrinter(printerHandle)
retVal = ClosePrinter(printerHandle)
End Sub
所享有
我恳请你们的一些专家就请尝试代码,看看它是否只是不为Excel2010工作,如果它实际上不是VBA或什么问题。另外,如果没有希望通过软件(代码)解决方案向Epson打印机发送命令,我必须在PC上安装并行端口,并像以往一样开始使用并行 - 并行电缆。
韩国社交协会提前,加布里埃尔
Tks Turbo J,有没有可能你更具体一些。我的意思是,我认为在“属性”窗口中共享打印机很简单,我应该只写LPT1吗?或整行:净使用LPT1:\\。\ PrinterShareName是必要的(在这种情况下,我的打印机的名称是“票据”,所以如何才能在行中正确的语法现在,我怎样才能发送命令?.. 。使用我的旧代码以相同的方式,调用LPT1端口打开等? – gabriel1957 2012-03-26 17:23:19
嘿Turbo J.我终于从系统人员得到了帮助,最终可以解决这个问题:net use LPT1:\\ PCName \ \ PrinterShareName在命令提示符处给你很大的帮助。Slim and simple。你是我的英雄,谢谢sooo !!!最好的问候,Gabriel – gabriel1957 2012-04-02 22:56:33