vba code in xp mode.

Status
Niet open voor verdere reacties.

Verduyn

Nieuwe gebruiker
Lid geworden
28 nov 2012
Berichten
3
Beste,
Ik heb een bepaalde code die goed werkt onder winxp en excel2003.
nu probeer ik dit bestand waar deze code in staat te draaien onder xp mode.

de code zorgt er voor dat er een andere printer wordt geselecteerd als standaard printer.
Application.ActivePrinter = "\\brcps\be-abco08-labo op Ne03:"
nu werkte dit niet meer onder xp mode in win7.
Na het opnemen van een macro om te zien hoe de printer noemt in xp mode kreeg ik deze code.

be-abco08-labo op brcps (van be-abwstst05) op TS002

de \\brc vervangen door dit en daarna werkte het nog niet. Hij geeft de foutmelding.

Methode activeprinter van object _application is mislukt.

iemand enig idee hoe ik dit wel kan laten werken onder xpmode.

de rede dat ik xpmode gebruik is omdat als ik de codes die er verder instaan laat lopen onder excel 2010 deze niet meer werken. Ik heb vooral probleemen met de autsave naar xls.

Met vriendelijke groet

Tim Verduyn
 
a. Is die printer die je nu probeert te selecteren niet al de standaardprinter binnen die XP-mode sessie? Want dan hoef je niet om te bouwen maar alleen een geprogrammeerde print-opdracht te geven richting de standaardprinter (dus zonder Application.ActivePrinter).
b. Als ik je goed begrijp wil je een netwerkprinter kiezen. Je zou die ook gewoon aan Windows kunnen toevoegen in het account waar je de XP mode sessie mee draait (dus binnen de XP mode zo'n printerkoppeling maken)?

Tijs.
 
Tijs,

a. De bedoeling is dat er een bepaald blad naar verschillende printers moet verstuurd worden. In excel staat een lijst met de printers die geselecteerd kunnen worden.
b. De windows in xp mode staat niet gekoppeld aan het netwerk en ook niet in het domain. Hij haalt de printers op via de "Integration features"
Ik kan de printers ook niet vast in de code zetten want regelmatig veranderd bij de printers de poort waar hij naar verwijst. onder winxp staat deze soms op Ne03 of Ne04. Ik weet nu niet of de TS002 ook veranderd of niet.

Tim Verduyn
 
a. Dus als ik je goed begrijp zie je de printer waar je mee wilt verbinden in XP-mode wel, alleen de aanduiding/adressering vanuit Excel is het probleem?
b. Wel aan gedacht om "To share printers when Windows XP is the guest operating system, you must also install the printer drivers." Mij is dan even niet duidelijk waar precies, maar ik zou, veiligheidshalve, zowel in de host (bijv. Windows 7 64-bit) als in de guest (Win XP) x32 drivers toevoegen voor de printer(s) die je meeneemt naar XP-mode.
Natuurlijk kan het zijn dat dit al goed werkt (bijv. via in Windows ingebouwde drivers. Dan hoef je natuurlijk niets te doen.
c. Aansluitend op a. en b.: Kun je nu vanuit XP-mode succesvol testpagina's printen op alle printers die je in Excel wilt gaan gebruiken?

Geen idee of je dat verder helpt bij adressering, maar je zou naar de volgende registersleutel in XP-mode kunnen kijken:
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices

Tijs.
 
Beste,
De printers werken goed als ik iets gewoon wil afdrukken in xp mode. Het probleem zit hem in het feit als men de printers wilt selecteren in application.activeprinter dat men het volledige pad moet meegeven. dus ook de TS001. Dit veranderd elke keer als men de xp mode opstart.
Ik heb ondertussen al een workaround gevonden door de code een beetje te veranderen zodat de gebruiker een printer moet kiezen.
dit doe ik via Application.dialogs(xldialogprintersetup).show.
 
Wat je zou kunnen doen is 'live' een printer enumeratie, en dan (bijv. o.b.v. een bepaalde substring en wat string-bewerkingen) de juiste opslaan in een variabele en gebruiken in je printerselectie.
Zie overigens dat de gegevens uit die registerwaarde worden gehaald waar ik het al over had...

Code:
Sub PrintersAndPorts()

'This works with Windows 2000 and up

   Dim Arr               As Variant
   Dim Device            As Variant
   Dim Devices           As Variant
   Dim msg               As String
   Dim RegObj            As Object
   Dim RegValue          As String
   Const HKEY_CURRENT_USER = &H80000001

   Set RegObj = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
   RegObj.enumvalues HKEY_CURRENT_USER, "Software\Microsoft\Windows NT\CurrentVersion\Devices", Devices, Arr

   For Each Device In Devices
      RegObj.getstringvalue HKEY_CURRENT_USER, "Software\Microsoft\Windows NT\CurrentVersion\Devices", Device, RegValue
      msg = msg & Device & " on " & Split(RegValue, ",")(1) & vbCrLf
   Next

   MsgBox msg, vbInformation, "Printers and Ports"

End Sub

Levert bij mij in Excel 2003 (in Windows XP) de volgende MsgBox (=uitvoerwaarden) op:

attachment.php


Tijs.
 

Bijlagen

  • SP32-20121129-114615.jpg
    SP32-20121129-114615.jpg
    20,4 KB · Weergaven: 70
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan