Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Sub in mehrere Dateie aufrufen!
#1
Hallo liebe Excelgemeinde,


mit folgenden Codes starte ich aus 3 verschieden Dateien im Neztwerk eine Code namens "Datensync"! Das funktionert auch prima!
Das was ich nicht hinbekomme ist aber das der folgende Code:
Code:
Sub LiveSyncAll()
Run "'C:\Users\rabe\Downloads\test1.xlsm'!DatenSync"
Run "'C:\Users\rabe\Downloads\test2.xlsm'!DatenSync"
Run "'C:\Users\rabe\Downloads\test3.xlsm'!DatenSync"
End Sub

hier zuerstprüft ob die jeweiligen Dateien offen sind, wenn ja dann einfach den Code "Datensync" starten, wenn nein dann die jeweilige Datei öffnen den Code starten und dann wieder schließen!
Einen Code zur allgemeinen Prüfung ob eine bestimmte Datei offen ist habe ich schon:

Code:
Option Explicit
Public Enum XL_FILESTATUS
     XL_UNDEFINED = -1
     XL_CLOSED
     XL_OPEN
     XL_DONTEXIST
End Enum

Public Function FileStatus(xlFile As String) As XL_FILESTATUS
On Error Resume Next
Dim File%: File = FreeFile
Err.Clear
Open xlFile For Binary Access Read Lock Read As #File
Close #File
Select Case Err.Number
     Case 0: FileStatus = XL_CLOSED
     Case 70: FileStatus = XL_OPEN
     Case 76: FileStatus = XL_DONTEXIST
     Case Else: FileStatus = XL_UNDEFINED
End Select
End Function
Function PrüfungDateiOffen() As Boolean
Dim strFile As String
PrüfungDateiOffen = True
strFile = ThisWorkbook.Path & "\" & "DB.xlsm"
If FileStatus(strFile) = XL_CLOSED Then
     Else
     MsgBox "Datenbank wird bereits bearbeitet, bitte versuchen Sie es später noch einmal!"
Exit Function

End If
PrüfungDateiOffen = False
End Function

Meine Fragen, wie kann ich beide Codes kombinieren, damit ich mein Vorhaben umsetzten kann?


Vielen Dank im Voraus
VG
Alexandra
to top
#2
Hallo Alexandra,

im Prinzip
Code:
If Filestatus("test1.xlsm") = xl_open then Run "'C:\Users\rabe\Downloads\test1.xlsm'!DatenSync"
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#3
Hallo Andre,

habe bis jetzt mit einer Mappe versucht und es funktioniert wenn die Zieldatei zu ist!
Wenn Sie offen ist, dann kommt immer die Melund, dass diese Bereits offen ist, und ob ich es noch einmal öffnen möchte! Es soll aber nur der Code ausgeführt werden!

HIer mein Code der noch nicht ganz funktioniert Smile

Code:
Sub sync()
Dim Ziel As Workbook
If FileStatus("test1.xlsm") = xl_open Then
Run "'C:\Users\rabe\Downloads\test1.xlsm'!DatenSync"
Else
Set Ziel = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "test1.xlsm", ReadOnly:=False, Password:="", WriteResPassword:="")
Run "'C:\Users\rabe\Downloads\test1.xlsm'!DatenSync"
End If
Ziel.Close
End Sub

Was mache ich falsch?


Danke
VG
Alexandra
to top
#4
Hallo Andres,


so jetzt funktioniert es wenn die Datei offen ist und wenn die Datei zu ist, allerdings möchte ich dass wenn die Datei offen ist, dass diese dann auch offen bleibt, und wenn diese zu ist, dass diese nach dem Code auch wieder geschlossen wird!

Code:
Sub sync2()
Dim Ziel As Workbook
If FileStatus("test1.xlsm") = xl_open Then
Application.Run "'test1.xlsm'!DatenSync"
Else
Set Ziel = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "test1.xlsm", ReadOnly:=False, Password:="", WriteResPassword:="")
Run "'C:\Users\rabe\Downloads\test1.xlsm'!DatenSync"
End If
Ziel.Close
End Sub

Wie muss ich den Code ändern?


DAnke
VG
Alexandra
to top
#5
Hi Alexandra,

(03.07.2014, 20:07)cysu11 schrieb: Run "'C:\Users\rabe\Downloads\test1.xlsm'!DatenSync"

hat der User eigentlich was mit mir zu tun?
Gruß Ralf

?mage

Die deutsche Rechtschreibung ist Freeware, d.h. du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, deswegen darfst du sie nicht verändern oder in veränderter Form veröffentlichen.
to top
#6
Hallo Ralf,


ich denke nicht, das ist nur mein Familienname! Smile


VG
Alexandra
to top
#7
Hallo Alexandra,

Sub sync2()
Dim Ziel As Workbook
If FileStatus("test1.xlsm") = xl_open Then
Application.Run "'test1.xlsm'!DatenSync"
Else
Set Ziel = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "test1.xlsm", ReadOnly:=False, Password:="", WriteResPassword:="")
Run "'C:\Users\rabe\Downloads\test1.xlsm'!DatenSync"
End If
Ziel.Close
End Sub

schiebe die rote Zeile dahin, wo sie hin gehört! ;-)

Gruß Uwe
to top
#8
Hallo Uwe,


In dein Code ist die rote Zeile genau da wo sie bei mir auch ist, oder übersehe ich etwas?


Danke
VG
Alexandra
to top
#9
Hi Alexandra,

(03.07.2014, 22:46)cysu11 schrieb: ich denke nicht, das ist nur mein Familienname! Smile

aah, ok. Dann ist das klar.
Gruß Ralf

?mage

Die deutsche Rechtschreibung ist Freeware, d.h. du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, deswegen darfst du sie nicht verändern oder in veränderter Form veröffentlichen.
to top
#10
Hallo Alxandra,

Uwe wollte Dir damit zeigen, dass die Codezeile sich an der falschen Stelle befindet. Um den Codeablauf besser zu verstehen, solltest Du den Code mal im Einzelschritt durchlaufen lassen. Hier könntest Du ein Stop einfügen, um den Code anzuhalten (siehe mein Beispiel).

Code:
Sub sync2()
Dim Ziel As Workbook
Stop
If FileStatus("test1.xlsm") = xl_open Then

Drücke nun die F8-Taste um zu sehen, wie Excel deinen Code abarbeitet, wenn die Datei offen ist und wenn die Datei zu ist. Danach solltest Du erkennen wo die rotmarkierte Codezeile hingehört.
Gruß Stefan
Win 7 / Office 2007
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  MsgBox 1 Minute nach Dateiöffnung aufrufen nixdaacher 2 65 25.11.2016, 22:18
Letzter Beitrag: schauan
  Userform mit Buttons aufrufen und beenden Rabe 5 324 02.08.2016, 08:56
Letzter Beitrag: Rabe
  Explorer via VBA aufrufen Telematix 8 454 22.07.2016, 07:37
Letzter Beitrag: Telematix
  Von eine spalte mehrere daten verteilen in mehrere spalten vimka 2 492 06.11.2015, 22:27
Letzter Beitrag: vimka
  VBA-Funktion aus Personl.xls aufrufen sharky51 4 1.076 12.10.2015, 16:21
Letzter Beitrag: RPP63
  Aufrufen TextBox1_KeyDown Prozedur aus einer anderen Prozedur heraus Nonexperta 6 1.411 05.12.2014, 14:24
Letzter Beitrag: schauan
  Codefragment aufrufen, aber wie Nonexperta 7 1.327 18.11.2014, 17:54
Letzter Beitrag: schauan
  Makro mehrfach aufrufen mit Namensübergabe Rabe 12 2.927 17.05.2014, 14:13
Letzter Beitrag: Kuwer
  Bereichsfestlegung als Variable aufrufen Rabe 7 1.686 17.05.2014, 09:09
Letzter Beitrag: Rabe

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste