「OPOS」プリンターと Access 2007 を使用しており、ドライバーと対話する VBA コードにアクセスしようとしています。
これまでのところ、Access VBA を噛み砕こうとしているこの VBA6 プログラムを入手しました。
Form1.frm:
VERSION 5.00
Object = "{CCB90150-B81E-11D2-AB74-0040054C3719}#1.0#0"; "OPOSPOSPrinter.ocx"
Begin VB.Form Step1
BorderStyle = 1 'fixed
Caption = "Step1: ""Hello OPOS"" is printed "
ClientHeight = 1590
ClientLeft = 45
ClientTop = 330
ClientWidth = 3795
LinkTopic = "MDIForm1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 1590
ScaleWidth = 3795
StartUpPosition = 3 'Windows default value
Begin VB.CommandButton cmdPrint
Caption = "Print Now"
Height = 450
Left = 1155
TabIndex = 0
Top = 525
Width = 1515
End
Begin OposPOSPrinter_CCOCtl.OPOSPOSPrinter OPOSPOSPrinter1
Left = 3120
OleObjectBlob = "Step1.frx":0000
Top = 960
End
End
Attribute VB_Name = "Step1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
' Step 1: "Hello OPOS" gets printed
Option Explicit
Private Sub cmdPrint_Click()
'send a string to the printer using method PrintNormal
'vbCrLf is VisualBasic standard newline
OPOSPOSPrinter1.PrintNormal PTR_S_RECEIPT, "Hello OPOS" + vbCrLf
End Sub
Private Sub Form_Load()
With OPOSPOSPrinter1
'open device
.Open "Unit1"
'Claim exclusive access
.ClaimDevice 1000
'enable the device
.DeviceEnabled = True
End With
End Sub
Private Sub Form_Unload(Cancel As Integer)
With OPOSPOSPrinter1
'stop device
.DeviceEnabled = False
'Release exclusive access
.ReleaseDevice
'Done with the printer
.Close
End With
End Sub
また
この他のファイルが含まれています: OposAll.bas
...VBA プロジェクト ファイルで確認できます。
Type=Exe
Form=Step1.frm
Module=OPOS; ..\..\..\..\Include\OposAll.bas
Object={CCB90150-B81E-11D2-AB74-0040054C3719}#1.0#0; OPOSPOSPrinter.ocx
IconForm="Step1"
Startup="Step1"
HelpFile=""
Title="SamplePrint1"
Command32=""
Name="SamplePrint1"
HelpContextID="0"
CompatibleMode="0"
MajorVer=1
MinorVer=0
RevisionVer=0
AutoIncrementVer=0
ServerSupportFiles=0
VersionCompanyName="MECS"
CompilationType=0
OptimizationType=0
FavorPentiumPro(tm)=0
CodeViewDebugInfo=0
NoAliasing=0
BoundsCheck=0
OverflowCheck=0
FlPointCheck=0
FDIVCheck=0
UnroundedFP=0
StartMode=0
Unattended=0
ThreadPerObject=0
MaxNumberOfThreads=1
[MS Transaction Server]
AutoRefresh=1
これを実際の Access VBA コードに変換する方法を理解するのに苦労しています。
私の質問はばかげているように思えるかもしれませんが、VBA6 も Access 2007 VBA も知らないことに注意してください。しかし、DLL バージョンでの作業はかなり簡単で、これも実行可能なものだと思いました。
1)ばかげた質問: このコードは何を表しているのですか? オブジェクトを初期化していますか?アクセスはそのOPOSPOSPrinter1
部分を気に入らないようですが、アクセスでこれを行う別の方法はありますか?
Begin OposPOSPrinter_CCOCtl.OPOSPOSPrinter OPOSPOSPrinter1
Left = 3120
OleObjectBlob = "Step1.frx":0000
Top = 960
End
2)これはおそらく最も重要な質問です。Access 2007 VBA から OCX ドライバーと通信するより適切な方法はありますか?