2010-03-26 6 views
2

Je suis en train d'assigner une cellule dans Excel pour l'utilisateur de saisir le nom de l'imprimante où ils veulent l'imprimer pour aller ensuite utiliser cette valeur dans leConfiguration de l'imprimante via VBA dans Excel

Application.ActivePrinter = (use the cell value) 

Même si J'ai fait la programmation en attribuant un nom à la cellule et en l'utilisant dans une variable il me donne une erreur.

J'ai défini ma variable comme chaîne, texte, objet et variante et cela ne fonctionne pas.

Savez-vous quel code dois-je utiliser pour pouvoir faire cela?

Répondre

3

Sans tous les détails, je suppose que l'utilisateur n'entre pas toutes les informations nécessaires pour l'imprimante. Sur notre réseau, nos imprimantes sont configurées de façon à ce que vous ayez besoin du serveur d'impression, du nom de l'imprimante et du nom du réseau pour obtenir une impression correcte. Dans la fenêtre immédiate, essayez cette ligne de code pour voir comment vous devez entrer l'imprimante dans la feuille de calcul.

debug.Print application.ActivePrinter 

Vous pouvez aider l'utilisateur en fournissant les informations du serveur et du réseau (si elle se trouve être le même pour toutes les imprimantes). Dans mon bureau, vous devriez utiliser quelque chose comme ceci:

Application.ActivePrinter = "\\printserver\" & _ 
          range("printername").value & " on Ne05:" 
+0

+1 - CHERCHAIT cette information pour automatiser l'impression dans mon Application Excel Merci. –

1

noms d'imprimante sont très particulière - si elle n'est pas entré exactement que Windows attend, vous obtiendrez une erreur. (Puisque vous n'avez pas noté le message d'erreur spécifique dans votre question, je suppose que c'est là où le problème est, c'est le problème le plus probable.)

Ce que j'ai fait dans cette situation est de fournir à l'utilisateur un liste des imprimantes disponibles. Vous pouvez utiliser ce code pour remplir une liste (appelée lstPrinters):

Private Sub LoadPrintersListBox() 
    Dim prtLoop    As Printer 
    Dim strListRowSource As String 

    For Each prtLoop In Application.Printers 
     strListRowSource = strListRowSource + prtLoop.DeviceName + ";" 
    Next prtLoop 

    lstPrinters.RowSource = strListRowSource 
End Sub 

Ensuite, vous pouvez utiliser la sélection de l'utilisateur pour définir l'imprimante. (Ce code suppose un bouton appelé cmdSetPrinter est disponible, que l'utilisateur cliquera une fois que l'imprimante est sélectionnée.)

Private Sub cmdSetPrinter_Click() 
    Application.ActivePrinter = lstPrinters.Column(0) 
End Sub 

Vous pouvez être sûr que les imprimantes dans la liste sont nommés en fonction de ce que le système aura besoin, et vous n'avez pas besoin de vous soucier des fautes de frappe.

+0

Avec les références par défaut, le type d'objet Printer n'est pas disponible dans Excel VBA (je crois que c'est dans Access VBA) – ak112358

+0

Ah, mon erreur. J'ai utilisé le plus souvent VBA dans Access. –

1

Si vous faites face au problème que l'imprimante en question n'est pas installé sur leur machine, ce code devrait faire l'affaire pour vous:

Set WshNetwork = CreateObject("WScript.Network") 
PrinterPath = "\\SERVER\PRINTER 
WshNetwork.AddWindowsPrinterConnection PrinterPath