Domino 9 und frühere Versionen > ND8: Entwicklung
Druckbereich in Excel wird nicht mehr erkannt
v_haderer:
--- Zitat von: TRO 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
--- Ende Zitat ---
Hallo Thomas,
habs nach exakt deiner Vorgabe umgesetzt und funktioniert astrein - VIELEN VIELEN DANK! :) :) :)
lg
Viktor
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln