private sub set_print()
  Open "LPT1:" For Output As #1
   Print #1  开始
   Print #1  内容
   Print #1  内容
   Print #1  内容
   Print #1  内容
   Print #1  结束
   Close #1
end sub
Private Sub Command1_Click()
   for i=0 to text1.text         '//这个地方的text1是界面输入的数据。
      call set_print      '//调用上面的过程
   next
End Sub
这个我是实现把数据输出道LPT1接口,实现打印,如果打印数量(text1输入的数量)为16以下没有问题超过50就提示错误
Run-tiem error '52'
Bad file name or number  
错误
应该怎么解决啊?下面是别人给我的方法,可是还是不行:
fnum = FreeFile
Open "LPT1:" For Output As #fnum
Print #fnum 开始
Print #fnum 内容
Print #fnum 内容
Print #fnum 内容
Print #fnum 内容
Print #fnum 结束
Close #fnum请高手指教

解决方案 »

  1.   

    这是顶云兄的代码,你看看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
      

  2.   


    Private Sub Command1_Click() 
        Open "LPT1 " For Output As #1 
            For I = 1 To 5 
                Print #1, Chr(10)      '控制换行,同Chr(13) 
            Next 
            Print #1, Chr(27); "IA "; "ABCDEFGHIJKL "          '正常字体每行80字符 " 
            Print #1, Chr(14); "ABCDEFGHIJKL "        '宽体每行40字符 
            Print #1, Chr(27); "IA "        '恢复正常字体 
            Print #1, Chr(27); "IA "; "ABCDEFGHIJKL "          '正常字体每行80字符 " 
            Print #1, Chr(27); "IB "; "ABCDEFGHIJKL "          '横向扩展每行40字符 
            Print #1, Chr(27); "IC "; "ABCDEFGHIJKL "          '纵向扩展每行80字符 
            Print #1, Chr(27); "E "; "ABCDEFGHIJKL "          '加重黑体 
            Print #1, Chr(27); "F "        '取消加重黑体 
            Print #1, Chr(27); "IA "        '恢复正常字体 
            Print #1, Chr(27); "4 "; "ABCDEFGHIJKL "          '斜体 
            Print #1, Chr(27); "5 "        '取消斜体 
            Print #1, Chr(27); "0 "; "ABCDEFGHIJKL "          '打印每吋6行改8行 
            Print #1, Chr(27); "1 "; "ABCDEFGHIJKL "          '重置行间隔为7/72 
            Print #1, Chr(27); "2 "; "ABCDEFGHIJKL "          '重置行间隔为1/6 
            Print #1, Chr(27); "IA "; "ABCDEFGHIJKL "          '正常字体每行80字符 " 
            'Print  #1,  Chr(12)  '控制换页 
        Close #1 
    End Sub 
      

  3.   

    使用 LPrint 代替 Print 看看。
      

  4.   

    打印机执行打印命令是需要时间的,建议用Timer计时器控制发送到打印机的节奏.
    Option Explicit
        Dim i As Long
        
    Private Sub set_print()
        Open "LPT1:" For Output As #1
            Print #1, "开始"
            Print #1, "内容"
            Print #1, "内容"
            Print #1, "内容"
            Print #1, "内容"
            Print #1, "内容"
        Close #1
    End Sub
    Private Sub Command1_Click()
        Timer1.Enabled = True
    End SubPrivate Sub Form_Load()
        Timer1.Interval = 1000 '此值需要调整
        Timer1.Enabled = False
    End SubPrivate Sub Timer1_Timer()
        Call set_print '调用set_print过程
        i = i + 1
        If i >= Val(Text1.Text) Then
            Timer1.Enabled = False
        End If
    End Sub
      

  5.   

    Private Sub Timer1_Timer()
        Call set_print '调用set_print过程
        i = i + 1
        If i >= Val(Text1.Text) Then
            i = 0
            Timer1.Enabled = False
        End If
    End Sub
      

  6.   

    Option Explicit
        Dim i As Long
        
    Private Sub set_print()
        Open "LPT1" For Output As #1
            Print #1, "开始"
            Print #1, "内容"
            Print #1, "内容"
            Print #1, "内容"
            Print #1, "内容"
            Print #1, "内容"
        Close #1
    End Sub
    Private Sub Command1_Click()
        Timer1.Enabled = True
    End SubPrivate Sub Form_Load()
        Timer1.Interval = 1000 '此值需要调整
        Timer1.Enabled = False
    End SubPrivate Sub Timer1_Timer()
        Call set_print '调用set_print过程
        i = i + 1
        If i >= Val(Text1.Text) Then
            i = 0
            Timer1.Enabled = False
        End If
    End Sub
      

  7.   

    既然是连续打印,Open 、 Close 语句放在循环外面。
    又:通常条码打印机有相同内容重复打印的命令的,不需要循环,仔细看看接口文档。
      

  8.   

    试试内容放入数组,然后用join分行一次性print,比如:    dim a
        
        a=array("开始","内容1","内容2","内容3".....)
        Open "LPT1" For Output As #1
            Print #1, join(a,vbcrlf)
        Close #1
         
      

  9.   

    为什么不直接用Printer对象呢?
      

  10.   

    这个绝对不行
    有人提示  建立一个Generic Text/Only的打印机,用Printer.print方式把字符串打印到这个打印机,剩下的工作有windows来解决。
    我不知道怎么来实现
      

  11.   

    Sub Set_Print(rec as string)
    fn=Freefile
    Open "LPT1:" For Output As #fn Len=Len(rec)
     print#fn,rec
    close#fn
    End sub
      

  12.   

    Len=Len(rec)????
    没有看懂您的代码可否麻烦说详细一点。非常感谢。