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

andere Mappe schliessen vba

andere Mappe schliessen vba
29.04.2013 18:40:22
karl
hallo excelprofis
mit folgendem Code versuche ich aus Mappe xy eine andere Mappe (Test1) zu schliessen wenn sie bereits geöffnet ist.
Jedoch: selbst wenn die Mappe Test1 geöffnet ist,
kommt immer Mappe nicht geöffnet
Kann mir hier jemand helfen?

Sub schliessen()
Dim wb As Workbook
Dim pfad As String
pfad = ThisWorkbook.Path & "\"
MsgBox pfad & "Test1" & ".xls"
For Each wb In Workbooks
If wb.name = pfad & "Test1" & ".xls" Then
MsgBox "Arbeitsmappe Test1 ist geöffnet.Wird jetzt geschlossen"
wb.Close SaveChanges:=True
End If
If Not wb.name = pfad & "Test1" & ".xls" Then
MsgBox "Arbeitsmappe Test1 ist nicht geöffnet"
End If
Next wb
End Sub

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: andere Mappe schliessen vba
29.04.2013 18:57:41
Beverly
Hi Karl,
bei einer geöffneten Mappe gibt es keinen Pfad.


AW: andere Mappe schliessen vba
29.04.2013 19:01:01
Martin
Hallo Karl,
versuche es mal so:
 If wb.FullName = pfad & "Test1" & ".xls"
Viele Grüße
Martin

AW: andere Mappe schliessen vba
29.04.2013 19:09:12
karl
Hallo Beverly,Martin
das mit dem pfad hatte ich nur versucht weil es ohne Pfad auch nicht funktioniert hatte.
War nur ne idee, aber danke für die Info, denn das hab ich nicht gewusst.
mit

If wb.FullName = pfad & "Test1" & ".xls"

kommt auch immer die Meldung Datei Test1 nicht geöffnet, obwohl sie doch geöffnet ist
ich würde gerne den Beitrag noch offen lassen
karl

Anzeige
AW: andere Mappe schliessen vba
29.04.2013 19:43:12
Beverly
Hi Karl,
versuche es mal so:
Sub Schlissen2()
If Not IsError(Application.Evaluate("'[Test1.xls]Tabelle1'!$A$1")) Then
MsgBox "Ist offen"
Workbooks("Test1.xls").Close True
Else
MsgBox "Mappe nicht geöffnet"
End If
End Sub


AW: andere Mappe schliessen vba
29.04.2013 19:59:49
karl
Danke Beverly für die weitere Hilfe.
ich bin am verzweifeln, denn auch mit diesem Code kommt
obwohl die Mappe geöffnet ist
Mappe ist nicht geöffnet.
ich google schon einige zeit, habe auch ne menge
gefunden.

Function IsWorkbookOpen(strWB As String) As Boolean
On Error Resume Next
IsWorkbookOpen = Not Workbooks(strWB) Is Nothing
End Function

Sub test()
If IsWorkbookOpen("Test1.xls") Then
MsgBox "OFFEN"
Else
MsgBox "Nicht offen"
End If
End Sub
auch hier wird die mappe nicht gefunden
gruss
karl
ps: im Vorschaufenster bekomme ich angezeigt:überprüfe deinen Code
und setzte evtl Zeilenumbrüche ein
was habe ich falsch gemacht?

Anzeige
AW: andere Mappe schliessen vba
29.04.2013 20:04:09
Beverly
Hi,
kann es sein, dass deine Mappe anders heißt?


AW: andere Mappe schliessen vba
29.04.2013 20:11:54
karl
habe die mappe mal in abc umbenannt, dasselbe Problem
Ich würde gerne für heute schluss machen und morgen
mit diesem Beitrag weitermachen.
Muss gleich zur Nachtschicht
Danke euch allen
karl

erst einmal nur prüfen
29.04.2013 19:54:43
Erich
Hi,
probier doch mal diese Prozeduren, vielleicht stellt sich ja dabei heraus,
warum die Text1.xls nicht gefunden wird:

