Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Sub in mehrere Dateie aufrufen!
#21
Hallo Stefan,


das Ziel ist eine Art "Syncronhalten der Daten"! Sowohl ich User1 als auch User2 haben eigene Dateien mit Userformen in der wir Artikel anlegen können, Angebote anlegen usw....die Daten werden beim Anlegen per Knopfdruck in einer Extra Datenbankdatei "DB.xlsm" geschrieben, hier sind fortlaufende Nummern usw. auch drin! Also wenn ich User1 z.B. einen Artikel anlege gebe ich meine Daten ein in meine User1Datei.xlsm per Userform und beim Klick auf dem Button "Artikel anlegen" wird die Datei "DB.xlsm" geöffnet eine Fortlaufende Artikelnummer generiert aus der DB und der Datensatz wird in der DB reingeschrieben. Soweit so gut? Nun möchte ich über den DatenSync Code den ich in meiner User1Datei (und auch User2 in seiner User2Datei hat) habe die Daten aus der DB kopieren und in meiner User1Datei einfügen! Warum? Per Userform kann ich in meiner User1Datei nicht nur Artikel anlegen sonder auch ansehen abrufen usw. und ich möchte nicht, dass beim Klick in der Listbox auf ein Artikel jedes mal die DB aufgemacht wird, geht also blitzschnell wenn meine Daten in meiner User1Datei drin sind! So, das Problem ist, wenn ich User1 ein Artikel anlege und dieser in der DB geschrieben wird, ist User2 nicht auf dem aktuellsten Stand! Er hat den gleichen Code "Datensync" in seiner DAtei und kann den natürlich auch per Knopfdruck ausführen damit die Daten syncron sind, aber ich möchte, seinen Code "Datensync" in seiner User2Datei aus meiner User1Datei irgendwie Starten, damit wenn die Synchronisierung beim mir stattfindet, gleich auch bei ihm gestartet wird! Wie ich schon in mein letzten Beitrag erklärt habe funktioniert das momentan, aber nur wenn seine User2Datei nicht in Benutzung ist sprich geschlossen! Ist diese von ihm geöffnet/in Benutzung, dann klappt es nicht wie ich in mein letzten Beitrag beschrieben habe!!!

Hoffe das ist einigermaßen verständlich!! Angel

Ach ja hier der Datensync Code:

Code:
Sub Datensync()
Dim Quelldateiname  As String
Dim Quelle      As Object
Dim wsZiel1 As Worksheet
Dim wsZiel2 As Worksheet
Dim wsZiel3 As Worksheet
Dim wsZiel4 As Worksheet
Dim wsZiel5 As Worksheet
Dim wsZiel6 As Worksheet

Dim wsQuelle1 As Worksheet
Dim wsQuelle2 As Worksheet
Dim wsQuelle3 As Worksheet
Dim wsQuelle4 As Worksheet
Dim wsQuelle5 As Worksheet
Dim wsQuelle6 As Worksheet
  
   Quelldateiname = ThisWorkbook.Path & "\" & "DB.xlxm" ' Datei auswählen
  
   'Set Quelle = Workbooks("DB.xlsm") 'Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "DB.xlsm", ReadOnly:=True, Password:="", WriteResPassword:="") ' Datei öffnen
    Set Quelle = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "DB.xlsm", ReadOnly:=True, Password:="", WriteResPassword:="") ' Datei öffnen

    Set wsZiel1 = ThisWorkbook.Sheets("produkte")
        wsZiel1.Cells.ClearContents
        wsZiel1.Cells.ClearFormats
    Set wsQuelle1 = Quelle.Worksheets("produkte")
    wsQuelle1.Cells.Copy Destination:=ThisWorkbook.Sheets("produkte").Cells
    
    Set wsZiel2 = ThisWorkbook.Sheets("kunden")
        wsZiel2.Cells.ClearContents
        wsZiel2.Cells.ClearFormats
    Set wsQuelle2 = Quelle.Worksheets("kunden")
    wsQuelle2.Cells.Copy Destination:=ThisWorkbook.Sheets("kunden").Cells
    
    Set wsZiel3 = ThisWorkbook.Sheets("LNA")
        wsZiel3.Cells.ClearContents
        wsZiel3.Cells.ClearFormats
    Set wsQuelle3 = Quelle.Worksheets("LNA")
    wsQuelle3.Cells.Copy Destination:=ThisWorkbook.Sheets("LNA").Cells
    
    Set wsZiel4 = ThisWorkbook.Sheets("zwischen")
        wsZiel4.Cells.ClearContents
        wsZiel4.Cells.ClearFormats
    Set wsQuelle4 = Quelle.Worksheets("zwischen")
    wsQuelle4.Cells.Copy Destination:=ThisWorkbook.Sheets("zwischen").Cells
    
    Set wsZiel5 = ThisWorkbook.Sheets("Attribute")
        wsZiel5.Cells.ClearContents
        wsZiel5.Cells.ClearFormats
    Set wsQuelle5 = Quelle.Worksheets("Attribute")
    wsQuelle5.Cells.Copy Destination:=ThisWorkbook.Sheets("Attribute").Cells
    
    Set wsZiel6 = ThisWorkbook.Sheets("LNK")
        wsZiel6.Cells.ClearContents
        wsZiel6.Cells.ClearFormats
    Set wsQuelle6 = Quelle.Worksheets("LNK")
    wsQuelle6.Cells.Copy Destination:=ThisWorkbook.Sheets("LNK").Cells
      
    Quelle.Close SaveChanges:=False

    Set wsQuelle1 = Nothing
    Set wsQuelle2 = Nothing
    Set wsQuelle3 = Nothing
    Set wsQuelle4 = Nothing
    Set wsQuelle5 = Nothing
    Set wsQuelle6 = Nothing

    Set wsZiel1 = Nothing
    Set wsZiel2 = Nothing
    Set wsZiel3 = Nothing
    Set wsZiel4 = Nothing
    Set wsZiel5 = Nothing
    Set wsZiel6 = Nothing

    ThisWorkbook.Save
