Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Werte in eine andere Excel-Datei schreiben

Werte in eine andere Excel-Datei schreiben
24.06.2014 12:15:46
Frank
Hallo Community,
ich konnte schon vieles aus diesem Forum entnehmen, nun habe ich noch eine Erweiterung zu der bestehenden Aufgabe (Tonerbestand) zu lösen.
https://www.herber.de/bbs/user/91247.xlsm
Die zweite Datei (Bedarfsmeldung) soll mit Werten aus der ersten Datei (Blatt:Liferanten, Tonerbestand) gefüllt werden.
Bis jetzt macht der Code folgendes:
Aus dem Blatt: Tonerausgabe werden die Tonerausgaben in dem Blatt: Tonerbestand verrechnet und wenn ein bestimmter Mindestbestand erreicht ist, wird eine Benachrichtigung per Email geschickt.
Das sollte der Code zusätzlich können:
Alle Toner aus dem Blatt: Tonerbestand, die denn Mindestbestand unterschritten haben sollen die zweite Datei (Bedarfsmeldung) mit den Daten aus dem Blatt: Lieferanten füllen. Anschließend soll die zweite Datei als Anhang per Email verschickt werden.
Konkrete Daten, die in die zweite Datei geschrieben werden sollen:
Hersteller, Bezeichnung, Artikelnr. (Spalte: MSKNET) und der Preis.
Habe eine Vermutung, dass es wahrscheinlich an dieser Stelle eingefügt werden soll, habe keine Ahnung wie:
...
also genau hier:
MsgBox "Minimum vom Toner" & vbLf & wksZ.Cells(a, 2), vbCritical, "Achtung Minimum erreicht!!"
StartMail wksZ.Cells(a, 2)
End If
...
Würde mich freuen, wenn ihr mehr da helfen könntet!

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte in eine andere Excel-Datei schreiben
24.06.2014 14:33:56
Frank
Habe dazu was gefunden, wie man Daten aus Datei in eine andere Schreibt:

Private Sub CommandButton1_Click()
Const strZiel As String = "Q:\Toner_VBA\TestB.xlsx"          'Pfad + Dateiname
Dim WB_B As Workbook
Dim WsQuelle As Worksheet
Dim WsZiel As Worksheet
'Quellesheet definieren
Set WsQuelle = Worksheets("Tabelle1")         ' 
Das funktioniert aber bis jetzt nur in 2 Testdatein per Button-klick, wie kann ich es aber in meinen eigentlichen Code integrieren, hat da jemand eine Idee?

Anzeige
AW: Werte in eine andere Excel-Datei schreiben
26.06.2014 09:56:30
Frank
Hallo,
habe herausgekriegt wie man Werte in eine andere Datei schreibt, aber das Problem ist, dass es immer einen Wert überschreibt und nicht in die nächste Zeile schreibt.

Const strZiel As String = "Q:\Toner_VBA\Bedarfsmeldung.xlsx"
Dim WsZiel As Worksheet
Dim WB_B As Workbook
Dim a, b As Variant
Dim wksZ As Worksheet
Set WB_B = Workbooks.Open(strZiel)
Set WsZiel = WB_B.Worksheets(1)
b = 13
WsZiel.Cells(b, 3) = wksZ.Cells(a, 2)
WsZiel.Cells(b, 2) = wksZ.Cells(a, 1)
'Zieldatei speichern und schließen
WB_B.Close savechanges:=True
'Speicherplatz freigeben:
Set WsZiel = Nothing
Set WsQuelle = Nothing
Set WB_B = Nothing
Wie kann man es lösen, das bei mehreren Werten, der nächste Werte nicht in die selbe Zelle geschrieben wird, sondern darunter, also nächste Zeile?

Anzeige
AW: Werte in eine andere Excel-Datei schreiben
26.06.2014 12:25:16
Frank
Hat denn gar keiner eine Idee?
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Werte in eine andere Excel-Datei schreiben


