“Llamada a procedimiento o argumento no válido” al configurar objeto Printer

StackOverflow https://stackoverflow.com/questions/737702

  •  09-09-2019
  •  | 
  •  

Pregunta

Tengo una aplicación VB6 que está dando un error 5, "llamada a procedimiento o argumento no válido" cuando el programa intenta establecer el objeto de impresora en una impresora específica de la colección de las impresoras. La impresora en cuestión es una especie de copiadora / impresora ejecuta a través de un servidor de impresión. El error no se produce cuando se ajusta el objeto de impresora a otras impresoras definidas en la colección. ¿Alguna idea de lo que podría estar causando el error 5 en esta circunstancia? No estoy seguro de qué es exactamente lo que sucede cuando se utiliza el "Establecer impresora = x" declaración en VB6 - está intentando que la interfaz con el controlador de impresora real en ese punto? ¿Es posible que el conductor no se reconoce como una impresora válida por el objeto VB6 de la impresora, por alguna razón, lo que resulta en el error "no válido argumento"?

¿Fue útil?

Solución

La "llamada de procedimiento no válido o argumento" es un error de tiempo de ejecución de VB 5.

Sospecho que el error 5 que se está viendo es el código de error de Win32, que significa "Acceso denegado".

Al parecer, los errores de tiempo de ejecución de VB se diferencian de los errores de Win32 - Sospecho que tiene que ver con las raíces de VB precediendo incluso a MS-DOS: http://blogs.msdn.com/ericlippert/archive/2004/09/09/227461.aspx . No estoy seguro de cómo se supone que para determinar cuál es la interpretación de usar cuando

Otros consejos

Está utilizando un código como éste para configurarlo correcto? No sólo tratando de establecer por una cadena?

   Dim strDeviceName As String
   Dim prnCurrent    As Printer

   For Each prnCurrent In Printers

      If UCase$(prnCurrent.DeviceName) = strDeviceName Then

         Set Printer = prnCurrent

         Exit For

      End If

   Next prnCurrent 

Con el fin de dejar de cambiar la impresora predeterminada de ejecutar este código antes de configurar la impresora. Entonces no tendrá que configurar la impresora predeterminada espalda. Esto también hace que su selección de impresora único a su programa que es lo que la mayoría de la gente quiere.

' deassociate printer object from default system printer
Printer.TrackDefault = False

He resuelto este problema en MS Access 2007 VBA incluyendo el nombre del servidor junto con el nombre de la impresora.

Application.Printer = Application.Printers("\\servername\printername")

en lugar de

Application.Printer = Application.Printers("printername")

Espero que esto ayude a alguien más.

Me estaba este error y después de un par de horas de frustración encontré mi respuesta. Era un tema delicado caso. Yo tenía un capital "S" cuando debería haber tenido una minúscula "s".

Así que cuando el código era la siguiente:

XeroxReport = "\\Share\Red Xerox 430"
Set Application.Printer = Application.Printers(XeroxReport)

Me sale error 5

Pero cuando lo cambié a:

XeroxReport = "\\share\Red Xerox 430"
Set Application.Printer = Application.Printers(XeroxReport)

Presto funcionó

Es posible que desee echar un vistazo a la página siguiente:

http://support.microsoft.com/kb/322710

Cuando la impresión en VB6 siempre uso este cuadro de diálogo en lugar del cuadro de diálogo común que viene con Visual Basic 6. Es mucho más fiable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top