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

Makro funktioniert nicht

Makro funktioniert nicht
27.03.2018 14:43:42
Linda
Hallo Zusammen,
ich habe ein Makro geschrieben das nicht funktionieren will. Ich komm einfach nicht drauf warum . Kann mir jemand helfen?
Die Zeile
.Sheets("Alle Rapporte").Rows("15:4055").PasteSpecial xlPasteValues
wird vom Debugger gelb gekennzeichnet.
'Überprüfen ob es Mitarbeiter 1 ist….
If Sheets("Übersicht Rapporte").Range("C5").Value = 1 Then
'Ja? Dann werden folgende Zeilen kopiert…
Sheets("Übersicht Rapporte").Rows("15:4055").Copy
'Mappe: Schlosser_Datenbank öffnen
Workbooks.Open Filename:= _
(ThisWorkbook.Path & "\Schlosser_Datenbank.xlsm"), Password:="schlosser"
With ActiveWorkbook
'Werte einfügen (ohne Formel - nur Werte)
.Sheets("Alle Rapporte").Rows("15:4055").PasteSpecial xlPasteValues
'Arbeitsmappe speichern und schließen
.Close True
End With
Application.CutCopyMode = False
End If

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

Betreff
Datum
Anwender
Anzeige
möglicherweise zu groß? Dann ...
27.03.2018 14:52:24
lupo1
1. Sheets("Übersicht Rapporte").Rows("15:4055").Copy wegnehmen
2. .Sheets("Alle Rapporte").Rows("15:4055").PasteSpecial xlPasteValues ersetzen durch
.Sheets("Alle Rapporte").Range("A15:IU4055") = Sheets("Übersicht Rapporte").Range("A15:IU4055").Value
AW: Makro funktioniert nicht
27.03.2018 14:55:37
JoWE
Hallo Linda,
einfach nur so:
.Sheets("Alle Rapporte").Cells(15,1).PasteSpecial xlPasteValues
Gruß
Jochen
AW: Makro funktioniert nicht
27.03.2018 15:51:24
Linda
Hallo Jochen,
danke, aber das funzt leider auch nicht...
AW: Makro funktioniert nicht
27.03.2018 15:14:31
Daniel
Hi
das kann viele Ursachen haben.
z.B. ein aktiver Blattschutz im Zielblatt.
Außerdem steht bei dir noch ein Befehl zwischen dem Copy und dem Paste.
Dabei kann es - je nach Befehl - passieren das Excel seinen zwischenspeicher leert.
Daher ist es immer besser, Copy und Paste möglichst direkt nacheinander auszuführen.
Dann musst du natürlich beim Kopieren die richtige WorkbookBezeichnung mit angeben, da dann ja die Quelldatei nicht mehr aktiv ist:
Workbooks.Open Filename:= _
(ThisWorkbook.Path & "\Schlosser_Datenbank.xlsm"), Password:="schlosser"
ThisWorkbook.Sheets("Übersicht Rapporte").Rows("15:4055").Copy
ActiveWorkbook.Sheets("Alle Rapporte").Cells(15, 1).PasteSpecial xlpastevalues

Gruß Daniel
Anzeige
das mit den Workbooks gilt natürlich auch bei mir
27.03.2018 15:22:54
lupo1
AW: das mit den Workbooks gilt natürlich auch bei mir
27.03.2018 15:50:19
Linda
Danke für den Tipp. Jetzt kommt mein Problem: Ich habe viele Mappen, in denen sich Rapporte befinden (pro Mitarbeiter eine) und von diesen Mappen aus möchte ich die Daten in die Mappe "Datenbank" kopieren.
Deshalb kann ich die Mappen nicht eindeutig benennen, es sei denn ich programmiere für jeden Mitarbeiter einen sep. Code. Das wollte ich eigentlich vermeiden. Deshalb wollte ich zuerst Copy aus dem aktiven Workbook ausführen, dann die Datenbank öffnen und einfügen....
AW: das mit den Workbooks gilt natürlich auch bei mir
27.03.2018 15:55:49
Linda
Sorry, jetzt muss ich nochmal etwas schreiben, weil ich das Kontrollkästchen nicht aktiviert habe....
Arbeite mit Variablen
27.03.2018 15:58:15
Daniel
Hi
das Problem kannst du mit Variablen lösen.
Schreibe vor dem Öffnen der Datei das aktive Workbook in eine Workbook-Variable und arbeite dann mit diesen.
das ZielWorkbook würde ich auch in eine Variable schreiben, das macht den Code übersichtlicher.
dim wbQuelle as workbook
dim wbZiel as Workbook
set wbQuelle = ActiveWorkbook
set wbZiel = workbook.open (FileName = "...")
wbQuelle.Sheets("...").Range("...").Copy
wbZiel.Sheets("...").Range("...").PasteSpecial xlpastevalues

für die "..." bitte selbstständg die entsprechenden Namen und Zelladressen eintragen.
Gruß Daniel
Anzeige
AW: Arbeite mit Variablen
27.03.2018 16:23:31
Linda
Hallo Daniel,
mein Debugger meckert jetzt bei:
Set wbZiel = Workbook.Open(Filename = "Schlosser_Datenbank.xlsm")
AW: Arbeite mit Variablen
27.03.2018 16:36:28
Daniel
du musst bei Workbook.Open natürlich die gleichen Parameter und Werte verwenden, wie vorher auch.
nur halt jetzt in Klammern. Das ":=" zwischen Parametername und Parameterwert gilt natürlich auch hier.
wenn du das nicht hinbekommst, kannst du auch die ganze Zeile aus dem alten Code nehmen und in der nächsten Zeile dann die Zuweisung an die Variable machen:

Workbooks.Open usw
set wbZiel = ActiveWorkbook
ich schreib die Codes hier halt gerne mal direkt ins Forum.
Da geht's dann mehr ums Prinzip, um die genaue Rechtschreibung musst du dich dann selber kümmern.
Gruß Daniel
Anzeige
AW: Arbeite mit Variablen
28.03.2018 10:08:11
Linda
Sorry, Ich raff es noch immer nicht. Der Pfad von wbZiel muss fehlerhaft sein. Ich habe jetzt tausend Varianten ausprobiert. Dein zweiter Vorschlag, das wbZiel als AcitveWorkbook zu deklarieren funktioniert nicht, da ich wbQuelle schon als ActiveWorkbook deklariert habe.... Danke für deine Geduld..
Hier mein Code:
'Variablen benennen
Dim wbQuelle As Workbook
Dim wbZiel As Workbook
Set wbQuelle = ActiveWorkbook
Set wbZiel = Workbook.Open(Filename:= _
(ThisWorkbook.Path & "\Schlosser_Datenbank.xlsm"))
AW: Arbeite mit Variablen
28.03.2018 16:03:50
Daniel
Hi
vielleicht schreibst du das "Workbooks" in "Workbooks.Open" einfach mal mit "s" am ende, dann geht's besser.
Das hast du ja im alten Code genauso geschrieben.
man muss nur, wenn man das geöffnete Workbook gleich er Variablen zuweist, die Parameter in Klammern setzen, ansonsten bleibt alles gleich.
das mit ActiveWorkbook funktioniert schon.
denn die Variable merkt sich das konkret zugewiesene Workbook.
wenn ich folgendes Programmmiere

Workbooks("Mappe1.xlsx").Active
Set wbQuelle = ActiveWorkbook
Workbooks.Open "Pfad\...\Mappe2.xlsx"
Set wbZiel = ActiveWorkbook

dann ist wbQuelle immer noch "Mappe1.xlxs", unabhängig davon welches Workbook gerade aktiv ist.
Ansonsten wären die Variable ja unnötig, denn dann könntest du ja gleich ActiveWorkbook anstelle der Variabeln verwenden.
Solange du der Variablen kein neues Workbook zuweist, ist die Variable immer mit dem selben Workbook verknüpft.
Gruß Daniel
Anzeige

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige