【发布时间】:2011-08-30 12:35:10
【问题描述】:
我是 VBA 新手,但我正在尝试让 DYMO LabelWriter 在我的 Outlook 2010 的 VBA 应用程序中工作。
我找到了各种代码示例,但它们都不起作用。它们都返回相同的错误:
“无法创建 OLE 对象”
希望这是由一个简单的错误引起的,因为我不习惯使用 VBA。
我已启用 VBA 编辑器中名称中包含“DYMO”的每个引用。
这里是代码示例:
Sub PrintLabels()
'Rembo wrote this routine - http://scriptorium.serve-it.nl
'This routine prints Excel data on sticker by using a template and the Dymo high level COM.
'It assumes you have a Dymo labelwriter printer and you have created a label that will
'serve as a template. On the label are two'text objects named OText1 and OText2.
'As a data source we assume text in cells B2:B5 and C2:C5 on your the first worksheet but
'obviously you can use any data source you like.
Dim myDymo As Object
Dim myLabel As Object
Dim sPrinters As String
Dim arrPrinters() As String
Dim i As Long, i2 As Long, iStart As Long
On Error Resume Next
Set myDymo = CreateObject("Dymo.DymoAddIn")
Set myLabel = CreateObject("Dymo.DymoLabels")
If (myDymo Is Nothing) Or (myLabel Is Nothing) Then
MsgBox "Unable to create OLE objects"
Exit Sub
End If
'Check forDymo printer(s)
'If there is one proceed and store the printernames in a variable, else quit
sPrinters = myDymo.GetDymoPrinters()
If sPrinters = "" Then
Exit Sub
Else
i2 = 0
iStart = 1
For i = 1 To Len(sPrinters)
If Mid(sPrinters, i, 1) = "|" Then
i2 = i2 + 1
ReDim Preserve arrPrinters(i2 + 1)
arrPrinters(i2) = Mid(sPrinters, iStart, i - iStart)
iStart = i + 1
End If
Next i
End If
'Store the current default printer and select the Dymprinter of your choice
sDefaultPrinter = Application.ActivePrinter
With myDymo
'0 is first Dymo printer, you could use the printername instead: SelectPrinter "YourPrintername"
.SelectPrinter arrPrinters(0)
End With
'Open the label template
myLabel = myDymo.Open("C:\SomeFolder\LabelName.LWL")
For i = 3 To 5
'Give text objects OText1 and OText2 on the label a value
With myLabel
.SetField "OText1", Worksheets(1).Range("B" & i).Value
.SetField "OText2", Worksheets(1).Range("C" & i).Value
End With
'Print the label
With myDymo
.StartPrintJob 'Only used for Turbo 400 model and higher for print optimizing, you may omit it
.Print 2, False ' Print 2 copies
.EndPrintJob 'Only used for Turbo 400 model and higher for print optimizing, you may omit it
End With
Next i
'Make sure the default printer is selected again
Application.ActivePrinter = sDefaultPrinter
'Clean up
Set myLabel = Nothing
Set myDymo = Nothing
End Sub
【问题讨论】:
-
顺便说一句:我在 Windows 7 64 位上,并且已经安装了最新版本的 DYMO 标签软件
-
如果我修改显示 Err.Description 错误的代码,我得到的只是:“自动化错误”
-
如果你能告诉我们程序在哪一行死掉会很有帮助。
-
哦,当然 :) 第 16 行导致问题