2.2k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich habe in diesem Forum (und auch anderen) leider noch keine Lösung für mein Problem gefunden. Vielleicht liest ja hier jemand, der mir helfen kann.

Problemstellung:

Eine Fertigungsmaschine erstellt Bauteile und ermittelt auch Messwerte, die in eine Excel-Tabelle geschrieben werden. Die erstellten Tabellen haben folgende Namen (werden bei jeder neuen Fertigung wieder neu erstellt):

L1-P1.xls bis L1-P5.xls
L2-P1.xls bis L2-P5.xls usw.

Ich benötige nun aus jeder Tabelle einige Werte, die in eine andere Excel-Tabelle geschrieben werden sollen. In dieser Tabelle werden die Werte teilweise noch umgerechnet (Dezimal - Bogenmaß etc.). Weiterhin muß jeder neue Datenimport in einer neuen Zeile beginnen. Zudem ist das erste Feld der neuen Zeile ein Datumsfeld und sollte automatisch mit dem aktuellen Datum ausgefüllt werden (Lebenslauf eines Bauteils, da es auch nachgearbeitet werden kann).

Vielleicht noch zum besseren Verständnis:

Die zu bearbeitenden Bauteile haben eine fortlaufende Nummer. Die dazugehörige Excel-Datei hat als Namen die gleiche Nummer.
Bauteil: 001026 = 001026.xls

Die von der Fertigungsmaschine erstellte Excel-Datei für das Bauteil 001026 heißt z.Bsp. L1-P1. Aus dieser müssen dann einige Werte in die Datei 001026.xls geschrieben werden.

Ich stelle mir das so vor, das man auf Knopfdruck (Makro?) in der Tabelle 001026.xls die entsprechende Datei auf dem Server (L1-P1.xls) auswählt und das dann die Daten in die Datei 001026.xls geschrieben werden. Beim nächsten Bauteil würde dann die 008723.xls geöffnet werden und per Makro die Werte aus der Datei L1-P4.xls gelesen und importiert.

Da ich leider sehr wenig (keine) Ahnung von Programmierung habe, wende ich mich an euch. Kann mir jemand helfen? Ich würde mich sehr freuen.

Bei Bedarf könnte ich auch die entsprechenden Excel-Dateien zum Testen zur Verfügung stellen.

Vielen Dank schon einmal im voraus. Nur Mut!

Grüße

anwell

14 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo anwell,

ja du müsstest das Makro in alle Dateien kopieren. Ich habe es jetzt so geändert, dass du zuerst die Zieldatei und dann die Quelldatei zum öffnen aussuchen musst. Die Quelldatei wird automatisch geschlossen, die Zieldatei bleibt offen. Du kannst das Makro in jede beliebe Arbeitsmappe kopieren und von dort aus ausführen:

Sub daten_kopieren()

Dim Datei As Variant
Dim strQuelle As String
Dim strZiel As String
Dim lngZeile As Long

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'Datei-Öffnen Dialog für Zieldatei aufrufen
Datei = Application.GetOpenFilename(Title:="Bitte wählen Sie die ZIEL-Datei aus")
If Datei = False Then
'Makro abbrechen wenn Benutzer den Öffnen-Dialog abbricht
MsgBox "Der Benutzer hat abgebrochen.", vbInformation
Exit Sub
End If

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'ausgewählte Datei öffnen
Workbooks.Open (Datei)

'Quelldatei festlegen
strZiel = ActiveWorkbook.Name 'geöffnete Datei

'Datei-Öffnen Dialog aufrufen
Datei = Application.GetOpenFilename(Title:="Bitte wählen Sie die QUELL-Datei aus")
If Datei = False Then
'Makro abbrechen wenn Benutzer den Öffnen-Dialog abbricht
MsgBox "Der Benutzer hat abgebrochen.", vbInformation
Exit Sub
End If

'ausgewählte Datei öffnen
Workbooks.Open (Datei)

'Quelldatei festlegen
strQuelle = ActiveWorkbook.Name 'geöffnete Datei

'Zeile für den Eintrag ermitteln
lngZeile = Workbooks(strZiel).Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1

With Workbooks(strZiel).Worksheets(1)
.Cells(lngZeile, 1) = Date 'Datum
.Cells(lngZeile, 4) = Workbooks(strQuelle).Worksheets(1).Range("O21")
.Cells(lngZeile, 6) = Workbooks(strQuelle).Worksheets(1).Range("O22")
.Cells(lngZeile, 8) = Workbooks(strQuelle).Worksheets(1).Range("C18")
End With

'geöffnete Datei ohne Speichern schließen
Workbooks(strQuelle).Close (False)

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

danke für die schnelle Beantwortung.

Noch mal eine Frage zum Verständnis:

Kann man ein Makro als "Knopf" (wie z.B. "Speichern") oben in der Menueleiste ablegen, was dann für alle in Frage kommenden Excel-Dateien benutz werden kann?

Das würde die ganze Sache natürlich extrem vereinfachen.

Gruß

anwell
0 Punkte
Beantwortet von
Hallo M.O.

es wäre nett, wenn Du mir mal deine eMail-Adresse senden würdest.

info (at) ch-bueter.de

Gruß

anwell
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo anwell,

zu deiner Frage aus Antwort 12, schau mal hier nach: KLICK MICH!

Gruß

M.O.
...