Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1076to1080
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

Arbeitsmappe ohne Formeln und Makros speichern

Arbeitsmappe ohne Formeln und Makros speichern
24.05.2009 19:08:20
Mark
Hallo zusammen,
gibt es in Excel eine einfache Möglichkeit eine komplette Excel Arbeitsmappe die Makros und Formeln enthält abzuspeichern bei der nur die Werte gespeichert werden und Makros und Formeln verloren gehen?
Ich könnte zwar ein Marko aufzeichnen, bei dem alle Tabellenblätter in Werte umgewandelt werden, aber da es sich um ca. 20 Blätter handelt ist das etwas umständlich.
Vielen Dank!

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitsmappe ohne Formeln und Makros speichern
24.05.2009 19:31:46
Mark
Hallo Hajo,
Danke für die Datei - mein Problem ist jedoch noch dass in meiner Arbeitsmappe Pivottabellen und Diagramme enthalten sind die durch das Makro ebenfalls gelöscht werden. Kann ich das irgendwie umgehen.
Also dass er die Datei wie in Deinem Beispiel abspeichert aber Pivots und Diagramme erhalten bleiben?
AW: Makro-Lösung
24.05.2009 20:03:20
Daniel
Hi
hier mal ein Makro, das von der aktiven Datei eine Kopie ohne Makros anlegt, die alte Datei löscht und die neue Datei unter dem alten Dateinamen speichert (dieser Teil ist aber erstmal auskommentiert)

Sub DateiKopierenNurWerte()
Dim wbNeu As Workbook
Dim wbAlt As Workbook
Dim sh As Worksheet
Dim i As Long
Dim DatName As String
Set wbAlt = ActiveWorkbook
Set wbNeu = Workbooks.Add(wbAlt.Worksheets.Count)
'--- Daten kopieren nur Werte
For i = 1 To wbAlt.Worksheets.Count
wbAlt.Sheets(i).Cells.Copy
wbNeu.Sheets(i).Cells(1, 1).PasteSpecial xlPasteValues
wbNeu.Sheets(i).Cells(1, 1).PasteSpecial xlPasteFormats
wbNeu.Sheets(i).Name = wbAlt.Sheets(i).Name
Next
'--- altes Datei löschen, neue Datei unter gleichem Namen Speichern
'--- (diesen Teil solltest du lieber erstmal auskommentiert lassen)
'DatName = wbAlt.FullName
'wbAlt.Saved = True
'wbAlt.Close 'alte Datei schließen
'Kill DatName 'alte Datei löschen
'wbNeu.SaveAs DatName 'neue Datei unter alten Namen speichern
End Sub


genauer gesagt, legt dieses Marko eine neue Datei an und kopiert Werte, Formate und Blattnamen der aktiven Datei in eine neue Datei. Dabei gehen Makros und Seiteneinstellungen (Druckbereiche) allerdings verloren (für Makros war das ja von dir gewünscht)
im 2. Teil, den ich vorerst deaktiviert habe, wird dann die alte Datei gelöscht und die neue unter dem alten Namen gespreichert.
Dh. dieses Makro solltest du in einer 3. unabhängigen Datei anlegen.
Gruß, Daniel

Anzeige
AW: Makro-Lösung
24.05.2009 20:14:04
Mark
erhalte Fehlermeldung bei folgender Zeile:
Set wbNeu = Workbooks.Add(wbAlt.Worksheets.Count)
AW: Makro-Lösung
24.05.2009 20:23:26
Daniel
Hi
ich erhalte keine Fehlermeldung, bei mir ist alles in Ordnung.
um ne Ferndiagnose stellen zu können, ist deine Fehlerbeschreibung allerdings etwas dürftig.
Gruß, Daniel
AW: Makro-Lösung
24.05.2009 20:45:54
Mark
ja sorry, war evtl. ein wenig zu dürftig die Aussage von mir.
Ich erhalten einen Laufzeitfehler und die Meldung "Die Methode 'Add' für das Objekt 'Workbooks' ist fehlgeschlagen"
AW: neuer Versuch
24.05.2009 22:31:18
Daniel
HI
ich glaube ich hab meinen Fehler gefunden.
probier mal das hier:

Sub DateiKopierenNurWerte()
Dim wbNeu As Workbook
Dim wbAlt As Workbook
Dim sh As Worksheet
Dim i As Long
Dim Anz As Long
Dim DatName As String
Set wbAlt = ActiveWorkbook
Anz = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = wbAlt.Sheets.Count
Set wbNeu = Workbooks.Add
Application.SheetsInNewWorkbook = Anz
'--- Daten kopieren nur Werte
For i = 1 To wbAlt.Worksheets.Count
wbAlt.Sheets(i).Cells.Copy
wbNeu.Sheets(i).Cells(1, 1).PasteSpecial xlPasteValues
wbNeu.Sheets(i).Cells(1, 1).PasteSpecial xlPasteFormats
wbNeu.Sheets(i).Name = wbAlt.Sheets(i).Name
Next
'--- altes Datei löschen, neue Datei unter gleichem Namen Speichern
'--- (diesen Teil solltest du lieber erstmal auskommentiert lassen)
'DatName = wbAlt.FullName
'wbAlt.Saved = True
'wbAlt.Close 'alte Datei schließen
'Kill DatName 'alte Datei löschen
'wbNeu.SaveAs DatName 'neue Datei unter alten Namen speichern
End Sub


Gruß, Daniel

Anzeige
AW: neuer Versuch
24.05.2009 22:40:41
Mark
Hallo Daniel,
funktioniert nun - leider ist es wie bei Hajo vorher dass meine Pivot-Tabellen und Diagramme verloren gehen bzw. nicht in die neue Arbeitsmappe mit übernommen werden.
Gruß,
Mark
AW: neuer Versuch
24.05.2009 22:48:14
Josef
Hallo Mark,
das sollte eigentlich reichen.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub DateiFix()
  Dim objWS As Worksheet
  
  With ThisWorkbook
    For Each objWS In .Worksheets
      objWS.UsedRange = objWS.UsedRange.Value
    Next
    
    deleteAllCodeAndModules .Name
    
    .Save
  End With
  
End Sub


Sub deleteAllCodeAndModules(ByVal WBook As String)
  Dim objVBComp As Object
  With Workbooks(WBook).VBProject
    For Each objVBComp In .vbcomponents
      If objVBComp.Type = 100 Then
        With .vbcomponents(objVBComp.Name).CodeModule
          .DeleteLines 1, .CountOfLines
        End With
      Else
        .vbcomponents.Remove objVBComp
      End If
    Next
  End With
End Sub

Gruß Sepp

Anzeige
AW: neuer Versuch
25.05.2009 18:40:22
Mark
Hallo Sepp,
vielen Dank! Lösung funktioniert!
Leider erhalte ich wegen der Pivottabelle noch folgenden Fehler:
"Laufzeitfehler 1004
Ein Nullwert kann nicht als Element oder Feldname in einen PivotTable-Bericht aufgenommen werden"
Die Pivot kann ich jedoch in der Ursprungsdatei aktualisieren ohne dass ein Fehler kommt.
Nur beim Ausführen des VBA Makros erhalte ich die Meldung und das Makro wird unterbrochen.
AW: neuer Versuch
25.05.2009 22:56:18
Josef
Hallo Mark,
dann versuch's mal so.
Sub DateiFix()
  Dim objWS As Worksheet
  
  With ThisWorkbook
    For Each objWS In .Worksheets
      If objWS.PivotTables.Count = 0 Then objWS.UsedRange = objWS.UsedRange.Value
    Next
    
    deleteAllCodeAndModules .Name
    
    .Save
  End With
  
End Sub

Gruß Sepp

Anzeige
AW: neuer Versuch
26.05.2009 17:41:52
Mark
1000 Dank! funktioniert einwadfrei!

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige