1.3k Aufrufe
Gefragt in Tabellenkalkulation von matthiasg Mitglied (183 Punkte)

Hallo,

mein Makro speichert ein Tabellenblatt als *.xlsx Datei ab. Beim Öffnen dieser gespeicherten Datei wird eine Fehlermeldung angezeigt:

Von Excel wurde unlesbarer Inhalt in 'xxx' gefunden. Möchten Sie den Inhalt dieser Arbeitsmappe wiederherstellen? ... [...] klicken Sie auf 'Ja'

Es wird dann angezeigt, dass etwas entfernt wurde:

Entferntes Feature: Datenüberprüfung von /xl/worksheets/sheet1.xml-Part

Lässt sich herausbekommen, welches Element stört?

7 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Matthias,

schau mal, ob eine Gültigkeitsprüfung im Blatt vorhanden ist.

Gruß

M.O.
0 Punkte
Beantwortet von matthiasg Mitglied (183 Punkte)
Hallo M.O.,

ja - da sind mehrere Gültigkeitsprüfungen bzw. Datenüberprüfungen (eine Liste) drin.

Es werde dann aber nur die (auch die unter Gültigkeitsprüfung ausgewählten) Werte in einer *.xlsx Datei gespeichert. Es geht dann wohl nur die Liste bzw. die Gültigkeitsprüfung verloren ?!

Kann ich die neue Datei ohne diese Fehlermeldung "unlesbarer Inhalt" speichern?
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Matthias,

poste bitte mal dein Makro. Wenn ich ein Tabellenblatt mit einer Gültigkeitsprüfung (die sich auf eine Liste in einem anderem Tabellenblatt bezieht) abspeichere, dann kommt bei der abgespeicherten Tabelle nur der Hinweis, dass ein Verknüpfung nicht aktualisiert werden kann.

Ggf. probiere dein Makro mal in einer anderen Datei, ob dann auch der nichtlesbare Inhalt vorkommt.

Gruß

M.O.
0 Punkte
Beantwortet von matthiasg Mitglied (183 Punkte)

Hallo M.O.,

die Gültigkeitsprüfung bezieht sich auf eine Liste in einem anderen Arbeitsblatt. Die Liste werde ich aber - wenn das Makro läuft - löschen und die Daten direkt in die Gültigkeitsprüfung unter Quelle eingeben (x;y;z).

Habe das Makro mal mit einer einfachen Datei ausprobiert - da kommt keine Fehlermeldung bzw. die gespeicherte Datei ist lesbar & der ausgewählte Wert aus der Auswahlliste wird angezeigt. Die Gültigkeitsprüfung ist dann natürlich nicht mehr vorhanden.

Sub Dateiname()

Dim strName As String
Dim strDatei As String
Application.DisplayAlerts = False

strName = Year(Date)

If Month(Date) < 10 Then
 strName = strName & "_0" & Month(Date)
Else
 strName = strName & "_" & Month(Date)
End If

If Day(Date) < 10 Then
 strName = strName & "_0" & Day(Date)
Else
 strName = strName & "_" & Day(Date)
End If

strName = strName & "_" & Left(Range("B8"), 10) & "_" & Left(Range("B10"), 12) & "_" & Left(Range("B18"), 20) & ".xlsx"

'Benachrichtungen ausschalten
Application.DisplayAlerts = False

    Sheets("anfrage -auftrag").Select
    Sheets("anfrage -auftrag").Copy
    ActiveSheet.Shapes("Datei_speichern_versenden").Delete
    'Es werden keine Formeln, nur Werte übernommen die Formeln für die Durchschnittsberechnung wieder hineingeschrieben
    ActiveSheet.UsedRange.Cells = ActiveSheet.UsedRange.Cells.Value
    Range("AO71").FormulaLocal = "=WENNFEHLER(MITTELWERT(AK71:AM76);"""")"
    Range("AO72").FormulaLocal = "=WENNFEHLER(AO71/T23;"""")"
   
   
Datei = Application.GetSaveAsFilename(InitialFileName:=strName, fileFilter:="Excel-Arbeitsmappe, *.xlsx")


'falls Abbruch gewählt wird, dann Makro beenden
If Datei = False Then
ActiveWorkbook.Close
End
End If

'Prüfen, ob Blattschutz vorhanden ist und falls ja, dann Blattschutz aufheben:
With ActiveSheet
  If .ProtectContents = True Then .Unprotect "xxx"
  'Blattschutz wieder aktivieren
 .Protect "xxx"
End With
'als xlsx Datei speichern
ActiveWorkbook.SaveAs Filename:=Datei, FileFormat:=xlOpenXMLWorkbook

'Benachrichtungen wieder einschalten
Application.DisplayAlerts = True

End Sub

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Matthias,

bei meinem Test mit deinem Makro lässt sich das gespeicherte Blatt ohne Probleme öffnen, auch wenn eine Gültigkeitsprüfung auf eine Liste auf einem anderen Blatt verweist.

Kopiere mal deine Daten in eine neue Datei und probiere mal, ob sich das gespeicherte Tabellenblatt dann ohne Fehler öffnen lässt.

Gruß

M.O.
0 Punkte
Beantwortet von matthiasg Mitglied (183 Punkte)
Danke M.O.,

musste die Gültigkeitsprüfung direkt unter Quelle eingeben (x;y;z) und den Bezug auf ein anderes Tabellenblatt rausnehmen.

In der neuen *.xlsx Datei bleib somit eine Drop Down Auswahl möglich.

Hast Du evtl. noch eine Idee wie ich das (für bestimmte Zellen) wieder per VBA deaktivieren kann, so dass nur der ausgewählte Wert angezeigt wird?
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Bearbeitet von m-o

Hallo Matthias,

wenn du alle Gültigkeitsprüfungen im kopierten Blatt löschen willst, dann ersetze die Zeile

ActiveSheet.Shapes("Datei_speichern_versenden").Delete

durch

With ActiveSheet
 .UsedRange.Validation.Delete   'in Kopie alle Gültigkeitsprüfungen löschen
 .Shapes("Datei_speichern_versenden").Delete
End With

Willst du die Gültigkeitsprüfung nur für bestimmte Zellen löschen, dann so:

With ActiveSheet
 .Range("A1").Validation.Delete   'in Kopie Gültigkeitsprüfung in Zelle A1 löschen
 .Shapes("Datei_speichern_versenden").Delete
End With

Gruß

M.O.

...