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

Frage zu ThisWorkbook / activeWorkbook

Frage zu ThisWorkbook / activeWorkbook
28.08.2008 16:59:00
Thomas3
Hallo zusammen,
folgende Frage.
Ich habe zwei Dateien offen.
Datei 1 ist meine Datei, aus der ich mittels Macro verschiedene Ablauf starte. Diese ist bei mir definiert mit ThisWorkbook
Datei 2 ist eine Datei, in der das Macro aus Datei 1 eingreifen soll. Diese ist definiert bei mir als ActiveWorkbook.
Folgenden Ablauf habe ich im Macro geschrieben
in ThisWorkbook soll ein Sort laufen, nicht benötigte Zeilen werden gelöscht, die benötigten werden in den Zwischenspeicher geschoben.
Dann wird die zu bearbeitende Datei gesucht und geöffnet ( ab jetzt ActiveWorkbook ), letzte Zeile gesucht, der vorhin kopierte Bereich aus dem Zwischenspeicher in die Datei 2 kopiert
Wechsel wieder in ThisWorkbook ( Befehl lautet : ThisWorkbook.Sheet("Tabelle1").activate ), die kopierten Zeilen werden gelöscht
( Ab hier Problem )Wechsel in die Datei 2 ( Befehl lautet : ActiveWorkbook.Sheet("Liste"), um dann dort wieder was zu kopieren und das Kopierte in die Datei 1 zu transferieren.
Das geht auch wunderbar. Bis zu dem Punkt, an dem ich wieder in die Datei 2 will. Da hängt sich das Ganze auf und will nicht mehr.
Hat einer einer Idee, woran das liegen könnte ?
Viele Grüße
Thomas

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage zu ThisWorkbook / activeWorkbook
28.08.2008 17:06:00
ChrisL
Hallo Thomas
Könntest mal den Code (oder noch besser Beispielmappe) zeigen. Versprechen kann ich nichts, aber vielleicht lässt sich daran etwas erkennen. Generell scheint es mir schon unglücklich, dass du hin und her wechseln tust, sollte auch ohne Wechsel machbar sein.
Gruss
Chris
AW: Frage zu ThisWorkbook / activeWorkbook
28.08.2008 17:25:00
Thomas3
Hallo Chris,
Siehe Unten
Lieben Dank für jeden Hinweis
Thomas

Sub daten_übertragen()
Dim masterdatei As String
'Bildschirm einfrieren
Application.ScreenUpdating = False
'anzahl zeilen zählen
lzeileTW = Sheets("Arbeits_Tabelle").Cells(Rows.Count, 1).End(xlUp).Row
'Bereich zum Sortieren festlegen
Range(Cells(13, 1), Cells(lzeileTW, 20)).Select
'nach den markierten Änderungzeilen sortieren
Selection.Sort Key1:=Range("T14"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'übrige Zeilen löschen
lzeileTW_20 = Sheets("Arbeits_Tabelle").Cells(Rows.Count, 20).End(xlUp).Row
anzahl_zeilen_mit_x = lzeileTW_20 - 13
Range(Cells(14 + anzahl_zeilen_mit_x, 1), Cells(lzeileTW, 20)).Select
Selection.Clear
'Zeilen mit X kopieren
Range(Cells(14, 1), Cells(13 + anzahl_zeilen_mit_x, 17)).Select
Selection.Copy
'Dateiname Masterdatei festlegen
pfad = ThisWorkbook.Worksheets("Arbeits_Tabelle").Cells(8, 3).Value & "\"
datei = ThisWorkbook.Worksheets("Arbeits_Tabelle").Cells(9, 3).Value
masterdatei = pfad & datei
'

Function starten zum schauen, ob Masterdatei offen
iOpen = TestOpen(masterdatei)
neuer_versuch:
Select Case iOpen
'Fall 1 : Datei ist verfügbar
Case 0: GoTo weiter
'Fall 2 : Datei bereits offen
Case 1: GoTo neuer_versuch
End Select
weiter:
'Masterdatei öffnen
Workbooks.Open Filename:=masterdatei
Sheets("Liste").Activate
'letzte beschriebene Zeile definieren
lzeileAW = Sheets("Liste").Cells(Rows.Count, 1).End(xlUp).Row
Cells(lzeileAW + 1, 1).Select
'Bereich einfügen
ActiveSheet.Paste
'Daten sortieren
lzeileAW = Sheets("Liste").Cells(Rows.Count, 1).End(xlUp).Row
Range("A1").Select
Application.CutCopyMode = False
Range(Cells(1, 1), Cells(lzeileAW, 17)).Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:= _
Range("A2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal
'kopierte Zeilen löschen
ThisWorkbook.Sheets("Arbeits_Tabelle").Activate
Range(Cells(14, 1), Cells(13 + anzahl_zeilen_mit_x, 20)).Select
Selection.Clear
'gesamte neue Liste kopieren
ActiveWorkbooks(masterdatei).Activate              ---------- Laufzeitfehler 9
Range(Cells(2, 1), Cells(lzeileAW, 17)).Copy
ThisWorkbook.Worksheets("Arbeits_Tabelle").Activate
Cells(14, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'um die geöffnete Auslesedatei schließen zu können
'Dateinamen definieren
suche1 = ThisWorkbook.Sheets("Zu Beginn").Cells(12, 2).Value
Workbooks(suche1).Activate
Application.CutCopyMode = False
ActiveWorkbook.Close savechanges:=True
'Bildschirm auftauen
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Frage zu ThisWorkbook / activeWorkbook
28.08.2008 18:27:15
ChrisL
Hallo Thomas
Ergänzend zu Dan
Vorteilhaft wär wenn alle Select und Activate weg wären d.h. aus...
ThisWorkbook.Sheets("Arbeits_Tabelle").Activate
Range(Cells(14, 1), Cells(13 + anzahl_zeilen_mit_x, 20)).Select
Selection.Clear
wird...
ThisWorkbook.Sheets("Arbeits_Tabelle").Range(Cells(14, 1), Cells(13 + anzahl_zeilen_mit_x, 20)).Clear
Und wenn du dann noch die Variablen definiert hast...
Dim WB As Workbook
Dim WS AS Worksheet
Set WB = ThisWorkbook
Set WS = WB.Sheets("Arbeits_Tabelle")
WS.Range(Cells(14, 1), Cells(13 + anzahl_zeilen_mit_x, 20)).Clear
(ist als Beispiel gedacht)
Gruss
Chris
Anzeige
AW: Frage zu ThisWorkbook / activeWorkbook
29.08.2008 12:11:00
Thomas3
Hallo Chris,
ja Wahnsinn...
Genau so ....
Es läuft auf mehreren Rechner "stabil" und passt also.
Ganz lieben Dank für die Hilfe
Thomas
AW: Frage zu ThisWorkbook / activeWorkbook
28.08.2008 17:36:00
dan
Hallo Thomas, ich weiss nicht, ob ich Dein Problem richtig verstanden habe aber laut Help:
ActiveWorkbook Property: Returns a Workbook object that represents the workbook in the active window (the window on top)
ThisWorkbook Property: Returns a Workbook object that represents the workbook where the current macro code is running
Mach es so, dass die beiden Workbooks mit einer Variable definiert sind.
Z.B.
dim bookSource as workbook
dim bookTarget as workbook
set bookSource = workbooks("sourceBookName")
set bookTarget = workbooks("targetBookName") ... bzw. set bookTarget = workbooks.open(...)
und dann benutze immer die Variablen bookSource und bookTarget.
Gruss Dan, cz.
Anzeige
AW: Frage zu ThisWorkbook / activeWorkbook
29.08.2008 12:12:00
Thomas3
Hallo Dan,
ganz herzlichen Dank. Das hat sehr geholfen
Thomas

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige