2012-03-22 22 views
0

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、ガブリエル

答えて

1

単純なアプローチ:あなたのUSBプリンタを共有して、net use経由LPT1:にプリンタ共有をマップ:

net use LPT1: \\.\PrinterShareName 

、あなたの古いコードの作品を​​作ってみることができますこの方法。

+0

Tks Turbo J、少し具体的である可能性はありますか?つまり、LPT1を書くだけでよいのでしょうか?または行全体:net use LPT1:\\。\ PrinterShareNameが必要です(この場合、プリンタの名前は "ticket"ですので、行の正しい構文はどのようになりますか)。私の古いコードを同じ方法で使用して、LPT1ポートを開いて起動しますか? – gabriel1957

+0

こんにちはTurbo J.システム担当者の助けを借りて、最終的にこの問題を解決することができました:net use LPT1:\\ PCName \ \ PrinterShareNameはコマンドプロンプトであなたに大きな助けとなりますスリムでシンプルなあなたは私のヒーローですsooo much so !!! much Regards、Gabriel – gabriel1957

関連する問題