2015-05-22 3 views
-1

Я должен исправить некоторые проблемы с программой, созданной в VB6.Невозможно получить сообщение об ошибке в VB6 на Windows 7, пока я могу на Windows Xp

Когда я пытаюсь распечатать файл в формате XPS, а затем я закрою окно выбора папки, программа даст мне «Ошибка времени выполнения 482».

Итак, я решил, чтобы получить ошибку с этим:

On Error GoTo Error_Handler 

Он работает на Windows XP, ошибка времени выполнения не отображается, но под Windows 7 (64 бита) программа не отвечает.

Я понятия не имею, почему он работает на стороне, а не на другой

У меня есть попытаться запустить на Windows 7, программное обеспечение в совместимости с Windows XP, но она не работает

Public Sub Print_All_Click() 
Dim prntLePrinter As Printer 
Dim iI As Integer 

    For Each prntLePrinter In Printers 
     iI = iI + 1 
    Next 

    On Error GoTo Error_Handler 

    If (iI > 0) Then 
     MousePointer = vbHourglass 
     'CD Référence d'échelle pour l'imprimante 
     Printer.ScaleHeight = 100 
     Printer.ScaleWidth = 100 
     'CD Configuration de la font 
     Printer.FontName = "Arial" 
     Printer.FontSize = 8 
     Printer.FontBold = False 
     Printer.FontItalic = False 
     Printer.FontUnderline = False 
     Printer.FontStrikethru = False 
     Printer.FontTransparent = True 
     Printer.Font.Charset = 0 

     If g_nbSessions = 1 Then 'Mode NORMAL 
      PrintHEADER 
      PrintGeneral 
      PrintExceedances 
      PrintEpc 
      PrintAlarms 
      PrintMfdPages 
      PrintEndReport 

     Else 'Mode CUMUL 
      PrintHEADERCumul 
      PrintCUMUL 
      PrintEndReportCumul 
     End If 

     Printer.EndDoc 

     MousePointer = vbDefault 

    Else 
     MsgBox "No printer installed !", vbOKOnly, Frm_Main.Caption 

    End If 

Error_Handler: 

    If MousePointer <> vbDefault Then 
     MousePointer = vbDefault 
    End If 

End Sub 
+0

Используйте 'Ii = Printers.Count' вместо первого' Для цикла Each'. Какой метод перескакивает на обработчик ошибок на XP? – wqw

+0

Спасибо за ваш ответ, но я нашел решение для своей проблемы. – Fred37b

ответ

0

Я нахожу решение.

Я должен использовать «Очистить», чтобы явным образом очистить объект Err после обработки ошибки, а затем, когда я хочу закрыть «папку с папкой выбора», программа закроет ее правильно в Windows XP и Windows 7.

Так что, если вы используете On Error GoTo Error_Handler

не забудьте использовать:

Error_Handler: 

И:

Err.Clear 

Мой код прямо сейчас:

Public Sub Print_All_Click() 
Dim prntLePrinter As Printer 
Dim iI As Integer 

    For Each prntLePrinter In Printers 
     iI = iI + 1 
    Next 

    On Error GoTo Error_Handler 

    If (iI > 0) Then 
     MousePointer = vbHourglass 
     'CD Référence d'échelle pour l'imprimante 
     Printer.ScaleHeight = 100 
     Printer.ScaleWidth = 100 
     'CD Configuration de la font 
     Printer.FontName = "Arial" 
     Printer.FontSize = 8 
     Printer.FontBold = False 
     Printer.FontItalic = False 
     Printer.FontUnderline = False 
     Printer.FontStrikethru = False 
     Printer.FontTransparent = True 
     Printer.Font.Charset = 0 

     If g_nbSessions = 1 Then 'Mode NORMAL 
      PrintHEADER 
      PrintGeneral 
      PrintExceedances 
      PrintEpc 
      PrintAlarms 
      PrintMfdPages 
      PrintEndReport 

     Else 'Mode CUMUL 
      PrintHEADERCumul 
      PrintCUMUL 
      PrintEndReportCumul 
     End If 

     Printer.EndDoc 

     MousePointer = vbDefault 

    Else 
     MsgBox "No printer installed !", vbOKOnly, Frm_Main.Caption 

    End If 

Error_Handler: 
Err.Clear 

    If MousePointer <> vbDefault Then 
     MousePointer = vbDefault 
    End If 

End Sub 
Смежные вопросы