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,

dann lade mal die Beispieldateien auf einen Hoster deiner Wahl hoch und poste die Links hier. Stelle auch dar, was wo eingetragen werden soll.

Gruß

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

Kann man die Dateien vielleicht hier anhängen? Ich wüßte grad nicht, whin ich sie hochladen könnte.

Gruß

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

du kannst deine Dateien hier im Forum nicht hochladen, dazu musst du einen externen Hoster nehmen, z.B. den hier: KLICK MICH!

Poste den / die Links dann hier im Forum.

Gruß

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

Danke für den Tipp. Ich habe mal die zwei Dateien hochgeladen:

Meßprotokoll (Lebenslauf des Bauteils)
001026.xls



Meßwerte der Fertigungsmaschine
L1-P1.xls


Ich hoffe, das es klappt.

Gruß

anwell1
0 Punkte
Beantwortet von
Folgende Werte sollen importiert werden:

Quelldatei: L1-P1.xls
Zieldatei: 001026.xls

C18 -> H25
O21 -> D25
O22 -> F25

... und im ersten Feld der neuen Zeile das aktuelle Datum.

Gruß

anwell1
0 Punkte
Beantwortet von
Folgende Werte sollen importiert werden:

Quelldatei: L1-P1.xls
Zieldatei: 001026.xls

C18 -> H25
O21 -> D25
O22 -> F25

... und im ersten Feld der neuen Zeile das aktuelle Datum.

Gruß

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

das folgende Makro gehört in ein Standard-Modul deiner Zieltabellen:

Sub daten_kopieren()

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

'Datei-Öffnen Dialog aufrufen
Datei = Application.GetOpenFilename()
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
strQuelle = ActiveWorkbook.Name 'geöffnete Datei

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

With ThisWorkbook.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.

Vielen, vielen Dank! Es funktioniert super.

Leider habe ich nach der Registrierung noch keine Aktivierungsmail bekommen. Sonst konnte ich es auch als gute Antwort deklarieren.

Nochmal vielen Dank.

Gruß

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

danke für die Rückmeldung,.

Eine Neuregistrierung ist hier leider zurzeit nicht möglich :-(.
Siehe hier: www.supportnet.de/t/2478770

Gruß

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

Wie bereits gestern geschrieben, hat das alles prima funktioniert. Ich habe es auch durch probieren hinbekommen, das Makro in einer neuen Registerkarte abzulegen.

Jetzt stellt sich mir aber leider ein neues Problem. Das Makro funktioniert nur mit der angegebenen Datei 001026.xls. Wenn ich es z.Bsp. mit der Datei 003287.xls versuche, erscheint eine Fehlermeldung mit Bezug auf 001026.

Ist das Makro auf diese eine Datei fixiert? Ich benötige es für sehr viele verschiedene Dateien (jeden morgen ca. 40).

Oder muß ich wirklich in jede erstellte eXcel-Datei dieses Makro implementieren?

Wäre nett, wenn Du mir dazu mal deine Einschätzung geben könntest.

Schöne Grüße

anwell1
...