Autor Thema: Druckbereich in Excel wird nicht mehr erkannt  (Gelesen 5737 mal)

Offline v_haderer

  • Junior Mitglied
  • **
  • Beiträge: 98
  • Geschlecht: Männlich
Druckbereich in Excel wird nicht mehr erkannt
« am: 12.08.14 - 08:09:58 »
Guten Morgen!
Bei allen meinen Applikationen (8.5.3) die mit Excel kommunizieren tritt seit einiger Zeit ein sehr unangenehmes Phänomen auf:
Der in der Excelvorlage zuvor definierte Druckbereich verschwindet einfach. Was heißt: bei einem von mir befüllten Kalkulationsdokument (einige hundert Zeilen bzw Folder) wird immer alles ausgedruckt und nicht wie festgelegt nur die 1te Seite.

geöffnet wird das XLSX ganz simpel über:
   Set xlApp = CreateObject("Excel.Application")
   Set xlBook = xlApp.Workbooks.Add ( ExcelFile )
   Set xlSheet = xlBook.Worksheets(1)
   xlApp.Visible = True      



Die offizielle Aussage von Mircrosoft -> das Problem ist (ja ja natürlich  ;) ) Lotus Notes die Microsoft-Produkte ja alle funktionieren....usw und sofort. Die Culture (???) wird beim Aufruf des Excelobjekts falsche gesetzt,...nämlich auf "US",... ich möge doch die "Culture" meines Notesclients (und den einigen 1000 anderen) auf D setzen und dann sollts funktonieren ...  ???
Ich habe leider nicht die geringste Ahnung was damit gemeint ist. Unsere Clients sind alle auf Deutsch eingestellt (Language, Content, Region,....alles) und war auch noch nie ein Problem.

>:D was ich am Rande extrem witzig finde: lt MS heißt die Property die den Druckbereich in Excel festlegt,... "Druckbereich". Wird Excel nun mit der falschen amerikanischen "Culture" gestartet so heißt die Property "Print area",.... die ursprüngliche Property "Druckbereich" ist zwar noch gespeichert, wird allerdings nimmer erkannt,...weil ja deutsch :-)  .....es gibt Dinge die will man einfach garnicht wissen  :P )


Hat zufällig jemand von euch eine Idee wie ich dieses Problem in den Griff bekommen könnte?  :-:

thx
glg
Viktor
         

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Druckbereich in Excel wird nicht mehr erkannt
« Antwort #1 am: 12.08.14 - 08:25:31 »
Hallo,

Sorry fuer meine eventuell dumme Nachfrage.

Aber in dem von dir gezeigten Code-Schnipsel oeffnest du lediglich eine neue Arbeitsmappe in Excel.
Diese hat aber von haus aus noch keinen definierten Druckbereich.

Also wo ist denn jetzt das Problem genau?


Andreas

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Druckbereich in Excel wird nicht mehr erkannt
« Antwort #2 am: 12.08.14 - 08:28:02 »
Hast Du schon einmal versucht, den Druckbereich im Script festzulegen?

Offline v_haderer

  • Junior Mitglied
  • **
  • Beiträge: 98
  • Geschlecht: Männlich
Re: Druckbereich in Excel wird nicht mehr erkannt
« Antwort #3 am: 12.08.14 - 08:30:56 »
Hallo

ExcelFile = "c:\vorlage.xltx"
Set xlBook = xlApp.Workbooks.Add ( ExcelFile )


....öffnet ein Excelfile. In eben dieser Vorlage.xltx ist ein Druckbereich definiert.
Werde "alte" Excelfiles  (vorlage.xlt)  mit  definiertem Druckbereich aufgerufen so bleibt Dieser sonderbarerweise erhalten.

Offline v_haderer

  • Junior Mitglied
  • **
  • Beiträge: 98
  • Geschlecht: Männlich
Re: Druckbereich in Excel wird nicht mehr erkannt
« Antwort #4 am: 12.08.14 - 08:33:05 »
Hast Du schon einmal versucht, den Druckbereich im Script festzulegen?

Hallo Peter,
nein hab ich bis jetzt noch nicht probiert.
Die Vorlagen werden von den Kunden selber gewartet,..dh "mein" Druckbereich würde nicht viel bringen. Ich werds aber ausprobiern was dann passiert ;-)

Offline v_haderer

  • Junior Mitglied
  • **
  • Beiträge: 98
  • Geschlecht: Männlich
Re: Druckbereich in Excel wird nicht mehr erkannt
« Antwort #5 am: 12.08.14 - 08:36:10 »
Hast Du schon einmal versucht, den Druckbereich im Script festzulegen?

hat testweise funktioniert:
ActiveSheet.PageSetup.PrintArea = "$B$4:$D$7"

...hilft mir aber wie gesagt nicht wirklich weiter :-(

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Druckbereich in Excel wird nicht mehr erkannt
« Antwort #6 am: 12.08.14 - 10:09:16 »
Kommst Du per Script an die deutsche Eigenschaft (-> Druckbereich)?

Wenn Du die irgendwie erkennen könntest, könntest Du die per Script wieder setzen, wie Du schon probiert hast.

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Druckbereich in Excel wird nicht mehr erkannt
« Antwort #7 am: 12.08.14 - 10:21:46 »
Hallo,

Hast du schon einmal nachgesehen, ob nach dem Oeffnen des Dokumentes, basierend auf der Vorlage,
die Eigenschaft PageSetup.PrintArea ueberhaupt noch gesetzt ist auf dem gerade offenen Sheet?


Andreas

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Druckbereich in Excel wird nicht mehr erkannt
« Antwort #8 am: 12.08.14 - 10:29:03 »
Das ist ein (bekannter) Bug in Excel (nicht Notes!) bei der Ansteuerung über COM.

Hier ein Code-Schnipsel um das auszubügeln. Ich habe das in meinem Code in zwei Teile trennen müssen, da ich die Excel-datei nach dem ersten Öffnen mehrfach speichern muss, das Setzen der Print-Area darf aber nur beim "finalen" Speichern stattfinden

 
%REM
Excel2010 (und auch schon Excel2007) hat einen Bug: beim Öffnen über workbook.Open "vergisst" Excel den Druckbereich und die Druckwiederholzeilen.
Die stehen zwar intern noch in den NamenPrint_Area und Print_Titles müssen aber von dort geholt und neu gesetzt werden
Darf aber nur im "finalen" speichern gesetzt sein, sonst kommt es zu einer Bereichs-Namen-Fehlermeldung von Excel
%END REM
      
Dim sSheetName As String
Dim sCurrentName As String
Dim sRange As String

Erase g_sAreaList
Erase g_sTitleList

'erster Teil: holen der PrintArea
Forall sheet In g_xlWBook.Worksheets
   sSheetName = sheet.Name
   Forall n In sheet.Names
      sCurrentName = n.Name
      If Instr( sCurrentName, "Print_Area" ) > 0 Then
         sRange = n.RefersTo
         g_sAreaList( sSheetName ) = sRange
      Elseif Instr( sCurrentName, "Print_Titles" ) > 0 Then
         sRange = n.RefersTo
         g_sTitleList( sSheetName ) = sRange
      Else
         '
      End If
   End Forall
End Forall




'andere Sub
'zweiter Teil: Setzen der PrintArea
Forall sheet In g_xlWBook.Worksheets
   sSheetName = sheet.Name
   If Iselement( g_sAreaList( sSheetName ) ) Then
      sRange = g_sAreaList( sSheetName )
      sheet.PageSetup.PrintArea = sRange
   End If
   If Iselement( g_sTitleList( sSheetName ) ) Then
      sRange = g_sTitleList( sSheetName )
      sheet.PageSetup.PrintTitleRows = sRange
   End If
End Forall



hth

Thomas

Offline v_haderer

  • Junior Mitglied
  • **
  • Beiträge: 98
  • Geschlecht: Männlich
Re: Druckbereich in Excel wird nicht mehr erkannt
« Antwort #9 am: 12.08.14 - 10:33:09 »
Hallo,

Hast du schon einmal nachgesehen, ob nach dem Oeffnen des Dokumentes, basierend auf der Vorlage,
die Eigenschaft PageSetup.PrintArea ueberhaupt noch gesetzt ist auf dem gerade offenen Sheet?


Andreas

Hallo,
ist leider leer und somit wird alles gedruckt!

Offline v_haderer

  • Junior Mitglied
  • **
  • Beiträge: 98
  • Geschlecht: Männlich
Re: Druckbereich in Excel wird nicht mehr erkannt
« Antwort #10 am: 12.08.14 - 10:57:10 »
Das ist ein (bekannter) Bug in Excel (nicht Notes!) bei der Ansteuerung über COM.

Hier ein Code-Schnipsel um das auszubügeln. Ich habe das in meinem Code in zwei Teile trennen müssen, da ich die Excel-datei nach dem ersten Öffnen mehrfach speichern muss, das Setzen der Print-Area darf aber nur beim "finalen" Speichern stattfinden

 
%REM
Excel2010 (und auch schon Excel2007) hat einen Bug: beim Öffnen über workbook.Open "vergisst" Excel den Druckbereich und die Druckwiederholzeilen.
Die stehen zwar intern noch in den NamenPrint_Area und Print_Titles müssen aber von dort geholt und neu gesetzt werden
Darf aber nur im "finalen" speichern gesetzt sein, sonst kommt es zu einer Bereichs-Namen-Fehlermeldung von Excel
%END REM
      
Dim sSheetName As String
Dim sCurrentName As String
Dim sRange As String

Erase g_sAreaList
Erase g_sTitleList

'erster Teil: holen der PrintArea
Forall sheet In g_xlWBook.Worksheets
   sSheetName = sheet.Name
   Forall n In sheet.Names
      sCurrentName = n.Name
      If Instr( sCurrentName, "Print_Area" ) > 0 Then
         sRange = n.RefersTo
         g_sAreaList( sSheetName ) = sRange
      Elseif Instr( sCurrentName, "Print_Titles" ) > 0 Then
         sRange = n.RefersTo
         g_sTitleList( sSheetName ) = sRange
      Else
         '
      End If
   End Forall
End Forall




'andere Sub
'zweiter Teil: Setzen der PrintArea
Forall sheet In g_xlWBook.Worksheets
   sSheetName = sheet.Name
   If Iselement( g_sAreaList( sSheetName ) ) Then
      sRange = g_sAreaList( sSheetName )
      sheet.PageSetup.PrintArea = sRange
   End If
   If Iselement( g_sTitleList( sSheetName ) ) Then
      sRange = g_sTitleList( sSheetName )
      sheet.PageSetup.PrintTitleRows = sRange
   End If
End Forall



hth

Thomas


Hallo Thomas,

habs nach exakt deiner Vorgabe umgesetzt und funktioniert astrein - VIELEN VIELEN DANK!   :)  :)  :)
lg
Viktor
« Letzte Änderung: 12.08.14 - 13:55:10 von v_haderer »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz