Public Function PrintBarcode(printstr As String) As String        Dim m_port As String
        m_port = ReadIni("ZEBRA888T", "port")
    
        Dim arrPrint() As String
        arrPrint = Split(printstr, "^")
        
        Open App.Path & "\print.txt" For Output As #1
   
        '循环打印
        '外层循环
        Dim strPrint() As String
        strPrint = Split(printstr, "$")
        Dim arrLen As Integer
        arrLen = UBound(strPrint) - LBound(strPrint) + 1
        Dim printstring As String  '打印内容
        printstring = ""
        
        For k = 0 To arrLen - 1
            Dim strParam() As String
            strParam = Split(strPrint(k), "^")
            '内层循环
            '循环打印
            
            
            '打印运单上的标签
            Print #1, "#!A1"
            Print #1, "#IMSR65.02/55.03"   '标签宽、高
            Print #1, "#HV65"            '浓度
            Print #1, "#PR4/4/"         '打印速度
            Print #1, "#RX0"
            Print #1, "#N13"
            Print #1, "#ERN/1//0"
            
            '以下是打印内容
            Print #1, "#T09.91 #J04.06 #YN901/0U/42///" & strParam(3) & "#G"             '汉字
            Print #1, "#T07.96 #J39.20 #YN101/0/42///YN101#G"                      '字符
            Print #1, "#T06.52 #J35.48 #YL0/0/00.51/74.25"                          '划线
            Print #1, "#T07.20 #J16.00 #YB13/0P2.0M/13.46/4///12343578329-3124#G"    '条码
                        
            '打印
            Print #1, "#Q1#G"
            Print #1, "#!P1"
        Next
           
        Close #1
        On Error Resume Next
       
        '文件字符集转换
        Dim filename As String, b() As Byte, S As String
        Dim ADO_Stream As Object
        filename = App.Path & "\print.txt" '请修改为具体文件名
        'If Dir(FileName) = "" Then Exit Sub
        ReDim b(FileLen(filename))
        Open filename For Binary As #1
        Get #1, , b
        Close #1
        S = StrConv(b, vbUnicode)
        
        Set ADO_Stream = CreateObject("ADODB.Stream")
        
        With ADO_Stream
            .Type = 2
            .Mode = 3
            .Charset = "utf-8"
            .Open
            .WriteText S
            .SaveToFile filename, 2
        End With
        
        Set ADO_Stream = Nothing
        FileCopy App.Path & "\print.txt", m_port
        
        If Err.number <> 0 Then
            ZebraPrint = "请确认打印机端口设置正确" ''Err.Description
        Else
            ZebraPrint = ""
        End If
End Function好像  FileCopy  不被识别 为啥呢?

解决方案 »

  1.   

    LZ的代码是输出到文本文件的代码.
    打印需要这样组织代码:
    Private Sub Command1_Click()
    Dim i As Integer
    Open "LPT1" For Output As #1
    Print #1, Chr(27); Chr(64) '清除原先的打印设置,即初始化
    Print #1, Chr(28) & "@" '设置汉字状态
    pnt1
    Print #1, Chr(28) & "J" '设置汉字纵向打印
    pnt1
    Print #1, Chr(28) & "K" '设置汉字横向打印状态
    Print #1, Chr(27); "3"; Chr(45) '设置换行量宽度
    Print #1, Chr(27); "W"; Chr(1) '设置四倍放大
    Print #1, Chr(27); "q"; Chr(3) '设置空心字
    pnt1
    Print #1, Chr(27); Chr(64) '清除原先的打印设置,即初始化
    For i = 3 To 24 Step 3 '执行字符间隔调整
    Print #1, Chr(28); "S"; Chr(0); Chr(i)
    pnt1
    Next
    Print #1, Chr(28); "S"; Chr(0); Chr(3)
    Print #1, Chr(27); "4"; '设置斜体
    Print #1, Chr(27); "q"; Chr(3) '设置空心字
    pnt1
    'Print #1, Chr(28) & "." '切换回西文状态
    Close #1
    End SubPrivate Sub Form_Load()
    Text1 = ""
    Open "LPT1" For Output As #1
    Print #1, Chr(27); Chr(64) '清除原先的打印设置,即初始化
    Close
    End SubPublic Sub pnt1()
    Print #1, , "LPT1:" & "带有心脏的中英文打印机"
    End Sub
    或者使用Printer对象实施打印.
      

  2.   

    我要的是从自动生成的Print.txt中读取的内容发送到打印机打印。 '打印运单上的标签
      Print #1, "#!A1"
      Print #1, "#IMSR65.02/55.03" '标签宽、高
      Print #1, "#HV65" '浓度
      Print #1, "#PR4/4/" '打印速度
      Print #1, "#RX0"
      Print #1, "#N13"
      Print #1, "#ERN/1//0"这一段是标签内容被存到啦Print.txt中
     发送到打印机出来就是 条形码。现在我要的是从这个Print.txt中
    读取内容发送到打印机进行打印。Dim m_port As String
    m_port = ReadIni("ZEBRA888T", "port")
    这个是打印机的端口读取的配置文件。我想着用FileCopy App.Path & "\print.txt", m_port  可以调用打印机但是 没效果。
      

  3.   

    我已经搞定啦 谢谢,我原来是想着吧 要打印的内容输入到 一个txt 文本中 在 从文本中调用,
    现在直接打印 可以啦
      

  4.   

           Dim arrPrint() As String
            arrPrint = Split(printstr, "^")
            
            ''Open App.Path & "\print.txt" For Output As #1
            Open "LPT1:" For Output As #1   ///////我把上面那一句替换成这一句,可以打数字字母,但是不能打印中文,如果我按原来的还是把它写到一个txt文件中用dos命令使用打印机却可以打印中文,打印机编码已经调为UTF-8
       
            '循环打印
            '外层循环
            Dim strPrint() As String
            strPrint = Split(printstr, "$")
            Dim arrLen As Integer
            arrLen = UBound(strPrint) - LBound(strPrint) + 1
      

  5.   

    修改成com1 端口,还是先吧内容存到一个 print。txt文件中 在转换格式 搞定然后输送到打印机 搞定
      

  6.   

    Print #1, Chr(28) & "@" '设置汉字状态
      

  7.   


                Print #1, "A15,15,0,8,1,1,N," & Chr(34) & "合同:" & Chr(34)
                Print #1, Chr(13) + Chr(10)
                Print #1, "A100,20,0,4,1,1,N," & Chr(34) & arrPrint(0) & Chr(34)
                Print #1, Chr(13) + Chr(10)
    你能 给我说说 "A15,15,0,8,1,1,N," & Chr(34)中的每个字符代表是啥吗? 这个是斑马打印机上的,打印机还没
    拿到,没法 看效果, 所以只能先问问你 我好先调调
      

  8.   


    为什么不使用Printer对象?
      

  9.   

    我贴出的代码是EPSON针打的,各种打印机控制命令可能有不同,需要看产品说明书.
      

  10.   

    LZ 您好,请问你用的是斑马打印机还是艾丽打印机,通信使用的以太网吗?还有就是那个配置打印机接口的ini 文件可否贴出来看看,谢谢!
      

  11.   

    ......
    为何不用printer对象呢?