daether
Goto Top

SImultan in 2 Dateien schreiben

Moin Moin,
ich stehe zur Zeit vor einem großen Problem.
Wir arbeiten z.Zt. mit Exceldateien in der Buchhaltung.
Ziel ist es, wenn z.B. ein Name in Datei DATEI_A.xls geschrieben wird ( oder gespeichert ), dass dieser auch in DATEI_B.xls geschrieben wird, sodass dies nicht jedesmal per Hand gemacht werden muss.

Gibt es für soetwas eine Lösung ?

MfG Daether

Content-Key: 119842

Url: https://administrator.de/contentid/119842

Printed on: April 25, 2024 at 00:04 o'clock

Member: WiSch
WiSch Jul 06, 2009 at 14:57:06 (UTC)
Goto Top
Soll das zur Datensicherung dienen?
Dann ggf. über ein Tool das eine Datei/Verzeichnis überwacht und bei Änderungen eine Aktion ausslöst... hier z.B. das Wegsichern der Datei?
Member: Dieter-56
Dieter-56 Jul 06, 2009 at 15:54:34 (UTC)
Goto Top
hallo,

ich versteh das so, dass ihr einfach daten übernehmen wollt, damit ihr sie nicht in verschiedene dateien extra eingeben müßt.
ich hab sowas ähnliches auch schon gemacht, indem ich die versch. felder mittels einfacher formeln verknüpft habe.

bsp: feld C3 aus datei A : =feld b5 aus datei B

probier's mal so.

dieter
Mitglied: 76109
76109 Jul 06, 2009 at 19:00:51 (UTC)
Goto Top
Hallo Daether!

So ganz verstanden habe ich Deinen Beitrag noch nicht. Ist das eine Kopie und sollen alle Änderungen übernommen werden? face-sad Wenn ja, dann währe wohl speichern und speichern unter der einfachste Weg. Oder sollen nur bestimmte Einträge simultan geschrieben werden??????????

Bitte etwas genauere Angaben!

Hier mal ein Beispiel, dass in etwa aufzeigt, wie so etwas machbar ist.

Das Beispiel verwendet die Arbeitsmappen TestA.Xls und TestB.Xls und jeweils das Tabellenblatt "Tabelle1". Desweiteren wird TestA als die zu bearbeitende Datei angenommen.

Wenn nun in TestA in der Spalte A etwas geändert wurde, dann wird erst beim Speichern von TestA, die Spalte A nach TestB kopiert, gespeichert und wieder geschlossen.

Dieser Code müsste z.B. in TestA im VB-Editor in "DieseArbeitsmappe" eingefügt werden:
Option Explicit

Const PathB = "F:\Test\TestB.xls"  

Dim ChangeA As Boolean

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
    If Sh Is Sheets("Tabelle1") And Source.Address Like "*$A$*" Then ChangeA = True  
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim WkbB As Workbook, WksA As Worksheet, WksB As Worksheet
    
    If ChangeA Then
        On Error GoTo Fehler
    
        Application.ScreenUpdating = False
                
        Set WksA = ActiveWorkbook.Sheets("Tabelle1")  
        Set WkbB = Workbooks.Open(PathB):  Set WksB = WkbB.Sheets("Tabelle1")  
        
        WksA.Range("A:A").Copy Destination:=WksB.Range("A:A")  
        
        WkbB.Save:  WkbB.Saved = True:  WkbB.Close:  ChangeA = False
    
        Application.ScreenUpdating = True
    End If
Exit Sub

Fehler:
    Application.ScreenUpdating = True
    MsgBox "Datei " & PathB & " nicht gefunden!", vbExclamation, "Fehler"  
End Sub

Gruß Dieter

[edit] habe noch in Zeile 31 ein ScreenUpdating vergessen [/edit]
Member: Daether
Daether Jul 07, 2009 at 06:48:02 (UTC)
Goto Top
Moin Moin,
genau soetwas habe ich gesucht !

Danke dir !
Mitglied: 76109
76109 Jul 07, 2009 at 11:13:50 (UTC)
Goto Top
Hallo Daether!

Toll, wenn das schon alles warface-smile

Siehe Dir nochmal den obigen Code an, da hatte ich in Zeile 31 etwas wichtiges vergessen!

Bitte den Beitrag noch als gelöst markieren.

Gruß Dieter