Sub pruefen1()
Dim wb As Workbook
For Each wb In Workbooks
MsgBox "#Test1.xls#" & vbLf & "#" & wb.Name & "#"
Next wb
End Sub
Sub pruefen2()
Dim wb As Workbook
Dim pfad As String
pfad = "#" & ThisWorkbook.Path & "\Test1.xls" & "#"
For Each wb In Workbooks
MsgBox pfad & vbLf & "#" & wb.FullName & "#"
Next wb
End Sub
Hoffentlich sind nicht zu viele WBs offen... ;-)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: erst einmal nur prüfen
29.04.2013 20:03:56
karl
Hallo Erich,
danke auch dir.
Jetzt wird bei beiden Subs auch die Mappe Test1 erkannt.
sowohl mit als auch ohne Pfad
wie muss ich hier weitermachen? um die Mappe Test1 zu schliessen
karl

und nun schließen?
29.04.2013 20:15:09
Erich
Hi,
"Jetzt wird bei beiden Subs auch die Mappe Test1 erkannt" ?
Das mit dem erkennen haben dabei wohl deine Augen erledigt. Die beiden Prozeduren zeigen ja nur etwas an,
sie vergleichen oder prüfen gar nichts.
Das Schließen könntest du mal so probieren:

Sub schliessen2()
Dim wb As Workbook, blnOK As Boolean
For Each wb In Workbooks
If LCase(wb.Name) = "test1.xls" Then
MsgBox "Arbeitsmappe Test1.xls ist geöffnet, wird jetzt geschlossen"
wb.Close SaveChanges:=True
blnOK = True
Exit For
End If
Next wb
If Not blnOK Then MsgBox "Arbeitsmappe Test1.xls ist nicht geöffnet"
End Sub
Das "LCase" habe ich reingenommen, falls es an der Groß-/Kleinschreibung liegen kann.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: und nun schließen?
29.04.2013 20:22:15
karl
sorry Erich, ich krieg bald ne krise.
Noch immer wird die Mappe nicht als offen erkannt.
(Mappe ist nicht schreibgeschütz oder ähnliches und heisst wirklich Test1)
karl

dann noch mal nur prüfen
30.04.2013 00:51:40
Erich
Hi,
dann versuch mal das hier:

Sub pruefen3()
Dim wb As Workbook, zz As Long
Worksheets.Add
For Each wb In Workbooks
zz = zz + 1
If LCase(wb.Name) = "test1.xls" Then
Cells(zz, 2) = wb.Name
Else
Cells(zz, 1) = wb.Name
End If
Next wb
End Sub
Erscheint Test1.xls in Spalte A oder in Spalte B?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: dann noch mal nur prüfen
30.04.2013 01:05:55
Mustafa
Hallo Karl,
auch wenn als Version Excel 2003 gewählt wurde.
Ist die Datei wirklich eine .xls oder wurde sie vielleicht mit 2010 gespeichert
und heisst .xlsx bzw .xlsm oder ist es gar eine .csv Datei ?
Gruß aus der Domstadt Köln.

AW: dann noch mal nur prüfen
30.04.2013 16:47:31
karl
Hi Mustafa,
auch dir ein Dankeschön.
Ja die Datei ist eine xls und sie heisst auch Test1, habe aber auch den Namen mal geändert
gleiches Problem.
Oder brauch ich eine andere Lösung für mein Vorhaben.
Ich habe eine Datei (hier Test1 genannt) in die ich aus mehreren anderen Mappen Daten übertrage.
Wenn Die Datei Test1 bereits geöffnet ist - und die Datei erneut geöffnet wird um Daten reinzuschreiben
kommt ja die Meldung Datei bereits geöffnet, erneut öffnen usw.
Das wollt ich verhindern indem ich vorher diese Datei Test1 schliesse.
Gruss
Karl

Anzeige
AW: dann noch mal nur prüfen
30.04.2013 16:52:37
karl
Hallo Erich,
habe die Mappe Test1 geöffnet, die Mappe aus der diese Sub aufgerufen wird
heisst Microsoft Excel-Arbeitsblatt (neu).xls
Die Sub pruefen(3) schreibt den Namen dieser Mappe(Microsoft Excel-Arbeitsblatt (neu).xls)
in ein Neues Blatt A1
Gruss
karl

im VBA-Editor nachsehen
30.04.2013 17:46:17
Erich
Hi Karl,
verstehe ich das richtig, dass da nur deine Code-Mappe in der Liste erscheint, Test1 aber gar nicht auftaucht?
Da versteckt sich deine Test1.xls vor der Workbook-Liste?! Aber wir werden sie finden...!
Wenn du Test1 geöffnet hast und die Mappe mit dem Code, schau doch bitte mal im VBA-Editor auf der linken Seite.
Da gibt es vermutlich den Projekt-Explorer (mit der Titelzeile "Projekt - VBAProjekt".
(wenn nicht, drück mal Strg+R)
Du siehst hier eine Liste der (fett geschriebenen) Projekte. Links steht vermutlich immer "VBAProjekt".
Dahinter stehen in Klammern die Mappennamen.
Bitte schreib mal, welche Mappennamen da bei dir stehen.
(ganz genau, mit Punkten und Dateiendungen wie .xls oder .csv oder .xlsx)
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
VBAProject statt VBAProjekt :-) (owT)
30.04.2013 17:49:54
Erich

AW: im VBA-Editor nachsehen
30.04.2013 18:00:53
karl
Hallo Erich
also,
beide Mappen auf
in der Mappe mit dem Code (Microsoft Excel-Arbeitsblatt (neu).xls)
gibt es im VBA Projekt nur diese VBAProjekt(Microsoft Excel-Arbeitsblatt (neu).xls)
bin ich in der mappe Test1.xls
so gibt es dort nur VBAProjektTest1.xls
karl
und danke für deine unermüdliche hilfe(auch allen anderen natürlich)

Zwei Excel-Instanzen
30.04.2013 18:25:48
Erich
Hi Karl,
da kommt jetzt vermutlich Licht ins Dunkel.
Du hast die Mappen in unterschiedlichen Excel-Instanzen geöffnet, die voneinander nichts wissen können.
Wie öffnest du die Mappen? Aus dem Windows-Explorer? Oder per VBA-Code?
Was ist, wenn du nur mal Excel leer startest und dann mit "Datei - Öffnen" die beiden Mappen öffnest?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: Zwei Excel-Instanzen
30.04.2013 18:41:46
karl
Treffer,
a) bislang habe ich die Dateien sepparat über den explorer geöffnet.
b) wenn ich über ein leeres Excel und Öffnen beide dateien öffne,
dann stehen beide im VBA Projekt
karl

AW: Zwei Excel-Instanzen
30.04.2013 20:08:38
Bambi
Hallo Erich,
das Geheimniss scheint gelüftet :-)
Ich werfe noch eine weitere Möglichkeit in den Raum... Man kann auch auf geschlossene Files zugreifen und das gehts recht flott. Ein rudimentärer Ansatz:
Private Function getValueFromFile(path As String, file As String, sheet As String, row As  _
Integer, column As Integer) As String
Dim arg As String
arg = "'" & path & "[" & file & "]" & sheet & "'!" & Cells(row, column).Address( _
ReferenceStyle:=xlR1C1)
'Ausführen des XL4-Makros
getValueFromFile = ExecuteExcel4Macro(arg)
End Function
Könnte eventuell interessant sein für dich
Gruss
Bambi (Daniel)

Anzeige
AW: Zwei Excel-Instanzen
01.05.2013 17:37:55
karl
Hallo nochmals,
zu meinem problem habe ich was gefunden
es wird nun die Datei Test1 aus einer anderen Excelinstanz gefunden und auch
wie gewollt geschlossen.
Wie muss der code abgeändert werden, dass nur die Mappe Test1 im code berücksichtigt wird
und keine andere.
If not(wbExtern.FullName) = pfad Then
so klappt es bei mir nicht

Sub schliessen()
Dim pfad As String
Dim wbExtern As Workbook
Dim xlExtern As Application
pfad = ThisWorkbook.Path & "\" & "Test1" & ".xls"
Set wbExtern = GetObject(pfad)
Set xlExtern = wbExtern.Application
For Each wbExtern In xlExtern.Workbooks
If wbExtern.FullName = pfad Then
wbExtern.Close SaveChanges:=True
xlExtern.Quit
End If
Next
Set wbExtern = Nothing
Set xlExtern = Nothing
End Sub
danke
karl

