WIN 7 64bitとExcel2010、パラレルポートのない新しいPCをインストールする前に、私のEpson TM U220を使用しようとしています。過去には私は現金の引き出しを開くには、この単純なコードを使用: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を使用したが、コード内で「USB001」に「LPT1」を変更した後の現金引き出しcommnadを開くに応答がないとしています。 いくつかのWebリサーチの後、私はうまくいくはずのコードを見つけましたが、何らかの理由でエラーメッセージがポップしています。
私が見つけたスレッドを引用し、「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
にunquote私は親切にあなたたちのいくつかの専門家は、コードを試してみてください、それが実際にVBAか何かではない場合、Excel2010のためにそれだけでdoesntの仕事かどうかを確認することを要求し
問題。また、ソフトウェア(コード)ソリューションでEpsonプリンタにコマンドを送信するという希望がない場合は、PCにパラレルポートをインストールして、パラレルパラレルケーブルを使用する必要があります。事前に
TKS、ガブリエル
Tks Turbo J、少し具体的である可能性はありますか?つまり、LPT1を書くだけでよいのでしょうか?または行全体:net use LPT1:\\。\ PrinterShareNameが必要です(この場合、プリンタの名前は "ticket"ですので、行の正しい構文はどのようになりますか)。私の古いコードを同じ方法で使用して、LPT1ポートを開いて起動しますか? – gabriel1957
こんにちはTurbo J.システム担当者の助けを借りて、最終的にこの問題を解決することができました:net use LPT1:\\ PCName \ \ PrinterShareNameはコマンドプロンプトであなたに大きな助けとなりますスリムでシンプルなあなたは私のヒーローですsooo much so !!! much Regards、Gabriel – gabriel1957