« Appel de procédure incorrect ou argument » lors de la configuration objet imprimante

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

  •  09-09-2019
  •  | 
  •  

Question

J'ai une application VB6 qui donne une erreur 5, « appel de procédure incorrect ou argument » lorsque le programme tente de définir l'objet imprimante à une imprimante spécifique de la collection des imprimantes. L'imprimante en question est une sorte de copieur / imprimante en cours d'exécution via un serveur d'impression. L'erreur ne se produit pas quand l'objet d'imprimante à d'autres imprimantes définies dans la collection. Toutes les idées ce qui pourrait causer l'erreur 5 dans ce cas? Je ne sais pas exactement ce qui se passe lorsque vous utilisez l'instruction « Définir l'imprimante = x » dans VB6 - est-il tente d'interface avec le pilote d'imprimante réelle à ce moment-là? Est-il possible que le conducteur ne soit pas reconnu comme une imprimante valide par l'objet imprimante VB6 pour une raison quelconque, ce qui entraîne l'erreur « argument non valide »?

Était-ce utile?

La solution

Le "appel de procédure incorrect ou argument" est une erreur d'exécution VB 5.

Je pense que l'erreur 5 que vous voyez est le code d'erreur Win32, ce qui signifie « Accès refusé ».

Apparemment, les erreurs d'exécution VB diffèrent des erreurs Win32 - Je soupçonne que cela a à voir avec les racines de VB MS-même antérieures DOS: http://blogs.msdn.com/ericlippert/archive/2004/09/09/227461.aspx . Je ne sais pas comment vous êtes censé décider quelle interprétation à utiliser lorsque

Autres conseils

Vous utilisez le code comme ceci pour définir-il exact? Non seulement essayer de le régler par une chaîne?

   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 

Pour arrêter de changer l'imprimante par défaut que vous exécutez ce code avant de configurer l'imprimante. Ensuite, vous ne devrez pas remettre l'imprimante par défaut. Cela rend également votre sélection d'imprimante unique à votre programme qui est ce que la plupart des gens veulent.

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

J'ai résolu ce problème dans MS Access 2007 VBA en incluant le nom du serveur ainsi que le nom de l'imprimante.

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

au lieu de

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

Espérons que cela aide quelqu'un d'autre.

Je recevais cette erreur et après quelques heures de frustration trouvé ma réponse. Il était une affaire délicate question. J'ai eu un « S » majuscule quand j'aurais eu une minuscule « s ».

Alors, quand le code ressemblait à ceci:

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

Je recevrais erreur 5

Mais quand je l'ai changé:

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

presto il a travaillé

Vous pouvez jeter un oeil à la page suivante:

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

Lors de l'impression en VB6 J'utilise toujours cette boîte de dialogue au lieu de la boîte de dialogue commune qui vient avec VB6. Il est beaucoup plus fiable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top