Excel Automation ActivePrinter CC

17. September 2014 11:27

Hallo Zusammen,

ich arbeite mit Excel Automation und möchte Excel vor dem Ausdruck sagen, auf welchem Drucker das Dokument gedruckt werden soll.

Betriebssystem : Win 7
Office 2013

Dazu habe ich in Navision entsprechende Variablen definiert und die Kernzeile lautet :
Code:
 Drucker.RESET;
  Drucker.SETFILTER(Name, '*PT-9*');
  IF Drucker.FIND('-') THEN
  BEGIN
      HSTR := xlsApp.ActivePrinter;
      xlsApp.ActivePrinter :=Drucker.Name + ' auf ' + Drucker.Device;    (1)
      xlsApp.ActivePrinter :=Drucker.Name;                                          (2)
  END;
  xlsBook._PrintOut(1,1,AnzKopien);


Sowohl Variante 1 wie 2 liefern einen Fehler aus Excel "Die ActivePronter-Eigenschaft des Application-Objectes kann nicht festgelegt werden"

Nachdem ich mir den Inhalt der Variablen HSTR ("\\inn-ad01\EDV HL-5240 auf Ne04:") angeguckt habe, glaube ich auch zu wissen warum :
Da es sich um Netzwerkdrucker handelt erwartet Excel in Drucker.Device einen Namen in der Form "Ne01". Die Ziffern sind dabei nicht auf allen Arbeitsplätzen für denselben Netzwerkdrucker identisch.
Navision liefert unter Drucker.Device in diesem Fall den Wert "172.20.5.21_PT".

Wie kann ich das Problem lösen ????

Viele Grüße
(ziemlich verzweifelt) Hans-Dieter

Re: Excel Automation ActivePrinter CC

17. September 2014 12:44

Umbau des Quelltextes auf

Code:
  Drucker.RESET;
  Drucker.SETFILTER(Name, '*PT-9*');
  IF Drucker.FIND('-') THEN
  BEGIN
      xlsBook._PrintOut(1,1,AnzKopien,FALSE,Drucker.Name);
  END ELSE BEGIN
      xlsBook._PrintOut(1,1,AnzKopien); 
  END;


  xlsBook.Close(FALSE);
  CLEAR(xlsApp);


und es läuft ....