End Sub


Vielen Dank
VG
Alexandra
Antworten Top
#22
Hallo Alexandra,

setze doch mal einen Haltepunkt im Code Datensync und schaue wie der Code abgearbeitet wird. Habt ihr eigentlich Access oder ähnliches zu Verfügung?
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#23
Hallo Stefan,


Haltepunkte durchlaufen lassen nichts er arbeitet den Code genauso ab wie gewünscht nur, das eben wenn die User2Datei von User2 gerade bearbeitet wird, dass dass dieser code hier, so denke ich der sich in meiner User1Datei befindet:

Code:
Sub sync()
Dim Ziel As Workbook
If PrüfungDateiOffenUser2 Then
Run "'P:\CLIENTS\User2Datei.xlsm'!DatenSync"
Else
Set Ziel = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "User2Datei.xlsm", ReadOnly:=False, Password:="", WriteResPassword:="")
Run "'P:\CLIENTS\User2Datei.xlsm'!DatenSync"
Ziel.Close
End If
End Sub

speziell
Code:
If PrüfungDateiOffenUser2 Then
Run "'P:\CLIENTS\User2Datei.xlsm'!DatenSync"

dass der Code "Datensync" in der User2Datei einfach nur gestartet werden soll, ohne dass die DAtei geöffnet wird, da diese ja durch User2 bereits geöffnet ist!!!!

Kann es daran liegen?


Danke
VG
Alexandra
Antworten Top
#24
Hallo Alexandra,

habe ich das jetzt richtig verstanden: Die Datei User2Datei befindet sich auf dem Verzeichnis bei User2 und darin befindet sich auch der Code Datensync welcher in die User2Datei schreiben will? Und wie sieht es mit Access aus?
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#25
Hallo Stefan,


Acces haben wir nicht!!

User1Datei
User2Datei und
DB

befinden sich im gleichen Verzeichnis auf Netzlaufwerk!!!

Ich habe die User1Datei offen und User2 hat User2Datei offen am anderen PC!

Ich möchte aus meiner User1Datei das Makro "DatenSync" in der User2Datei starten!!!!



Vielen Dank
VG
Alexandra
Antworten Top
#26
Hi Alexandra,

(13.07.2014, 14:44)cysu11 schrieb: Ich möchte aus meiner User1Datei das Makro "DatenSync" in der User2Datei starten!!!!

ich glaube, das geht nicht.

Einfacher wäre es vielleicht, in diesem Fall dem User2 mit dem Makro eine eMail zu schicken, er möge doch bitte seine Datei kurz schließen und dann kann Dein noch laufendes Makro das DatenSync ausführen.

Oder Du sagst ihm per Mail, er soll selber das DatenSync-Makro in seiner Datei starten.
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • cysu11
Antworten Top
#27
Hallo Alexandra,

mal noch zwei Ansätze, wenn es nur um die VBA-Makros geht..

Wenn der andere User die Excel-Datei nur schreibgeschützt öffnen kann, dann hast Du die Möglichkeit, die Excel-Datei schreibberechtigt zu öffnen. Einrichten könnte man das im Netz z.B. über Gruppenberechtigungen auf Verzeichnisebene. Das wäre wohl kontraproduktiv für den anderen user.

Eine zweite Möglichkeit sehe ich darin, die Makros von den Daten so weit wie möglich zu trennen. Die Programmdatei kannst Du mit Schreibschutz im Netz platzieren und es können alle user damit arbeiten.
Ich mache das auch öfter so. Die Programmdatei speichere ich dann oft als AddIn, damit wird sie "nur" im Hintergrund geladen und der User merkt höchstens etwas, wenn der Reiter AddIns erscheint oder dort neue Einträge zu finden sind.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#28
Hallo Andre, ich glaube ich war vorhin nicht ganz richtig, deswegen hier nochmals!! :)


danke für deine Antworten und sorry, deine Frage ist bei mir untergeganben

Ja, Excel meldet, dass die Datei aus dem Internetspeicherort stamm und ein Risiko darstellen kann!

Dein Vorschlag mit der "schreibgeschützten Variante" funktioniert leider nicht, da der Code der ausgeführt werden soll, etwas in der jeweiligen Datei auch schreiben wird!!!

Mittlerweile habe ich eine Kompromisslösung, die mir jedoch nicht so gut gefällt!
Ich erstelle aus der User1Datei eine leere "SyncUser2.txt"-Datei! In der User2Datei habe ich in einige Codes eine Suche nach diese txt datei integriert, ist die Suche erfolglos, dann Exit Sub, amsonsten führe den Code "DatenSync" aus und lösche die "SyncUser2.txt"!!! Das ganze hatte ich Anfangs mit einer Schleife laufen alle 5 Sekunden aber, so gefällt mir bissi besser!!!

Die eleganteste Lösung wäre jedoch mein Ursprünglicher Gedanke, aber so wie es aussieht, leider nicht möglich!!!


Vielen Dank nochmals
VG
Alexandra
Antworten Top


Gehe zu:


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