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.

Mit Excel Werte in andere Excel-Datei schreiben?
#1
Hallo,

ich würde gerne wissen, ob es möglich ist mit Excel Daten in eine andere Excel-Datei zu schreiben? (Ich meine hier mal so etwas gelesen zu haben)

In meinem Fall habe ich die Excel-Datei A, die Quelle für mehrere Serienbrief-Dateien ist.
Außerdem eine Excel-Datei B, die sich immer mal wieder verändert.

Ich würde gerne von der Datei B die Werte dann in die Datei A (nach einem Knopfdruck) schreiben lassen, die Tabelle und Formatierung ist bei beiden Dateien gleich.

Ist das irgendwie möglich?

Viele Grüße
TxM
Antworten Top
#2
Hallo,

ja, mit VBA geht das. Um das etwas zu verstärken: Es ist das Office-Paket, in dem sich VBA in allen Komponenten "bewegen", d.h. Daten austauschen, kann.

Für Serienbriefe ist MS Word die erste Wahl. Da kann es mit einigen Klicks ohne Programmierkenntnisse eingerichtet werden.

Ein Word-Serienbrieb kann auch direkt die Daten aus einer Excel-Tabelle ziehen.

Für jetzt sollte es reichen.


mfg
Antworten Top
#3
Hallo Fennek,

danke für deine Antwort.
Genau, die Serienbriefe sind in Word erstellt und ziehen sich die Daten aus der Exceldatei A.
Allerdings werden die Daten bisher immer von Hand geändert, ich würde es gerne so umsetzen, dass über die
Exceldatei B die Daten direkt in die Exceldatei A geschrieben werden.

Viele Grüße
TxM
Antworten Top
#4
(02.09.2023, 14:34)TxM schrieb: Genau, die Serienbriefe sind in Word erstellt und ziehen sich die Daten aus der Exceldatei A.
Allerdings werden die Daten bisher immer von Hand geändert, ich würde es gerne so umsetzen, dass über die
Exceldatei B die Daten direkt in die Exceldatei A geschrieben werden.

Bleibt natürlich die Frage, warum so umständlich? Warum nicht gleich Datei B verwenden? Letztendlich ist es absolut egal, in welcher Datei Änderungen/Ergänzungen erfolgen, aber doppelte Datenhaltung ist "organisierter" Nonsens...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#5
(02.09.2023, 14:42)Ralf A schrieb: Bleibt natürlich die Frage, warum so umständlich? Warum nicht gleich Datei B verwenden? Letztendlich ist es absolut egal, in welcher Datei Änderungen/Ergänzungen erfolgen, aber doppelte Datenhaltung ist "organisierter" Nonsens...

Weil Datei B eine Vorlage ist, die immer wieder mit anderem Namen verwendet wird.
Diese Datei generiert noch weit mehr als nur die Daten für den Seriendruck.
Und da die Datei immer umbenannt wird müsste man bei jedem Öffnen des Seriendruck-Briefes die Quelle neu suchen.
Das möchte ich gerne verhindern, deshalb der Umweg über Datei A.
Antworten Top
#6
(02.09.2023, 15:35)TxM schrieb: Diese Datei generiert noch weit mehr als nur die Daten für den Seriendruck.

...dann würde ich mir jeweils entsprechende Abfragen via PQ erstellen...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#7
Ich versuche das Ganze per VBA zu lösen, leider bekomme ich bei dem Code aber noch eine Fehlermeldung:

Code:
Sub DatenKopieren()
    Dim QuellDatei As Workbook
    Dim ZielDatei As Workbook
    Dim QuellBereich As Range
    Dim ZielBereich As Range
    Dim DateiPfad As String
    Dim DateiName As String
   
    ' Dialog zur Auswahl der Quell-Datei anzeigen
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Quell-Datei auswählen"
        .Filters.Clear
        .Filters.Add "Excel-Dateien", "*.xlsx; *.xls; *.xlsm"
        If .Show = -1 Then
            DateiPfad = .SelectedItems(1)
            DateiName = Dir(DateiPfad)
        Else
            MsgBox "Es wurde keine Datei ausgewählt. Der Vorgang wird abgebrochen.", vbExclamation
            Exit Sub
        End If
    End With
   
    ' Die aktuelle Quell-Datei öffnen
    Set QuellDatei = Workbooks.Open(DateiPfad)
   
    ' Den Quell-Bereich (A1 bis L21) auswählen
    Set QuellBereich = QuellDatei.Sheets("Karten-Ausgabe").Range("A1:L21")
   
    ' Versuchen, die Ziel-Datei zu öffnen (wenn sie bereits geöffnet ist)
    On Error Resume Next
    Set ZielDatei = Workbooks("Karten-Quelldatei.xlsx") ' Hier "Beispiel.xls" durch den tatsächlichen Dateinamen ersetzen
    On Error GoTo 0
   
    ' Wenn die Ziel-Datei nicht geöffnet ist, öffnen und den Ziel-Bereich erstellen
    If ZielDatei Is Nothing Then
        Set ZielDatei = Workbooks.Open("C:\Users\info\Desktop\Karten-Quelldatei.xlsx") ' Hier den Pfad zur Ziel-Datei eintragen
        ZielDatei.Sheets.Add(, , 1, xlWorksheet, xlNone).Name = "Karten-Ausgabe"
        Set ZielBereich = ZielDatei.Sheets("Karten-Ausgabe").Range("A1:L21")
    Else
        ' Den Ziel-Bereich im Ziel-Blatt auswählen (angenommen, das Ziel-Blatt hat denselben Namen)
        Set ZielBereich = ZielDatei.Sheets("Karten-Ausgabe").Range("A1:L21")
    End If
   
    ' Daten kopieren
    QuellBereich.Copy ZielBereich
   
    ' Ziel-Datei speichern
    ZielDatei.Save
   
    ' Ziel-Datei schließen
    ZielDatei.Close SaveChanges:=False
End Sub

Dies ist die Fehlermeldung, die ich dabei bekomme:
   

Habt ihr eine Idee, woran der Fehler liegt?

Danke und viele Grüße
TxM
Antworten Top
#8
Hallo,

Sheet.add erwartet ein "Sheet-Object", z.B.

Code:
Sheets.Add , Sheets(Sheets.Count)

Hier wird ein neues Sheet am Ende, allse nach dem Sheet mit dem Index Sheets.count, eingefügt.

mfg
Antworten Top
#9
1. es gibt eine QuellDatei : activeworkbook
2. die Daten für Word sind in Activeworkbook.sheet1
3  es gibt eine Datei der verbunden is mit einer SerienbriefVorlage in Word: Svorlage.xlsx
4. die Daten in der Vorlage in Sheet werden geändert in neue Daten aus Activeworkbook
5. die Daten in Activeworkbook.sdheet1 werden gelöscht
6. SVorlage.xlsx wird gespeichert

Code:
Sub M_snb()
  with getobject("G:\OF\Svorlage.xlsx")
    .sheet1.usedrange.clearcontents
    activeworkbook.sheet1.usedrange.cut .sheet1.cells(1)
   .close -1
 end with
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#10
Ich wollte noch eine Rückmeldung geben, das ist letztendlich der Code:

Code:
Sub selectSource()
    Application.FileDialog(msoFileDialogFilePicker).Show
    ActiveSheet.Range("B119") = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
End Sub
Sub selectDesti()
    Application.FileDialog(msoFileDialogFilePicker).Show
    ActiveSheet.Range("D119") = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
End Sub
Sub copyData()
    Call selectSource
    Call selectDesti
    Dim book_from As Workbook
    Dim book_to As Workbook
    Dim sheet_from As Worksheet
    Dim sheet_to As Worksheet
    file_path1 = ActiveSheet.Range("B119")
    file_path2 = ActiveSheet.Range("D119")
    check_book = False
    Dim book As Workbook
    For Each book In Workbooks
        If book.FullName = file_path1 Then
            Set book_from = book
            GoTo tieptuc
        End If
    Next book
    Set book_from = Workbooks.Open(file_path1)
tieptuc:
   
    Set book_to = Workbooks.Open(file_path2)
    check_meet = False
    For Each sheet_from In book_from.Sheets
        For Each sheet_to In book_to.Sheets
            If sheet_from.Name = sheet_to.Name Then
                check_meet = True
                sheet_to.Range("A1:L21") = sheet_from.Range("A1:L21").Value
                Exit For
            End If
        Next sheet_to
    Next sheet_from
    If check_meet = True Then
        MsgBox "Karte erfolgreich generiert."
    Else
        MsgBox "No sheet in destination file has name as sheets in source file - Bitte kontaktieren Sie den Administrator"
    End If
    book_to.Close savechanges:=True
   
End Sub

Danke für eure Hilfe und liebe Grüße
TxM
Antworten Top


Gehe zu:


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