Skript / Makro in Excel durch Klicken auf eine Zelle

2

In Excel 2010 möchte ich etwas tun. Insbesondere soll es mir möglich sein, das geöffnete Blatt zum Laden von Daten aus einer Textdatei zu veranlassen, indem ich auf eine Zelle des aktuell geöffneten Arbeitsblatts klicke.

Meine spezifischen Bedürfnisse sind also:

  1. Wenn es irgendwie möglich ist, ein Makro / Skript durch Klicken auf eine Zelle zu starten.

Über das Skript / Makro:

  1. Was wäre Ihrer Meinung nach die bevorzugte Art der Umsetzung?

  2. Und genauer gesagt, wie Sie die benötigten Daten automatisch importieren, indem Sie nur auf klicken, ohne die gewünschte TXT-Datei jedes Mal, maximal einmal, beim Start oder mithilfe einer benutzerdefinierten "Initialisierungs- / Konfigurationsdatei" fortlaufend angeben zu müssen.

Noob Doob
quelle
Nur um klarzustellen; Warum können Sie kein Schaltflächenobjekt verwenden?
CLockeWork
Es wäre schön zu sehen, dass Sie als Anfänger in Excel und Visual Basic Ihre Gedanken in einer richtigen Antwort ausdrücken :)
Noob Doob
Wäre ein Doppelklick OK?
Garys Schüler
Ein Klick wäre wünschenswert, aber wenn sich dies nicht so stark auf den Kern der Lösung auswirkt, können Sie mit der Idee fortfahren und mir zeigen, was von Vorteil ist.
Noob Doob
Ich lese ein 24-Stunden-Tutorial zu Visual Basic, aber je schneller ich die Lösung erhalte, desto besser. Vielen Dank im Voraus für Ihr Interesse!
Noob Doob

Antworten:

2

Hier ist ein ganz spezielles Beispiel, das Sie an Ihre Bedürfnisse anpassen können. Es ist ein Arbeitsblattereignismakro, das durch Doppelklicken auf Zelle B9 ausgelöst wird :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("B9")) Is Nothing Then Exit Sub
Cancel = True
Dim TextLine As String
    Close #1
    Open "C:\TestFolder\test.txt" For Input As #1
    i = 1
    j = 0
    Do While Not EOF(1)
        Line Input #1, TextLine
            j = j + 1
            Cells(i, j) = TextLine
        Loop
    Close #1
End Sub

Die Änderungen, die Sie vornehmen müssen:

  1. Die Zelle, auf die Sie doppelklicken müssen, ist B9
  2. die Dateispezifikation der zu öffnenden Textdatei
  3. das Ziel für die importierten Daten

Da es sich um Arbeitsblattcode handelt, ist die Installation sehr einfach und die Verwendung automatisch:

  1. Klicken Sie mit der rechten Maustaste auf den Registerkartennamen am unteren Rand des Excel-Fensters
  2. Wählen Sie Code anzeigen. Dadurch wird ein VBE-Fenster geöffnet
  3. Fügen Sie das Material ein und schließen Sie das VBE-Fenster

Wenn Sie Bedenken haben, versuchen Sie es zunächst auf einem Testarbeitsblatt.

Wenn Sie die Arbeitsmappe speichern, wird das Makro mit dieser gespeichert. Wenn Sie eine Excel-Version später als 2003 verwenden, müssen Sie die Datei als .xlsm und nicht als .xlsx speichern

So entfernen Sie das Makro:

  1. Öffnen Sie die VBE-Fenster wie oben
  2. Löschen Sie den Code
  3. Schließen Sie das VBE-Fenster

Weitere Informationen zu Makros im Allgemeinen finden Sie unter:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

und

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Weitere Informationen zu Ereignismakros (Arbeitsblattcode) finden Sie unter:

http://www.mvps.org/dmcritchie/excel/event.htm

Makros müssen aktiviert sein, damit dies funktioniert!

