Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel 2007 Makros i.O; Excel 2010 Desaster

Excel 2007 Makros i.O; Excel 2010 Desaster
Heinz
Hallo Excelfreunde
Ich arbeite mit Druckmakros, die mir in excel 2007 mehrere ausgewählte Arbeitsblätter als PDF drucken.
Dies funktionierte sowohl mit FreePDFmultidoc als auch mit dem Microsoft-pdf-tool tadellos.
Unter excel 2010 bewirken die gleichen Makros in den gleichen Dateien, das bei diesen Exceldateien nach dem Ausführen der Makros und dem Schließen der Datei mit "Speichern" beim anschließenden Öffnen der der Datei folgende Fehlermeldung aufpoppt:
"Objekte können nicht über das Blatt hinaus verschoben werden."
Die Dateien können dann nicht mehr bearbeitet werden und müssen über den Task-manager gekillt werden - schlichtweg eine Katastrophe.
Es muß mit einem Programmunterschied zwischen Excel 2007 und Excel 2010 zusammenhängen, da dieses Problem bei mir erst mit 2010 auftauchte und mit verschiedenen Betriebsystem und office-Versionen
getestet wurde (xp, vista, 7 64 bit) - es passiert zunächst nur mit Excel 2010. Wenn die Dateien allerdings einmal so unter 2010 "behandelt" wurden, tritt das beschriebene Phänomen bei disen auch unter 2007 auf - die Dateien werden unbrauchbar!!!
Hat jemand eine Idee, wie man das Aufpoppen der Fehlermeldung, die sich nicht wegklicken läßt, verhindern könnte?
Ich wäre hierfür sehr dankbar, insbesondere, weil ich arbeitgeberbedingt die Umstellung auf office 2010 mitmachen muß - ansonsten würde ich natürlich beim hier problemlosen Excel 2007 bleiben.
Viele Grüße
Heinz Wilhelm

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
zeig doch mal den Code! o.T.
13.06.2011 18:01:11
Josef
« Gruß Sepp »

AW: zeig doch mal den Code! o.T.
13.06.2011 18:30:41
Heinz
Hallo Sepp
Das erste Makro wurde mir von Franz (fcs) entworfen und wird von mir mit FreePDF genutzt.
Das zweite Makro habe ich mir agepasst für das Office PDF-tool.
Das erste Blatt in der Tabelle heißt "Inhaltsverzeichnis" und hat in Spalte A Hyperlinks mit den Tabellennamen (erzeugt durch Addin von Bernd Augustin "Inhaltsverzeichnis")
In Spalte B kann ich mir die zu druckenden Tabellenblätter mit x auswählen.
Wie bereits gesagt - funktionierte in Excel 2007 perfekt, funkioniert auch noch in 2010 (Makros werden ausgeführt), aber beim erneuten Öffenen der Exceldatei kommt die nicht mehr wegklickbare Meldung
wie oben beschrieben ("Objekte können nicht über das Blatt hinaus verschoben werden"
Viele Grüße
Heinz Wilhelm
Sub BlaetterDrucken_mit_Inhaltsverzeichnis_H2_x()
'Die folgende Prozedur kannst Du z.B. per Buttonklick starten,
'die Blätter der in Spalte B mit "x" markierten Blätter werden gedruckt.
Dim wks As Worksheet, Zeile As Long, lNr As Long, _
strDrucker As String, arrZeilen() As Long, arrBlatt() As String
lNr = 0
If MsgBox("Blätter in mit ""x"" markierten Zeilen Drucken?", vbQuestion + vbYesNo, _
"Blätter Drucken") = vbYes Then
'Daten der zu druckenden Blätter einlesen
Set wks = Worksheets(1) ' = Worksheets("Inhalt")
With wks
For Zeile = 3 To .Cells(.Rows.Count, 2).End(xlUp).Row
If LCase(.Cells(Zeile, 2)) = "x" And _
fncCheckSheet(ActiveWorkbook, Worksheets(1).Cells(Zeile, 1).Text) = True Then
lNr = lNr + 1
ReDim Preserve arrZeilen(1 To lNr)
ReDim Preserve arrBlatt(1 To lNr)
arrZeilen(lNr) = Zeile
arrBlatt(lNr) = Worksheets(1).Cells(Zeile, 1)
Else
'Blatt mit Name in Spalte A ist nicht ausgewählt
Worksheets(1).Cells(Zeile, 2) = "Blatt nicht ausgewählt"
End If
Next
End With
If lNr > 0 Then
Application.ScreenUpdating = False
'Blätter drucken
strDrucker = Application.ActivePrinter 'aktiven Drucker  merken
'anderen Drucker wählen aktivieren - Name ggf. mit Makrorekorder aufzeichnen
Application.ActivePrinter = "FreePDF_Multidoc auf Ne05:"
Application.DisplayAlerts = False
'      ActiveWorkbook.Sheets(arrBlatt).PrintPreview
ActiveWorkbook.Sheets(arrBlatt).PrintOut
Application.DisplayAlerts = True
Application.ActivePrinter = strDrucker 'gemerkten Drucker  wieder aktivieren
Application.ScreenUpdating = True
End If
End If
End Sub

Function fncCheckSheet(wb As Workbook, varBlatt) As Boolean
'Prüft ob Blatt in Arbeitsmappe vorhanden
'Gehört zum obenstehenden 

Sub BlaetterDrucken ().
Dim objSheet As Object
For Each objSheet In wb.Sheets
If objSheet.Index = varBlatt Or LCase(objSheet.Name) = LCase(varBlatt) Then
fncCheckSheet = True
Exit For
End If
Next
End Function

Sub BlaetterDrucken_mit_Inhaltsverzeichnis_H3_x()
'Die folgende Prozedur kannst Du z.B. per Buttonklick starten,
'die Blätter der in Spalte B mit "x" markierten Blätter werden als PDF gedruckt.
Dim wks As Worksheet, Zeile As Long, lNr As Long, _
strDrucker As String, arrZeilen() As Long, arrBlatt() As String
lNr = 0
If MsgBox("Blätter in mit ""x"" markierten Zeilen als PDF veröffentlichen?", vbQuestion +  _
vbYesNo, _
"Blätter Drucken") = vbYes Then
'Daten der zu druckenden Blätter einlesen
Set wks = Worksheets(1) ' = Worksheets("Inhalt")
With wks
For Zeile = 3 To .Cells(.Rows.Count, 2).End(xlUp).Row
If LCase(.Cells(Zeile, 2)) = "x" And _
fncCheckSheet(ActiveWorkbook, Worksheets(1).Cells(Zeile, 1).Text) = True Then
lNr = lNr + 1
ReDim Preserve arrZeilen(1 To lNr)
ReDim Preserve arrBlatt(1 To lNr)
arrZeilen(lNr) = Zeile
arrBlatt(lNr) = Worksheets(1).Cells(Zeile, 1)
Else
'Blatt mit Name in Spalte A ist nicht ausgewählt
Worksheets(1).Cells(Zeile, 2) = "Blatt nicht ausgewählt"
End If
Next
End With
If lNr > 0 Then
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ActiveWorkbook.Sheets(arrBlatt).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Worksheets("Verknüpfung_1").Range("B2") & "_" & ActiveSheet.Range("A3") & "_MS" & ".pdf" _
, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End If
End If
Sheets("Inhaltsverzeichnis").Select
Range("A2").Select
End Sub

Function fncCheckSheet(wb As Workbook, varBlatt) As Boolean
'Prüft ob Blatt in Arbeitsmappe vorhanden
'Gehört zum obenstehenden 

Sub BlaetterDrucken ().
Dim objSheet As Object
For Each objSheet In wb.Sheets
If objSheet.Index = varBlatt Or LCase(objSheet.Name) = LCase(varBlatt) Then
fncCheckSheet = True
Exit For
End If
Next
End Function

Anzeige
AW: zeig doch mal den Code! o.T.
13.06.2011 18:52:22
Josef

Hallo Wilhelm,
also der Code lässt keinen Grund für die Fehlermeldung erkennen. Hab aber auch kein xl2010 um es testen zu können.
Die von dir beschriebene Fehlermeldung kenne ich hautsächlich von Kommentaren oder Grafiken in verbindung mit ausgeblendeten Zeile/Spalten.

« Gruß Sepp »

Anzeige
AW: Excel 2010-?Optionen/Registry?
13.06.2011 19:17:50
Heinz
Die Dateien enthalten in der Tat jede Menge an Autoformen, ausgeblendete Zellen, etc., die aber Kerninhalte der Dateien sind und bisher allesamt keine Probleme bereiteten.
Erst beim Abspeichern der Datei in Excel 2010 muß nach Ausführung der Makros irgendetwas
passieren, das beim erneuten Öffnen die Datei vollständig blockiert.
Es muß an Excel 2010 liegen - aber wo nur?
In den Excel Optionen habe ich schon viel probiert, aber ohne Erfolg.
Rein theoretisch denke ich mir, das möglicherweise mit einem Registry-Eingriff das
Aufpoppen der Fehlermeldung zu verhindern wäre und damit die Dateiblockade
vermieden würde. Die Makros laufen ja nur lösen sie irgenwo diese dämliche, weil unsinnige, Fehlermeldung aus.
Viele Grüße
Heinz Wilhelm
Anzeige
AW: Excel 2010-?Optionen/Registry?
16.06.2011 15:25:57
Christian
hallo Wilhelm,
dann entkern' das Teil doch mal, sprich lass den Code mal in einer neuen Mappe laufen (ohne Autoformen und was weiß ich).
Ggf führst du die Datei in XL2010 im Komp.-Modus aus und deine Autoformen sind auf mehr als 256 Spalten verteilt.
Gruß
Christian

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige