Anzeige
Archiv - Navigation
1084to1088
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

Datenexport bricht ab

Datenexport bricht ab
Mark
Hallo zusammen,
ich habe ein Problem beim Exportieren einer Arbeitsmappe. Die Arbeitsmappe enthält sowohl Tabellen, als auch Pivots und Diagramme (insgesamt ca. 30 Diagramme, 4 Tabellen, und 5 Tabellen mit Pivots).
Hierfür verwende ich folgendes Makro:
Option Explicit

Sub data_Export()
Dim objWS As Worksheet, i As Integer
With Application
.ScreenUpdating = False
Workbooks.Add
With .ThisWorkbook
For Each objWS In .Worksheets
objWS.Copy after:=Sheets(Sheets.Count)
Next
End With
.DisplayAlerts = False
For i = .SheetsInNewWorkbook To 1 Step -1
ActiveWorkbook.Sheets(i).Delete
Next
.DisplayAlerts = True
For Each objWS In ActiveWorkbook.Worksheets
If objWS.PivotTables.Count = 0 Then objWS.UsedRange = objWS.UsedRange.Value
Next
deleteAllCodeAndModules ActiveWorkbook.Name
.Dialogs(xlDialogSaveAs).Show
.ScreenUpdating = True
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


Manchmal klappt der Export, jedoch bekomme ich fast immer eine Fehlermeldung bei der Zeile:
Then objWS.UsedRange = objWS.UsedRange.Value
Ein Bekannter hat mich darauf hingewiesen, dass es die Value-Eigenschaft bei UsedRAnge nicht gibt, sondern nur bei den Zellen.
Kann mir jemand weiterhelfen?
Vielen Dank im Vorraus!

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Datenexport bricht ab
26.06.2009 15:27:07
Luschi
Hallo Mark,
bei der Arbeit mit 2 oder mehr Workbooks sollte man jedem Workbook eine Variable zuordnen und die dann auch immer verwenden. Mit Thisworkbook und ActiveWorkbook kann es dabei schon mal vorkommen,
das beide Objekte auf die gleiche Arbeitsmappe zeigen.

Sub data_Export()
Dim wb1 As Workbook, wb2 As Workbook, _
objWS As Worksheet, i As Integer
With Application
.ScreenUpdating = False
Set wb1 = ThisWorkbook
Set wb2 = Workbooks.Add
With wb1
For Each objWS In wb1.Worksheets
objWS.Copy after:=wb2.Sheets(Sheets.Count)
Next
End With
.DisplayAlerts = False
For i = wb2.SheetsInNewWorkbook To 1 Step -1
ActiveWorkbook.Sheets(i).Delete
Next
.DisplayAlerts = True
For Each objWS In wb2.Worksheets
If objWS.PivotTables.Count = 0 Then objWS.UsedRange = objWS.UsedRange.Value
Next
deleteAllCodeAndModules wb2.Name
.Dialogs(xlDialogSaveAs).Show
.ScreenUpdating = True
End With
End Sub


objWS.UsedRange = objWS.UsedRange.Value ist i.O
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Datenexport bricht ab
27.06.2009 08:39:55
Mark
Hallo Luschi,
Danke für die Hilfe, jedoch stoppt das Makro nun bei Zeile:
For i = wb2.SheetsInNewWorkbook To 1 Step -1
Er bricht auch genau bei dem Tabellenblatt ab, wo die Diagramme beginne.
Liegt es evtl. daran, dass die Diagramme nicht als Objekt in einem Arbeitsblatt enthalten sind, sonder als eigenes Blatt?
Danke!
AW: Datenexport bricht ab
27.06.2009 10:35:07
Luschi
Hallo Mark,
hab's noch mal getestet:
Option Explicit

Sub data_Export()
Dim wb1 As Workbook, wb2 As Workbook, _
objWS As Worksheet, i As Integer
With Application
.ScreenUpdating = False
Set wb1 = ThisWorkbook
Set wb2 = Workbooks.Add
With wb1
For Each objWS In wb1.Worksheets
objWS.Copy after:=wb2.Sheets(Sheets.Count)
Next
End With
.DisplayAlerts = False
For i = .SheetsInNewWorkbook To 1 Step -1
wb2.Sheets(i).Delete
Next
.DisplayAlerts = True
For Each objWS In wb2.Worksheets
If objWS.PivotTables.Count = 0 Then objWS.UsedRange = objWS.UsedRange.Value
Next
deleteAllCodeAndModules wb2.Name
.Dialogs(xlDialogSaveAs).Show
.ScreenUpdating = True
End With
End Sub


Gruß von Luschi
aus klein-Paris

Anzeige
AW: Datenexport bricht ab
27.06.2009 13:25:23
Mark
hmm jetzt erhalte ich wieder einen Fehler in der Zeile:
objWS.UsedRange = objWS.UsedRange.Value
geht es vielleicht auch anders eine Kopie meiner Arbeitsmappe zu erstellen und dabei alle Formeln durch Werte zu ersetzen und und die Makros zu entfernen? Es müsste doch einfach sein wenn ich die Datei nicht kopiere sondern unter einem anderen Namen speichere und dann auf die Datei zugreife und Formeln ersetze und VBA lösche...
Was mich wunder, dass die Datei immer bei den Diagrammen im Makro abbricht.
Ich würde die Datei ja hochladen aber sie hat 80MB.
AW: Datenexport bricht ab
28.06.2009 11:40:58
Gerd
Hallo Mark,
ohne Beispielmappe (ggf. "abgespeckte") mit der der Fehler auftritt u. ohne Fehlerbeschreibung
bleibt nur der Hinweis, diesen Fehler ggf. abfangen zu können.
For Each objWS In ActiveWorkbook.Worksheets
On Error Resume Next
If objWS.PivotTables.Count = 0 Then objWS.UsedRange = objWS.UsedRange.Value
On Error GoTo 0
Next
Gruß Gerd
Anzeige
einfachere Lösung
28.06.2009 16:44:48
Mark
Hallo Gerd,
vielleicht bin ich auch zu kompliziert an das ganze herangegangen.
Eigentlich würde es mir ausreichen, wenn ich ein Makro hätte welches mir eine Kopie erstellt und nur bei
2 bestimmten Arbeitsblätter (heissen im VBA "Daten1" und "Daten2") die Formeln durch Werte ersetzt.
Zusätzlich müssen nur bestimmte Makros entfernet werden (Namen: Makro1, Makro2 und Makro3).
AW: einfachere Lösung
04.07.2009 10:07:53
Gerd
Hallo Marc,
ja vielleicht.
Enthalten diese beiden Tabellenblätter Pivot-Tabellen und/oder Shapes?
Sind die zu löschenden Makros die einzigen überhaupt?
In welchem Modul stehen diese ?
Gruß Gerd
Anzeige
AW: einfachere Lösung
06.07.2009 10:09:35
Mark
Problem selbst gelöst - Danke

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige