sonic72: Makro bei excel programmieren

Hallo erstmal,

Ich habe noch wenig Ahnung von VBA und ähnlichem und möchte deshalb fragen ob folgendes umzusetzen ist:

In der Datei "Ziel" soll ein Butten: "Aktualisieren" auf I5 folgendes ausführen:
In einen Verzeichnis mit verscheidenden Ordnern nach Dateien suchen die in der Tabelle 7 in den Zellen B15-B30 denselben Inhalt haben wie A8 in der Ziel Datei. Für jeden Treffer soll in der Zieldatei Daten von der Quelldatei übernommen werden.

1.Übereinstimmung Quelle: Tabelle8 C17 = Ziel:B23/24
Quelle: Tabelle8 C19 = Ziel:A23/24
Quelle: Tabelle8 G120 = Ziel:H23/24

2.Übereinstimmung Quelle: Tabelle8 C17 = Ziel:B25/26
Quelle: Tabelle8 C19 = Ziel:A25/26
Quelle: Tabelle8 G120 = Ziel:H25/26

3.Übereinstimmung Quelle: Tabelle8 C17 = Ziel:B27/28
Quelle: Tabelle8 C19 = Ziel:A27/28
Quelle: Tabelle8 G120 = Ziel:H27/28
u.s.w.

Ich hoffe ich konnte das so einigermaßen erklären.

Nun meine Frage ist das möglich und wenn ja wer würde mir helfen?

Für eure Mühe schon mal Danke

Stefan

  1. Hallo

    Ich habe noch wenig Ahnung von VBA und ähnlichem und möchte deshalb fragen ob folgendes umzusetzen ist:

    soweit ich das verstehe, sollte das durchaus möglich sein, auch wenn mir viele, viele Randbedingungen unklar sind.

    In der Datei "Ziel" soll ein Butten: "Aktualisieren" auf I5 folgendes ausführen:

    Ein Button in ein Excel-Dokument einzufügen, ist kein Problem. Das solltest Du mit der Hilfe schon hinbekommen. Dennoch wäre es nett, zu wissen, um welche Excel-Version es sich handelt. Vielleicht noch Excel 4?

    In einen Verzeichnis mit verscheidenden Ordnern nach Dateien suchen

    was für Dateien. Excel-Dateien? Mit welchen Endungen?
    Beispiele: xls, xlsx, xlsm, ...

    Grundsätzlich kannst Du mit VBA Verzeichnisse durchsuchen und Dateien finden.

    die in der Tabelle 7 in den Zellen B15-B30 denselben Inhalt haben wie A8 in der Ziel Datei.

    Öffne die Datei, schaue ob ein entsprechendes Tabellenblatt vorhanden ist. Wenn nein, Datei ins Kröpfchen.
    Wenn ja, überprüfe die entsprechenden Zellen auf Übereinstimmung.
    Wenn ja, ins Töpfchen.

    Geht also.

    Für jeden Treffer soll in der Zieldatei Daten von der Quelldatei übernommen werden.

    1.Übereinstimmung Quelle: Tabelle8 C17 = Ziel:B23/24

    Was soll das genau heißen. Wert in eine kombinierte Zelle? Wert sowohl in Zelle B23 als auch in Zelle B24?

    Beides geht :-)

    Quelle: Tabelle8 C19 = Ziel:A23/24
    Quelle: Tabelle8 G120 = Ziel:H23/24

    2.Übereinstimmung Quelle: Tabelle8 C17 = Ziel:B25/26
    Quelle: Tabelle8 C19 = Ziel:A25/26
    Quelle: Tabelle8 G120 = Ziel:H25/26

    3.Übereinstimmung Quelle: Tabelle8 C17 = Ziel:B27/28
    Quelle: Tabelle8 C19 = Ziel:A27/28
    Quelle: Tabelle8 G120 = Ziel:H27/28
    u.s.w.

    ich verstehe zwar nicht, was usw. mir hier sagen soll, aber ...

    Ich hoffe ich konnte das so einigermaßen erklären.

    ... Du hast eh' viel im Unklaren gelassen.

    Nun meine Frage ist das möglich und wenn ja wer würde mir helfen?

    Soweit ich das überblicke, sollte das alles machbar sein.
    Analysiere die Aufgabenstellung: Zerlege sie in kleine Teilaufgaben, die Du mit hübschen kleinen und übersichtlichen Funktiönchen erledigen kannst.

    Was hast Du bisher hinbekommen, wo bist Du hängengeblieben?

    Freundliche Grüße

    Vinzenz

    1. Hi,

      die in der Tabelle 7 in den Zellen B15-B30 denselben Inhalt haben wie A8 in der Ziel Datei.

      Öffne die Datei, schaue ob ein entsprechendes Tabellenblatt vorhanden ist. Wenn nein, Datei ins Kröpfchen.

      das dürfte bei vielen Dateien ja eine Ewigkeit dauern. Schneller geht es, durch die Routine eine Formel mit einem Bezug auf die _geschlossene_ Datei einfügen zu lassen und dann das Ergebnis zu vergleichen. Mit dem Makrorecorder lässt sich ansehen, wie das machbar wäre. Außerdem muss ein Errorhandler eingebaut werden, falls das Blatt nicht existiert.

      Anders verhält es sich, wenn der Blattname nicht bekannt ist, sondern nur der Index. Dann muss die Datei natürlich geöffnet werden, damit sie mit VBA behandelt werden kann.

      Ab hier dann weiter:

      Wenn ja, überprüfe die entsprechenden Zellen auf Übereinstimmung.
      Wenn ja, ins Töpfchen.

      Viele Grüße

      Jörg

      1. Hallo Jörg,

        Öffne die Datei, schaue ob ein entsprechendes Tabellenblatt vorhanden ist. Wenn nein, Datei ins Kröpfchen.

        das dürfte bei vielen Dateien ja eine Ewigkeit dauern. Schneller geht es, durch die Routine eine Formel mit einem Bezug auf die _geschlossene_ Datei einfügen zu lassen und dann das Ergebnis zu vergleichen. Mit dem Makrorecorder lässt sich ansehen, wie das machbar wäre. Außerdem muss ein Errorhandler eingebaut werden, falls das Blatt nicht existiert.

        stimmt, das sollte deutlich schneller sein. Da sieht man: Ich erzeuge zwar gelegentlich ein paar hundert Excel-Dateien, aber ich lese so gut wie nie aus mehr als einer Datei ein.

        Freundliche Grüße

        Vinzenz

        1. Hallo Vinzenz,

          stimmt, das sollte deutlich schneller sein. Da sieht man: Ich erzeuge zwar gelegentlich ein paar hundert Excel-Dateien, aber ich lese so gut wie nie aus mehr als einer Datei ein.

          auch ich nicht. ;-)
          Die Idee ist schon ein paar Jahre alt, als ich das Problem auch mal hatte und erschwerend hinzukam, dass die Dateien noch riesig waren. Das Einlesen wäre eine Tagesaufgabe gewesen, also musste eine andere Lösung her.

          Viele Grüße

          Jörg

          1. Hallo Jörg,

            Die Idee ist schon ein paar Jahre alt, als ich das Problem auch mal hatte und erschwerend hinzukam, dass die Dateien noch riesig waren. Das Einlesen wäre eine Tagesaufgabe gewesen, also musste eine andere Lösung her.

            sowas prägt sich gut ein, das kenne ich aus anderen Bereichen.

            Freundliche Grüße

            Vinzenz

            PS: Schön, mal wieder was von Dir zu lesen (Du bist allerdings schwerer zu erkennen.)

            1. Hallo Vinzenz,

              PS: Schön, mal wieder was von Dir zu lesen (Du bist allerdings schwerer zu erkennen.)

              danke. :-)

              Viele Grüße

              Jörg