AW: Zwei Excel-Instanzen
01.05.2013 17:39:53
karl
auf offen gestellt
siehe Beitrag/Nachfrage hier drüber
karl

AW: Zwei Excel-Instanzen
01.05.2013 19:32:38
Erich
Hi Karl,
warum tust du dir das an und arbeitest mit mehreren Excel-Instanzen?
Ich sehe wenige Gründe, das im Ausnahmefall zu tun...
Deine Frage habe ich nicht verstanden:
"Wie muss der code abgeändert werden, dass nur die Mappe Test1 im code berücksichtigt wird und keine andere."
Wo und wie werden andere Mappen im Code berücksichtigt?
Was willst du tun, was nicht?
Eine Bemerkung zum Code:
Die andere Instanz wird mit xlExtern.Quit beendet, wenn Test1.xls gefunden und geschlossen wurde.
Das passiert aber auch dann, wenn in dieser Instanz noch andere Mappen geöffnet sind.
Soll das so sein?
Noch eine Bemerkung: In der Zeile unter "xlExtern.Quit" könnte gut ein "Exit For" stehen.
Wenn Test1.xls gefunden ist, muss nicht weiter gesucht werden - die Schleife kann verlassen werden.
Was willst du nach der Zeile
If not(wbExtern.FullName) = pfad Then
tun?
Diese Zeile wäre korrekt:
If wbExtern.FullName pfad Then
oder
If not (wbExtern.FullName = pfad) Then
Das "Not" bezieht sich ja nicht auf wbExtern.FullName, sondern auf den ganzen Ausdruck
wbExtern.FullName = pfad
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

AW: Zwei Excel-Instanzen
01.05.2013 20:49:26
karl
Hallo Erich.
ich will nur die Datei test1 beenden - die ja nicht gefunden wurde.
Das mit der 2ten instanz hat sich ja durch eure Nachfragen zu meinem
ursprünglichem Problem herausgestellt.
Darum hatte ich danach gegoogelt.Oder hab ich das falsch verstanden,dass wnn ich im explorer
verschiedene xls öffne dann hab ich auch immer eine neue Instanz?
gruss
karl

Ordneroptionen - Dateitypen in Windoof
02.05.2013 01:22:00
Erich
Hi Karl,
"wenn ich im explorer verschiedene xls öffne dann hab ich auch immer eine neue Instanz?"
Das muss nicht so sein, es ist nur bei die so eingestellt - warum auch immer.
Sehe ich das richtig, dass du eigentlich gar nicht mit mehreren Instanzen arbeiten willst,
sondern das nur "zufällig" oer zwangsläufig tust, weil Windows sich eben so verhält,
dass es beim Explorer-Klick auf eine Excelmappe jeweils eine neue Instanz anlegt?
Du solltest das in Windows ändern! (Excel hat damit nichts zu tun, ist nur betroffen.)
Dann musst du dich mit dem Kram nicht mehr rumschlagen.
Es gibt Unterschiede zwischen den verschiendenen Win-Versionen.
Wenn du WinXP hast, gibt es im Explorer-Menü Extras - Ordneroptionen.
Hier werden u. a. auch Dateitypen an Programme geknüpft, z. B. xls an Excel.
Dabei gibt es evtl. mehrere Aktionen, wie z. B. das hier interessante "Open".
Wenn da im Parameter %1 auftaucht, solltest du das rausnehmen. /e sollte, wenn es da ist, kann stehen bleiben.
Genaueres, auch über neuere Win-Versionen, findest du auf vielen Internetseiten. Such mal z. B. nach
ordneroptionen instanz
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

AW: Ordneroptionen - Dateitypen in Windoof
02.05.2013 16:28:25
karl
Hallo Erich,
ja danke, da werde ich mal nachschauen.
Einstweilen habe ich ein timermakro gefunden, bei hajo
welches eine mappe schliesst.
karl

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige