Tuesday, January 10, 2006

Get the name of the default printer using VBA

Here is one way

Public Declare Function GetProfileString Lib "kernel32" _
        Alias "GetProfileStringA" _
        (ByVal lpAppName As String, _
         ByVal lpKeyName As String, _
         ByVal lpDefault As String, _
         ByVal lpReturnedString As String, _
         ByVal nSize As Long) As Long

Public Function DefaultPrinter() As String
  Dim strReturn As String
  Dim intReturn As Integer
  strReturn = Space(255)
  intReturn = GetProfileString("Windows", ByVal "device", "", _
  strReturn, Len(strReturn))
  If intReturn Then
    strReturn = UCase(Left(strReturn, InStr(strReturn, ",") - 1))
  End If
  DefaultPrinter = strReturn
End Function

3 comments <Add new>:

JTB World said...

Restored comment
by Anonymous
Works like a charm! Thanks!

Ian said...

Works with no problems.

Do you have code for setting default printer using VBA

Jimmy Bergmark - JTB World said...

In for example Excel VBA you can use Application.ActivePrinter
You can also use WScript object in VBA like this:
Dim objPrinter
Set objPrinter = CreateObject("WScript.Network")
objPrinter.SetDefaultPrinter "\\ServerName\PrinterName"


Some of the latest blog posts

Subscribe to RSS headline updates from:
Powered by FeedBurner