Schritt-für-Schritt-Anleitung

  1. Workbook und Worksheets definieren: Zuerst musst du die Quell- und Zieldateien definieren. Öffne die Zieldatei und setze die entsprechenden Worksheets.

    Const strZiel As String = "Q:\Toner_VBA\Bedarfsmeldung.xlsx" ' Pfad zur Zieldatei
    Dim WB_B As Workbook
    Dim WsQuelle As Worksheet
    Dim WsZiel As Worksheet
    
    Set WB_B = Workbooks.Open(strZiel)
    Set WsZiel = WB_B.Worksheets(1)
  2. Datenübertragung vorbereiten: Bestimme, welche Daten du in die Zieldatei schreiben möchtest. In deinem Fall sind das die Hersteller, Bezeichnung, Artikelnr. und Preis.

  3. Nächste freie Zeile finden: Um sicherzustellen, dass die neuen Werte in die nächste verfügbare Zeile geschrieben werden, kannst du eine Schleife oder eine einfache Berechnung verwenden.

    Dim b As Long
    b = WsZiel.Cells(WsZiel.Rows.Count, 1).End(xlUp).Row + 1 ' Nächste freie Zeile
  4. Daten in die Zieldatei schreiben: Jetzt kannst du die Werte aus deiner Quelldatei in die Zieldatei schreiben.

    WsZiel.Cells(b, 1) = wksZ.Cells(a, 1) ' Hersteller
    WsZiel.Cells(b, 2) = wksZ.Cells(a, 2) ' Bezeichnung
    WsZiel.Cells(b, 3) = wksZ.Cells(a, 3) ' Artikelnr.
    WsZiel.Cells(b, 4) = wksZ.Cells(a, 4) ' Preis
  5. Datei speichern und schließen: Speichere die Änderungen in der Zieldatei und schließe sie.

    WB_B.Close savechanges:=True

Häufige Fehler und Lösungen

  • Fehler beim Überschreiben von Werten: Wenn Werte immer wieder überschrieben werden, überprüfe die Logik zur Bestimmung der nächsten freien Zeile. Stelle sicher, dass du die End(xlUp)-Methode korrekt verwendest, um die letzte benutzte Zeile zu finden.

  • Datei öffnet nicht: Achte darauf, dass der Pfad zur Zieldatei korrekt ist. Wenn du Excel VBA Daten in andere Dateien schreiben möchtest, ohne sie zu öffnen, musst du sicherstellen, dass die Datei nicht schreibgeschützt ist.


Alternative Methoden

  • Excel Mappen: Du kannst auch mit Excel Mappen arbeiten, um Daten zwischen Dateien zu übertragen, ohne sie zu öffnen. Hierbei ist jedoch eine andere Herangehensweise erforderlich, die erweiterte VBA-Techniken erfordert.

  • Power Query: Für eine weniger programmiertechnische Methode kannst du Power Query verwenden, um Daten aus verschiedenen Excel-Dateien zu konsolidieren.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du Werte aus einer Quelldatei in eine Zieldatei überträgst:

Sub WerteInAndereDateiSchreiben()
    Const strZiel As String = "Q:\Toner_VBA\Bedarfsmeldung.xlsx"
    Dim WB_B As Workbook
    Dim WsZiel As Worksheet
    Dim wksZ As Worksheet
    Dim b As Long
    Dim a As Long ' Annahme: a ist die Zeilennummer der Quelldaten

    Set WB_B = Workbooks.Open(strZiel)
    Set WsZiel = WB_B.Worksheets(1)
    Set wksZ = ThisWorkbook.Worksheets("Tonerbestand") ' Beispiel für die Quelldatei

    b = WsZiel.Cells(WsZiel.Rows.Count, 1).End(xlUp).Row + 1
    WsZiel.Cells(b, 1) = wksZ.Cells(a, 1) ' Hersteller
    WsZiel.Cells(b, 2) = wksZ.Cells(a, 2) ' Bezeichnung
    WsZiel.Cells(b, 3) = wksZ.Cells(a, 3) ' Artikelnr.
    WsZiel.Cells(b, 4) = wksZ.Cells(a, 4) ' Preis

    WB_B.Close savechanges:=True
End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung: Implementiere On Error Resume Next, um potenzielle Fehler beim Schreiben zu vermeiden.

  • Optimierung durch Array: Wenn du viele Werte auf einmal schreiben möchtest, überlege, die Werte in einem Array zwischenzuspeichern und dann in einem Rutsch zu schreiben.

  • Testen: Teste deinen Code immer in einer sicheren Umgebung, bevor du ihn auf die Produktionsdateien anwendest.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Zieldatei nicht schreibgeschützt ist?
Überprüfe die Dateieigenschaften in Windows und stelle sicher, dass der Schreibschutz deaktiviert ist.

2. Kann ich Daten in eine Datei schreiben, ohne sie zu öffnen?
Ja, dies ist möglich, erfordert jedoch spezielle Techniken in VBA. Du kannst beispielsweise die ADODB-Bibliothek verwenden, um auf die Datei zuzugreifen.

3. Was ist der beste Weg, um sicherzustellen, dass die Werte nicht überschrieben werden?
Verwende die Methode End(xlUp) um die nächste freie Zeile zu ermitteln, bevor du Werte schreibst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige