那这个Index如何确定?Public Function SetPrinter(Index As Integer) As Integer  If Printers.Count < 1 Then
    MsgBox "系统没有安装打印机!", vbCritical, App.Title
    SetPrinter = -1
    Exit Function
  End If
  
  On Error GoTo setErr
  Set Printer = Printers(Index)
  
  Exit Function
  
setErr:  '这里我想设置打印机为默认打印机,请问“?”的值该是多少(假设安装了两台打印机)?
  Set Printer = Printers("?")
  MsgBox "打印机设置错误!将使用系统默认打印机打印当前文件。", vbCritical, App.Title
End Function

解决方案 »

  1.   

    http://www.codeguru.com/forum/showthread.php?s=&postid=747772
      

  2.   

    程序一开始时就要把Printer的DeviceName用变量记住,那时Printer就是默认打印机;
    需要时在Printers中找到那个打印机.
      

  3.   

    有点头绪了,但是罗嗦了一点Public DefaultPrinterName As String '系统默认打印机设备名Sub Main()  '取得默认打印机设备名
      If Printers.Count > 0 Then
        DefaultPrinterName = Printer.DeviceName
      End IfEnd Sub
    Public Function SetPrinter(Index As Integer) As Integer
      Dim X As Printer, I As Integer
      
      If Printers.Count < 1 Then
        MsgBox "系统没有安装打印机!", vbCritical, App.Title
        SetPrinter = -1
        Exit Function
      End If
        
      On Error GoTo setErr
      
      Set Printer = Printers(Index)
      
      SetPrinter = Index
      
      Exit Function
      
    setErr:
       
       For Each X In Printers
      
         If X.DeviceName = DefaultPrinterName Then
           '停止寻找打印机。
           Exit For
         End If     I = I + 1  '我就是要得到这个I,这个I是要保存的!   Next
       
      SetPrinter = I
      
      Set Printer = Printers(I)
      
      MsgBox "打印机设置错误!将使用系统默认打印机打印当前文件。", vbCritical, App.TitleEnd Function'别处调用
    Private Sub CmdPrint_Click  If SetPrinter(BBPrinter) < 0 Then'没有打印机
        Exit Sub
      else
        BBPrinter=SetPrinter
        sReg = Chng_IniKey("打印机", "报表打印机", BBPrinter, iniFilePath)
      End If  '.....用获得的打印机继续打印end sub
      

  4.   

    上面调用时错了,应为
    '别处调用
    Private Sub CmdPrint_Click  BBPrinter = SetPrinter(BBPrinter)
      
      If BBPrinter < 0 Then '没有打印机
        Exit Sub
      Else
        sReg = Chng_IniKey("打印机", "报表打印机", BBPrinter, iniFilePath)'保存到配置文件
      End If
      '.....用获得的打印机继续打印end sub
      

  5.   

    完了!今天在一单位上测试时 Printers.Count 总是零!而该机明明装了打印机,打印也很正常!
    Win98系统,何解?在家里测试好好的。