Garys Schüler
quelle
Das scheint hilfreich zu sein. Würde es Ihnen etwas ausmachen, einen Weg zu finden, wie Sie erstellte Makros einfach auf neue Excel-Dateien übertragen und den Code "automatisch" um benutzerdefinierte Zellen erweitern können? (Es macht mir nichts aus, wenn ich eine separate Anwendung erstellen müsste, um diese zu erreichen.) Wenn es Ihnen nichts ausmacht, kann ich Sie auch als PM senden und die Ergebnisse des Gesamtversuchs als neue selbst beantwortete Frage veröffentlichen. Oder wenn Sie denken, ich sollte für jeden Abschnitt eine eigene Frage stellen, sagen Sie es. Vielen Dank für Ihre Bemühungen.
Noob Doob
Sie können VBA-Codestücke direkt über das VBE-Menü importieren / exportieren.
Garys Schüler
Was Sie gesagt haben, war sehr hilfreich. Was ich jetzt sagen werde, könnte verwirrend werden. Könnte das Hinzufügen von VBA-Code selbst zu einem Makro werden? Ich meine, ich könnte ein "Master-Makro" starten, das einige Argumente berücksichtigt und dann so viele und in der richtigen Form Teile des obigen Codes wie nötig in die jeweilige Anzahl von Schaltflächen einfügt. Wenn die Antwort ja ist, muss ich nur ein bisschen experimentieren.
Noob Doob
Was Sie vorschlagen, ist interessant. Ich habe es noch nie selbst ausprobiert ................. aber das Thema wird hier behandelt: cpearson.com/excel/vbe.aspx
Garys Schüler
Frage: Ihre Lösung fügt eine ganze Zeile in jede Zelle ein. Gibt es eine Funktion, die die einzelnen Wörter in einzelne Zellen einfügt, wobei die Wörter durch Leerzeichen getrennt sind?
Noob Doob
0

Wenn es keinen dringenden Grund für die Aktivierung des Zellenklicks gibt, ist es die einfachste Methode, ein Schaltflächenobjekt zu erstellen.


Wechseln Sie zur Registerkarte "Entwickler", und wählen Sie "Einfügen" und dann "Auswählen" aus den ActiveX-Steuerelementen ActiveXControls


Klicken Sie anschließend auf die Form Ihrer Schaltfläche und ziehen Sie sie heraus. Klicken Sie dann mit der rechten Maustaste darauf und wählen Sie Eigenschaften aus.

Hier können Sie beispielsweise den auf der Schaltfläche angezeigten Text und die Farbe der Schaltfläche ändern. Wenn Sie beim Klicken mit der rechten Maustaste die Option „Formatkontrolle“ auswählen und zu „Eigenschaften“ wechseln, können Sie das Kontrollkästchen so einstellen, dass es sich beim Ändern von Zellen / Zeilen / Spalten nicht verschiebt und erneut überprüft.

Klicken Sie anschließend mit der rechten Maustaste auf die Schaltfläche und wählen Sie Code anzeigen
Code anzeigen


Dadurch gelangen Sie zum Codefenster, in das Sie Ihre VBA einfügen können. Von dort aus geben Sie den Rest von Garys Code in Dim TextLine ein.

Kehren Sie schließlich zur Registerkarte Entwickler zurück und deaktivieren Sie den Entwurfsmodus
Entwurfsmodus


Sie können den Button jetzt testen. Wenn Sie Änderungen daran vornehmen oder es verschieben müssen, wählen Sie einfach den Entwurfsmodus erneut aus.

CLockeWork
quelle
Vielen Dank für Ihre Antwort. Für meinen Fall muss dies jedoch durch einen Klick auf die Zelle aktiviert werden. Außerdem muss ich eine "Anwendung" erstellen, bei der die Anzahl der benötigten Schaltflächen unbekannt ist. Diese wird wahrscheinlich beim Öffnen der Datei festgelegt. Außerdem muss es sich um eine "übertragbare" Funktion handeln, die nicht dateispezifisch ist. Ich glaube, der "Zellen" -Ansatz wäre einfacher, diese zu erfüllen.
Noob Doob
Keine Sorge, das war natürlich der Grund, warum ich an erster Stelle nach mehr Informationen gefragt habe :)
CLockeWork