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

Tabelle in Open Off calc geöffnet = Makro defekt

Tabelle in Open Off calc geöffnet = Makro defekt
Holger
Hallo Leute.
Ich habe mir ein größeres Makro zusammengebastelt. Es soll Infos zu meinem Unterricht nachträglich an Schüler senden.
Ich habe es in MS Excel 03 erstellt und NICHT in Open office.
Ich habe es mehrfach erfolgreich angewendet.
Dann habe ich wegen eines Hängers von Excel die Mappe im noch reagierenden Alternativprogramm Sun Open Office 3.1 Calc geöffnet.
Dort habe ich einen kleinen Eintrag gemacht in irgendeiner Zelle (Name oder Datum eintragen, etc.)
Dann habe ich die File "Klassenbuch.xls", um die es hier geht, geschlossen.
Excel hat inzwischen schon wieder reagiert. Dann habe ich das Klassenbuch.xls in XL 03 geöffnet und wollte das Makro (den Teil den ihr unten seht ist der Teil, bei dem in der LETZTEN Zeile ein Bug liegt!! Eig. geht es noch weiter!!) mal wieder nutzen, um eine Gitarrenstunde nachzubereiten.
Da kommt doch bei dem UNVERÄNDERTEN Makro der Fehler:
Laufzeitfehler '1004': Die INformationen können nicht eingefügt werden, da der Bereich Kopieren und der Bereich zum Einfügen unterschiedliche Formen und Größen haben. Versuchen Sie folgendes:
Markieren Sie eine einzelne Zelle und wählen Sie dann "Einfügen".
Markieren Sie einen Bereich, der dieselbe Größe und Form hat und wählen Sie dann "Einfügen".
BEENDEN DEBUGGEN HILFE
[alter Code, funzte mal problos in Excel]

Sub Email()
'Bildschirmaktualisierung während des Makro-Prozesses ausstellen
Application.ScreenUpdating = False
'Arbeitsblatt EMAIL auswählen
Sheets("EMAIL").Select
'dort alle Zellen auswählen (entspricht STRG+A)
Cells.Select
'dort evtl. von vorher noch vorhandene Zellen löschen
Selection.Delete Shift:=xlUp
'       Y   O   U   T   U   B   E
'Arbeitsblatt YOUTUBE auswählen
Sheets("YOUTUBE").Select
'dort alle Zellen auswählen (entspricht STRG+A)
Cells.Select
'Kopieren durchführen, jedoch von eingeblendeten Zellen
Selection.SpecialCells(xlCellTypeVisible).Copy
'Arbeitsblatt EMAIL auswählen
Sheets("Email").Select
'dort in Zelle A1 "Deine Youtube - Links für heute" schreiben
Range("A1") = "Deine Youtube - Links für heute"
'dort die Zelle A2 auswählen
Range("A2").Select
'Tabellenblatt EMAIL mit den Spaltenbreiten aus YOUTUBE layoutmäßig vorbereiten
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'in das aktive Blatt aus dem Cache einfügen
ActiveSheet.Paste
'in das Feld springen, wo der Empfängername im Klartext steht
Range("I2").Select
'       E   M   A   I   L   E   M   P   F   Ä   N   G   E   R       V   O   R   B   E   R   E    _
_
I   T   E   N
'den Empfängernamen kopieren
Selection.Copy
'das Arbeitsblatt "ADRESSEN" auswählen
Sheets("ADRESSEN").Select
'Dort Zelle A1 anwählen
Range("A1").Select
'Cache in das Blatt "ADRESSEN" einfügen
ActiveSheet.Paste
'       W   I   K   I   P   E   D   I   A
'Arbeitsblatt WIKIPEDIA auswählen
Sheets("WIKIPEDIA").Select
'dort alle Zellen auswählen (entspricht STRG+A)
Cells.Select
'Kopieren durchführen, jedoch von eingeblendeten Zellen
Selection.SpecialCells(xlCellTypeVisible).Copy
'Arbeitsblatt EMAIL auswählen
Sheets("Email").Select
'von der untersten Zeile der letztgültigen Markierungen noch eine Zeile nach unten in die 1.  _
unmarkierte Zeile gehen
Cells(1, 1).End(xlDown).Offset(1, 0).Select
'dort "Deine Wiki - Links für heute" schreiben
ActiveCell.Value = "Deine Wiki - Links für heute"
'von dort eine Zelle nach unten gehen
ActiveCell.Offset(1, 0).Select
'genau da den Cache einfügen
ActiveSheet.Paste
'dort das linke Feld J1 auswählen
Range("J1").Select
'ab dort die komplette obere Zeile markieren
Range(Selection, Selection.End(xlToRight)).Select
'alle darunter liegenden Zellen auch markieren
Range(Selection, Selection.End(xlDown)).Select
'diesen markierten Bereich ausblenden
Selection.EntireColumn.Hidden = True
'       T   R   A   I   N   I   N   G   S   P   L   A   N
'Arbeitsblatt TRAININGSPLAN auswählen
Sheets("TRAININGSPLAN").Select
'dort alle Zellen auswählen (entspricht STRG+A)
Cells.Select
'Kopieren durchführen, jedoch von eingeblendeten Zellen
Selection.SpecialCells(xlCellTypeVisible).Copy
'Arbeitsblatt EMAIL auswählen
Sheets("Email").Select
'von der untersten Zeile der letztgültigen Markierungen noch eine Zeile nach unten in die 1.  _
unmarkierte Zeile gehen
Cells(1, 1).End(xlDown).Offset(1, 0).Select
'dort "Dein Trainingsplan-Vorschlag" schreiben
ActiveCell.Value = "Dein Trainingsplan-Vorschlag"
'von dort eine Zelle nach unten gehen
ActiveCell.Offset(1, 0).Select
'genau da den Cache einfügen
ActiveSheet.Paste 

dann habe ich erfolglos auf anderen Foren rumgesucht!
Ich habe dann den Code auf Verdacht verändert auf:
[neuer Code nachdem nach Open Office Nutzung der Bug (s.o.) kam]
Sub Email()
'Bildschirmaktualisierung während des Makro-Prozesses ausstellen
Application.ScreenUpdating = False
'Arbeitsblatt EMAIL auswählen
Sheets("EMAIL").Select
'dort alle Zellen auswählen (entspricht STRG+A)
Cells.Select
'dort evtl. von vorher noch vorhandene Zellen löschen
Selection.Delete Shift:=xlUp
'       Y   O   U   T   U   B   E
'Arbeitsblatt YOUTUBE auswählen
Sheets("YOUTUBE").Select
'dort alle Zellen auswählen (entspricht STRG+A)
Cells.Select
'Kopieren durchführen, jedoch von eingeblendeten Zellen
Selection.SpecialCells(xlCellTypeVisible).Copy
'Arbeitsblatt EMAIL auswählen
Sheets("Email").Select
'dort in Zelle A1 "Deine Youtube - Links für heute" schreiben
Range("A1") = "Deine Youtube - Links für heute"
'dort die Zelle A2 auswählen
Range("A2").Select
'Tabellenblatt EMAIL mit den Spaltenbreiten aus YOUTUBE layoutmäßig vorbereiten
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'in das aktive Blatt aus dem Cache einfügen
ActiveSheet.Paste
'in das Feld springen, wo der Empfängername im Klartext steht
Range("I2").Select
'       E   M   A   I   L   E   M   P   F   Ä   N   G   E   R       V   O   R   B   E   R   E    _
_
I   T   E   N
'den Empfängernamen kopieren
Selection.Copy
'das Arbeitsblatt "ADRESSEN" auswählen
Sheets("ADRESSEN").Select
'Dort Zelle A1 anwählen
Range("A1").Select
'Cache in das Blatt "ADRESSEN" einfügen
ActiveSheet.Paste
'       W   I   K   I   P   E   D   I   A
'Arbeitsblatt WIKIPEDIA auswählen
Sheets("WIKIPEDIA").Select
'dort alle Zellen auswählen (entspricht STRG+A)
Cells.Select
'Kopieren durchführen, jedoch von eingeblendeten Zellen
Selection.SpecialCells(xlCellTypeVisible).Copy
'Arbeitsblatt EMAIL auswählen
Sheets("Email").Select
'von der untersten Zeile der letztgültigen Markierungen noch eine Zeile nach unten in die 1.  _
unmarkierte Zeile gehen
Cells(1, 1).End(xlDown).Offset(1, 0).Select
'dort "Deine Wiki - Links für heute" schreiben
ActiveCell.Value = "Deine Wiki - Links für heute"
'von dort eine Zelle nach unten gehen
ActiveCell.Offset(1, 0).Select
'genau da den Cache einfügen
ActiveSheet.Paste
'dort das linke Feld J1 auswählen
Range("J1").Select
'ab dort die komplette obere Zeile markieren
Range(Selection, Selection.End(xlToRight)).Select
'alle darunter liegenden Zellen auch markieren
Range(Selection, Selection.End(xlDown)).Select
'diesen markierten Bereich ausblenden
Selection.EntireColumn.Hidden = True
'       T   R   A   I   N   I   N   G   S   P   L   A   N
'Arbeitsblatt TRAININGSPLAN auswählen
Sheets("TRAININGSPLAN").Select
'dort alle Zellen auswählen (entspricht STRG+A)
Cells.Select
'Kopieren durchführen, jedoch von eingeblendeten Zellen
Selection.SpecialCells(xlCellTypeVisible).Copy
'Arbeitsblatt EMAIL auswählen
Sheets("Email").Select
'von der untersten Zeile der letztgültigen Markierungen noch eine Zeile nach unten in die 1.  _
unmarkierte Zeile gehen
Cells(1, 1).End(xlDown).Offset(1, 0).Select
'dort "Dein Trainingsplan-Vorschlag" schreiben
ActiveCell.Value = "Dein Trainingsplan-Vorschlag"
'von dort eine Zelle nach unten gehen
ActiveCell.Offset(1, 0).Select
ActiveCell.EntireRow.Select 

**************
Wer kann mir helfen, dass der alte Code der mal GING!! wieder funzt, nachdem ich in OOffice 3 scheinbar was zerhauen habe? Danke für Tipps im Voraus
LG HR

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Tabelle in Open Off calc geöffnet = Makro defekt
16.08.2010 21:21:44
mumpel
Hallo!
Nicht das Makro ist defekt, sondern die Arbeitsmappe. Es ist allgemein bekannt, dass OOo-Calc das Layout und Einstellungen von Exceldateien verändert oder gar zerstört. Dir wird nichts weiter übrig bleiben als alle Tabellen der Arbeitsmappe zu überprüfen und wieder neu einzustellen. OOo-Calc und Excel sind nicht wirklich kompatibel zu einander, auch wenn das von "selbsternannten Profis" ganz gern behauptet wird. Irgendeinen Haken gibt es meinen langjährigen Erfahrungen nach immer.
Gruß, René
AW: Tabelle in Open Off calc geöffnet = Makro defekt
17.08.2010 01:19:18
fcs
Hallo Holger,
irgendwie ist die Logik im Ablauf nicht ganz korrekt.
Meines wissens funktioniert folgende Reihenfolge in Excel nicht,
1 . Bereich makieren und kopieren
2. Blatt wechseln
3. In eine Zelle einen Werte
4. Dein kopierten Bereich einfügen.
In Schritt 3 verliert Excel den Kopier-Modus und Paste im 4.Schritt klappt nicht.
Ein weiteres Problem kannst du dir einhandeln, wenn du mit Cells.Select alle Zellen selektierst, dann zwar die Auswahl auf die sichtbaren reduzierst, und anschliessend per Paste den Inhalt auf einem anderen Blatt in eine andere Zelle als A1 einfügst. Wenn du Pech hast sind auf dem Quellblatt z.B nur acht Zeilen ausgeblendet. Wenn du dann zum Beispiel in Zeile A10 die Daten einfügst, reicht der Platz auf dem Blatt nicht. Du muss Auswahl des zu Kopierenden Bereichs in der Prozedur anders festlegen.
Siehe nachfolgenden Vorschlag für eine Anpassung.
Grß
Franz
  '       T   R   A   I   N   I   N   G   S   P   L   A   N
'Arbeitsblatt EMAIL auswählen
Sheets("Email").Select
'von der untersten Zeile der letztgültigen Markierungen noch eine Zeile nach unten in die 1.  _
_
unmarkierte Zeile gehen
Cells(1, 1).End(xlDown).Offset(1, 0).Select
'dort "Dein Trainingsplan-Vorschlag" schreiben
ActiveCell.Value = "Dein Trainingsplan-Vorschlag"
'von dort eine Zelle nach unten gehen
ActiveCell.Offset(1, 0).Select
'Im Arbeitsblatt TRAININGSPLAN Datenwählen + kopieren
With Sheets("TRAININGSPLAN")
.Range(.Cells(1, 1), .Cells.SpecialCells(xlCellTypeLastCell)). _
SpecialCells(xlCellTypeVisible).Copy
End With
'genau da den Cache einfügen
ActiveSheet.Paste '

Anzeige
AW: Tabelle in Open Off calc geöffnet = Makro defekt
18.08.2010 21:51:50
rogoll
Hallo, ich habe Deinen Makrovorschlag eingefügt.
Der Fehler tritt weiterhin auf.
Zum 1. Reply: Was genau könnte oOffice 3 mir zerschossen haben?
nach welchen Makeln muss ich jetzt in Excel suchen? Ich verstehe das nicht ganz mit dem Kopieren und Neumachen. Dann mache ich es ja wieder gleich und es kommt wieder zum Fehler, oder?
LG HR
AW: Tabelle in Open Off calc geöffnet = Makro defekt
19.08.2010 08:33:32
fcs
Hallo Holger,
welche Probleme das alternative Öffnen/Bearbeiten einer Datei in OO und Excel bereiten kann weiss ich nicht.
Das VBA-Projekt wird in OO normalerweise deaktiviert und beim Speichern im Excelformat wieder mit der Datei gespeichert.
Ohne die komplette Datei zu kennen ist es schwierig zu sagen, wo genau jetzt die Probleme in der Exceldatei sind, nachdem die Datei den Weg über OO genommen hat.
Ich verstehe das nicht ganz mit dem Kopieren und Neumachen
Du baust die Exceldatei in Excel schrittweise neu auf. Ist aber keine Garantie, dass anschliessend die Makros funktionieren. Deshalb wäre wichtig vorher das Makroproblem genauer zu untersuchen.
1a. Erstelle von der defekten Datei eine Sicherungskopie in einem anderen Verzeichnis.
1b.Öffne die defekte Datei und speichere sie unter einem anderen Namen
2. Erstelle eine neue Exceldatei.
3. lege in der Datei die entsprechende Anzahl Tabellenblätter an und gib ihnne die gleichen Namen wie im Original.
4. Speichere die neue Datei unter dem ursprünglichen Dateinamen.
5. Für jedes Tabellenblatt
In der defekten Date die Spalten abSpalte A mit Daten, markieren, kopieren und in der neuen Datei in Zelle A1 Zellen einfügen.
Das gleiche machst du mit den Datenzeilen.
Jetzt sollten Daten und Formaten in den Zellen passen.
6. Prüfen, ob unter Verknüpfungen Verbindungen zur alten Datei bestehen. Falls ja, Quelle wechseln auf die neue Datei.
7. Falls Namen in der Datei angelegt waren. Diese Prüfen und ggf. den Verweis auf die neue Datei ändern.
8. Nicht kopierte Schaltflächen ggf. neu anlegen.
9. VBA-Projekt:
Module eifügen und danach alle Prozeduren in der defekten Datei markieren,kopieren und in der neuen einfügen. Falls du in den Tabellenblättern Ereignisprozeduren (_Click(), _Change(), etc) angelegt hasst muss du nach dem Kopieren prüfen, ob diese noch von den richtigen Steuerelementen angesprochen werden. Das kannst du im Editiermodus nach einem Doppelclick auf die jeweiligen Activ-X-Elemente feststellen. Wen dabei falsche Prozeduren angesprochen werden, dann muss du die Namen der Prozeudren anpassen.
10. Hast du Formular-Steuerelementen Makros zugewiesen, dann muss du die zugeordneten Makros prüfen, anpassen.
11. Unter Seite einrichten die Einstellungen der einzelnen Blätter in der alten Datei notieren und falls erforderlich in der neuen Datei auf diese Werte einstellen.
ggf. eine Menge Arbeit. Deshalb sollte vorher eben doch das Problem in der existierenden Datei geklärt sein.
Gruß
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige