Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 43
Default Listing Available Printers

I found this code that when you CTRL+G from Visual Basic it displays all my
printers:
Sub PrinterSelect_macro()
Dim wshNetwork As Object
Dim oDrives As Object
Dim oPrinters As Object
Dim iCount As Integer
Dim sCurrentprinter As String
sCurrentprinter = Application.ActivePrinter
Set wshNetwork = CreateObject("WScript.Network")
Set oDrives = wshNetwork.EnumNetworkDrives
Set oPrinters = wshNetwork.EnumPrinterConnections
For iCount = 0 To oPrinters.Count - 1 Step 2
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
Next
Range("AI35") = sCurrentprinter 'I added this line and it pastes my HP
DeskJet in cell AI35
End Sub

I added the line where it pastes the printer name in AI35 (same sheet as
code). What I want it to do is, paste the next printer in AI36, then the
following in AI37 and so on. When I CTRL+G and run macro it shows 5
printers, I would like to allow for around 20 (AI35:AI54). I tried several
ways to loop it and move down to the next cell but I cannot get it to work.
So if I had 10 printers (network included) it would have all 10 listed from
cells AI35:AI44. Thank you for your help!

Mike Olson
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,942
Default Listing Available Printers

hi,
you have to have the paste part inside the loop for it to work the way you
want it. i'm guessing that it just pasted the last printer.
add this to the code.
at the top with the other dims....dim PP as range
with the other sets.....set pp = range("A135")
then inside the for next loop put this after the line
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)

pp.value = sCurrentprinter
set pp = pp.offset(1,0) 'move down 1

untested so use at your own risk.
As to why your are getting 5 printers instead of the expected 20, i dont'
know. could be the way your network is set up. see IT.

Regards
FSt1

"mikeolson" wrote:

I found this code that when you CTRL+G from Visual Basic it displays all my
printers:
Sub PrinterSelect_macro()
Dim wshNetwork As Object
Dim oDrives As Object
Dim oPrinters As Object
Dim iCount As Integer
Dim sCurrentprinter As String
sCurrentprinter = Application.ActivePrinter
Set wshNetwork = CreateObject("WScript.Network")
Set oDrives = wshNetwork.EnumNetworkDrives
Set oPrinters = wshNetwork.EnumPrinterConnections
For iCount = 0 To oPrinters.Count - 1 Step 2
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
Next
Range("AI35") = sCurrentprinter 'I added this line and it pastes my HP
DeskJet in cell AI35
End Sub

I added the line where it pastes the printer name in AI35 (same sheet as
code). What I want it to do is, paste the next printer in AI36, then the
following in AI37 and so on. When I CTRL+G and run macro it shows 5
printers, I would like to allow for around 20 (AI35:AI54). I tried several
ways to loop it and move down to the next cell but I cannot get it to work.
So if I had 10 printers (network included) it would have all 10 listed from
cells AI35:AI44. Thank you for your help!

Mike Olson

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 43
Default Listing Available Printers

Getting closer. That populated my HP DeskJet into 5 cells (I have 5 printers
that show up), it just repeated the same on over. I wasn't expecting 20
printers, just want to allow for that incase it picks up a bunch of network
printers. So, now to get it to list each separate printer...any ideas?

Mike Olson

"FSt1" wrote:

hi,
you have to have the paste part inside the loop for it to work the way you
want it. i'm guessing that it just pasted the last printer.
add this to the code.
at the top with the other dims....dim PP as range
with the other sets.....set pp = range("A135")
then inside the for next loop put this after the line
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)

pp.value = sCurrentprinter
set pp = pp.offset(1,0) 'move down 1

untested so use at your own risk.
As to why your are getting 5 printers instead of the expected 20, i dont'
know. could be the way your network is set up. see IT.

Regards
FSt1

"mikeolson" wrote:

I found this code that when you CTRL+G from Visual Basic it displays all my
printers:
Sub PrinterSelect_macro()
Dim wshNetwork As Object
Dim oDrives As Object
Dim oPrinters As Object
Dim iCount As Integer
Dim sCurrentprinter As String
sCurrentprinter = Application.ActivePrinter
Set wshNetwork = CreateObject("WScript.Network")
Set oDrives = wshNetwork.EnumNetworkDrives
Set oPrinters = wshNetwork.EnumPrinterConnections
For iCount = 0 To oPrinters.Count - 1 Step 2
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
Next
Range("AI35") = sCurrentprinter 'I added this line and it pastes my HP
DeskJet in cell AI35
End Sub

I added the line where it pastes the printer name in AI35 (same sheet as
code). What I want it to do is, paste the next printer in AI36, then the
following in AI37 and so on. When I CTRL+G and run macro it shows 5
printers, I would like to allow for around 20 (AI35:AI54). I tried several
ways to loop it and move down to the next cell but I cannot get it to work.
So if I had 10 printers (network included) it would have all 10 listed from
cells AI35:AI44. Thank you for your help!

Mike Olson

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 43
Default Listing Available Printers

With these changes, I got these results, but the results wouldn't be useable:
'Sub PrinterSelect_macro()
Dim wshNetwork As Object
Dim oDrives As Object
Dim oPrinters As Object
Dim iCount As Integer
Dim pp As Range
Dim sCurrentprinter As String
sCurrentprinter = Application.ActivePrinter
Set wshNetwork = CreateObject("WScript.Network")
Set oDrives = wshNetwork.EnumNetworkDrives
Set oPrinters = wshNetwork.EnumPrinterConnections
Set pp = Range("AI35")
For iCount = 0 To oPrinters.Count - 1 Step 2
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
sCurrentprinter = "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
pp.Value = sCurrentprinter
Set pp = pp.Offset(1, 0) 'move down 1
Next
End Sub
'
that code gives this: in the proper cells:
AI35 Printer Port Microsoft Document Imaging Writer Port: = Microsoft
Office Document Image Writer
AI36 Printer Port LPT1: = HP DeskJet 697C
AI37 Printer Port USB001 = \\NOTEBOOK\HP Deskjet 3900 Series
and so on.
The problem is, the name that I need to appear in AI36 is: HP DeskJet 697C
on LPT1:
and in AI37 it should be: \\NOTEBOOK\HP Deskjet 3900 Series on Ne03:

Then the cells would have a useable printer name that I can put in my code
(already functions manually, I am trying to populate all the available
printers in those cells)

Thanks again.


"FSt1" wrote:

hi,
you have to have the paste part inside the loop for it to work the way you
want it. i'm guessing that it just pasted the last printer.
add this to the code.
at the top with the other dims....dim PP as range
with the other sets.....set pp = range("A135")
then inside the for next loop put this after the line
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)

pp.value = sCurrentprinter
set pp = pp.offset(1,0) 'move down 1

untested so use at your own risk.
As to why your are getting 5 printers instead of the expected 20, i dont'
know. could be the way your network is set up. see IT.

Regards
FSt1

"mikeolson" wrote:

I found this code that when you CTRL+G from Visual Basic it displays all my
printers:
Sub PrinterSelect_macro()
Dim wshNetwork As Object
Dim oDrives As Object
Dim oPrinters As Object
Dim iCount As Integer
Dim sCurrentprinter As String
sCurrentprinter = Application.ActivePrinter
Set wshNetwork = CreateObject("WScript.Network")
Set oDrives = wshNetwork.EnumNetworkDrives
Set oPrinters = wshNetwork.EnumPrinterConnections
For iCount = 0 To oPrinters.Count - 1 Step 2
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
Next
Range("AI35") = sCurrentprinter 'I added this line and it pastes my HP
DeskJet in cell AI35
End Sub

I added the line where it pastes the printer name in AI35 (same sheet as
code). What I want it to do is, paste the next printer in AI36, then the
following in AI37 and so on. When I CTRL+G and run macro it shows 5
printers, I would like to allow for around 20 (AI35:AI54). I tried several
ways to loop it and move down to the next cell but I cannot get it to work.
So if I had 10 printers (network included) it would have all 10 listed from
cells AI35:AI44. Thank you for your help!

Mike Olson

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,942
Default Listing Available Printers

hi,
try changing this line...
'sCurrentprinter = "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
to this line.....
sCurrentprinter = oPrinters.Item(iCount + 1) & " at " & _
oPrinters.Item(iCount)

regards
FSt1
"mikeolson" wrote:

With these changes, I got these results, but the results wouldn't be useable:
'Sub PrinterSelect_macro()
Dim wshNetwork As Object
Dim oDrives As Object
Dim oPrinters As Object
Dim iCount As Integer
Dim pp As Range
Dim sCurrentprinter As String
sCurrentprinter = Application.ActivePrinter
Set wshNetwork = CreateObject("WScript.Network")
Set oDrives = wshNetwork.EnumNetworkDrives
Set oPrinters = wshNetwork.EnumPrinterConnections
Set pp = Range("AI35")
For iCount = 0 To oPrinters.Count - 1 Step 2
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
sCurrentprinter = "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
pp.Value = sCurrentprinter
Set pp = pp.Offset(1, 0) 'move down 1
Next
End Sub
'
that code gives this: in the proper cells:
AI35 Printer Port Microsoft Document Imaging Writer Port: = Microsoft
Office Document Image Writer
AI36 Printer Port LPT1: = HP DeskJet 697C
AI37 Printer Port USB001 = \\NOTEBOOK\HP Deskjet 3900 Series
and so on.
The problem is, the name that I need to appear in AI36 is: HP DeskJet 697C
on LPT1:
and in AI37 it should be: \\NOTEBOOK\HP Deskjet 3900 Series on Ne03:

Then the cells would have a useable printer name that I can put in my code
(already functions manually, I am trying to populate all the available
printers in those cells)

Thanks again.


"FSt1" wrote:

hi,
you have to have the paste part inside the loop for it to work the way you
want it. i'm guessing that it just pasted the last printer.
add this to the code.
at the top with the other dims....dim PP as range
with the other sets.....set pp = range("A135")
then inside the for next loop put this after the line
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)

pp.value = sCurrentprinter
set pp = pp.offset(1,0) 'move down 1

untested so use at your own risk.
As to why your are getting 5 printers instead of the expected 20, i dont'
know. could be the way your network is set up. see IT.

Regards
FSt1

"mikeolson" wrote:

I found this code that when you CTRL+G from Visual Basic it displays all my
printers:
Sub PrinterSelect_macro()
Dim wshNetwork As Object
Dim oDrives As Object
Dim oPrinters As Object
Dim iCount As Integer
Dim sCurrentprinter As String
sCurrentprinter = Application.ActivePrinter
Set wshNetwork = CreateObject("WScript.Network")
Set oDrives = wshNetwork.EnumNetworkDrives
Set oPrinters = wshNetwork.EnumPrinterConnections
For iCount = 0 To oPrinters.Count - 1 Step 2
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
Next
Range("AI35") = sCurrentprinter 'I added this line and it pastes my HP
DeskJet in cell AI35
End Sub

I added the line where it pastes the printer name in AI35 (same sheet as
code). What I want it to do is, paste the next printer in AI36, then the
following in AI37 and so on. When I CTRL+G and run macro it shows 5
printers, I would like to allow for around 20 (AI35:AI54). I tried several
ways to loop it and move down to the next cell but I cannot get it to work.
So if I had 10 printers (network included) it would have all 10 listed from
cells AI35:AI44. Thank you for your help!

Mike Olson



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 43
Default Listing Available Printers

I tried that too, it works fine on the LPT1:, but for the USB001, it doesn't
show if it's Ne01 or Ne02 or Ne03 & so on. Thanks for your efforts!

Mike Olson

"FSt1" wrote:

hi,
try changing this line...
'sCurrentprinter = "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
to this line.....
sCurrentprinter = oPrinters.Item(iCount + 1) & " at " & _
oPrinters.Item(iCount)

regards
FSt1
"mikeolson" wrote:

With these changes, I got these results, but the results wouldn't be useable:
'Sub PrinterSelect_macro()
Dim wshNetwork As Object
Dim oDrives As Object
Dim oPrinters As Object
Dim iCount As Integer
Dim pp As Range
Dim sCurrentprinter As String
sCurrentprinter = Application.ActivePrinter
Set wshNetwork = CreateObject("WScript.Network")
Set oDrives = wshNetwork.EnumNetworkDrives
Set oPrinters = wshNetwork.EnumPrinterConnections
Set pp = Range("AI35")
For iCount = 0 To oPrinters.Count - 1 Step 2
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
sCurrentprinter = "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
pp.Value = sCurrentprinter
Set pp = pp.Offset(1, 0) 'move down 1
Next
End Sub
'
that code gives this: in the proper cells:
AI35 Printer Port Microsoft Document Imaging Writer Port: = Microsoft
Office Document Image Writer
AI36 Printer Port LPT1: = HP DeskJet 697C
AI37 Printer Port USB001 = \\NOTEBOOK\HP Deskjet 3900 Series
and so on.
The problem is, the name that I need to appear in AI36 is: HP DeskJet 697C
on LPT1:
and in AI37 it should be: \\NOTEBOOK\HP Deskjet 3900 Series on Ne03:

Then the cells would have a useable printer name that I can put in my code
(already functions manually, I am trying to populate all the available
printers in those cells)

Thanks again.


"FSt1" wrote:

hi,
you have to have the paste part inside the loop for it to work the way you
want it. i'm guessing that it just pasted the last printer.
add this to the code.
at the top with the other dims....dim PP as range
with the other sets.....set pp = range("A135")
then inside the for next loop put this after the line
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
pp.value = sCurrentprinter
set pp = pp.offset(1,0) 'move down 1

untested so use at your own risk.
As to why your are getting 5 printers instead of the expected 20, i dont'
know. could be the way your network is set up. see IT.

Regards
FSt1

"mikeolson" wrote:

I found this code that when you CTRL+G from Visual Basic it displays all my
printers:
Sub PrinterSelect_macro()
Dim wshNetwork As Object
Dim oDrives As Object
Dim oPrinters As Object
Dim iCount As Integer
Dim sCurrentprinter As String
sCurrentprinter = Application.ActivePrinter
Set wshNetwork = CreateObject("WScript.Network")
Set oDrives = wshNetwork.EnumNetworkDrives
Set oPrinters = wshNetwork.EnumPrinterConnections
For iCount = 0 To oPrinters.Count - 1 Step 2
Debug.Print "Printer Port " & oPrinters.Item(iCount) _
& " = " & oPrinters.Item(iCount + 1)
Next
Range("AI35") = sCurrentprinter 'I added this line and it pastes my HP
DeskJet in cell AI35
End Sub

I added the line where it pastes the printer name in AI35 (same sheet as
code). What I want it to do is, paste the next printer in AI36, then the
following in AI37 and so on. When I CTRL+G and run macro it shows 5
printers, I would like to allow for around 20 (AI35:AI54). I tried several
ways to loop it and move down to the next cell but I cannot get it to work.
So if I had 10 printers (network included) it would have all 10 listed from
cells AI35:AI44. Thank you for your help!

Mike Olson

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Listing Printers in Excel RobC[_3_] Excel Programming 10 April 8th 06 10:14 PM
List of printers Jos Vens[_2_] Excel Programming 2 February 8th 06 11:43 AM
Printers Jason Zischke Excel Programming 4 December 1st 05 02:05 AM
List of available printers prizm1 New Users to Excel 3 June 12th 05 01:32 PM
Printers & LPT Tom Excel Programming 0 November 26th 03 05:39 PM


All times are GMT +1. The time now is 12:27 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"