« Appel de procédure incorrect ou argument » lors de la configuration objet imprimante
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 »?
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.