VBA Excel Imprimer avec Imprimante par défaut
Résolu
Mrfrize
Messages postés
188
Date d'inscription
Statut
Membre
Dernière intervention
-
Mrfrize Messages postés 188 Date d'inscription Statut Membre Dernière intervention -
Mrfrize Messages postés 188 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Cela fait une journée que je cherche comment imprimer avec l'imprimante par défaut et non avec la derniere sélectionné. J'ai trouvé cela mais j'ai un souci avec GetProfileString, j'ai un message d'erreur qui me dit Compile error: Sub or Function not defined.
Si quelqu'un a une idée de pourquoi cela ne marche pas ou une autre méthode je suis ouvert a toute solution.
Merci d'avance
Sub ImprimerSurDéfaut()
ActivePrinter = ImprimanteWindows
ActiveSheet.PrintOut
End Sub
Private Function ImprimanteWindows()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim s1 As String
Dim r As Long
Dim Buffer As String
Dim NomImpr As String
Dim Spool As String
Dim Port As String
Buffer = Space(8192)
r = GetProfileString("Windows", "Device", "", Buffer, Len(Buffer))
Debug.Print Buffer; i = InStr(Buffer, Chr(0))
If i > 0 Then
s1 = Left(Buffer, i - 1)
j = InStr(s1, ",")
k = InStr(j + 1, s1, ",")
NomImpr = Left(s1, j - 1)
If k > j Then
Spool = Mid(s1, j + 1, k - j - 1)
Port = Mid(s1, k + 1)
End If
Else
' pas d'imprimante par défaut ?
NomImpr = ""
End If
ImprimanteWindows = NomImpr & " on " & Port
End Function
Cela fait une journée que je cherche comment imprimer avec l'imprimante par défaut et non avec la derniere sélectionné. J'ai trouvé cela mais j'ai un souci avec GetProfileString, j'ai un message d'erreur qui me dit Compile error: Sub or Function not defined.
Si quelqu'un a une idée de pourquoi cela ne marche pas ou une autre méthode je suis ouvert a toute solution.
Merci d'avance
Sub ImprimerSurDéfaut()
ActivePrinter = ImprimanteWindows
ActiveSheet.PrintOut
End Sub
Private Function ImprimanteWindows()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim s1 As String
Dim r As Long
Dim Buffer As String
Dim NomImpr As String
Dim Spool As String
Dim Port As String
Buffer = Space(8192)
r = GetProfileString("Windows", "Device", "", Buffer, Len(Buffer))
Debug.Print Buffer; i = InStr(Buffer, Chr(0))
If i > 0 Then
s1 = Left(Buffer, i - 1)
j = InStr(s1, ",")
k = InStr(j + 1, s1, ",")
NomImpr = Left(s1, j - 1)
If k > j Then
Spool = Mid(s1, j + 1, k - j - 1)
Port = Mid(s1, k + 1)
End If
Else
' pas d'imprimante par défaut ?
NomImpr = ""
End If
ImprimanteWindows = NomImpr & " on " & Port
End Function
A voir également:
- VBA Excel Imprimer avec Imprimante par défaut
- Imprimer tableau excel sur une page - Guide
- Comment imprimer en a5 - Guide
- Liste déroulante excel - Guide
- Excel trier par ordre croissant chiffre - Guide
- Spouleur imprimante - Guide
1 réponse
Voici la solution que j'ai trouvé.
Sub Macro1()
Dim oShell As Object
Dim sRegval, sdefault
Set oShell = CreateObject("WScript.Shell")
sRegval = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device"
sdefault = ""
sdefault = oShell.RegRead(sRegval)
sdefault = Left(sdefault, InStr(sdefault, ",") - 1)
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
sdefault, Collate:=True
End Sub
Sub Macro1()
Dim oShell As Object
Dim sRegval, sdefault
Set oShell = CreateObject("WScript.Shell")
sRegval = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device"
sdefault = ""
sdefault = oShell.RegRead(sRegval)
sdefault = Left(sdefault, InStr(sdefault, ",") - 1)
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
sdefault, Collate:=True
End Sub