Manchmal ist es nützlich, ein Arbeitsblatt Zeile für Zeile zu lesen und selektiv Daten daraus zu entnehmen. Ein Beispiel unten zeigt, wie das geht.
In dem Artikel wird davon ausgegangen, dass dem Leser das Entwicklerband angezeigt wird und er mit dem VBA-Editor vertraut ist. Wenn nicht, klicken Sie auf Google "Excel Developer Tab" oder "Excel Code Window".
Im folgenden Beispiel werden die Daten bearbeitet, indem jede Zeile von E-Mail-Adressen untersucht und zu einer einzigen Adresszeile verknüpft wird. Während Excel über integrierte Transponierungsfunktionen verfügt, möchten wir mit unserem Code einige bestimmte Adressaten ausschließen und Trennzeichen hinzufügen.
Unsere Bewerbung benötigt nur ein Blatt. Kopieren Sie die folgenden Informationen in Zelle A1:
| E-Mail-Adresse |
| tcruise@paramount.com |
| julia.R@disney.com |
| Jules.dassin@gaumont.co.fr |
| EnricoFellini@cinecitta.co.it |
| marymontrary@bedlam.org.uk |
Platzieren Sie eine Schaltfläche auf dem Formular, um den Code zu starten.
Nehmen wir an, es gäbe Hunderte dieser E-Mails statt nur fünf; wir möchten jeder E-Mail dieselbe Nachricht und dieselbe Kopie unseres Drehbuchs senden. Dafür gibt es mehrere Möglichkeiten, insbesondere durch Aufruf des E-Mail-Programms, wie beispielsweise Outlook, aus VBA-Code. Diese Übung dient jedoch zwei Zwecken:
- Zeigen Sie, wie Sie einfach durch ein Arbeitsblatt blättern können.
- Markieren Sie die Fähigkeit von Excel, jede Zeile zu untersuchen und darauf zu reagieren.
Der VBA-Code
Der VBA-Code verkettet alle Adressen und fügt nach jedem ein Semikolon ein, damit sie auf einmal in das Adressatenfeld der E-Mail eingefügt werden können. Sie werden aus dem Code feststellen, dass nach Prüfung der Zeilen französische ausgeschlossen werden.
Fügen Sie ein Modul ein und geben Sie Folgendes ein:
Option Explicit
Dim strEmail As String
Dim strAll As String
Sub Main()
strAll = ""
Range("C2") = strAll 'clear previous program results
Sheets("Sheet1").Select
Range("A2").Select
Do While ActiveCell > "" 'loop until row 7
strEmail = ActiveCell
If Right(strEmail, 2) <> "fr" Then 'exclude France
strAll = strAll & strEmail & ";"
End If
Range("A" & ActiveCell.Row + 1).Select 'move on a row in the SAME column
Loop
Range("C2") = strAll
End Sub
Der Code behält die aktive Zelle in Spalte A bei, nur die Zeilen werden fortgesetzt. Um Informationen an anderer Stelle in einer Reihe zu referenzieren, verwenden wir:
Variable = Activecell.offset(offset rows, offset columns)
Um beispielsweise einen Wert aus Spalte B in der aktiven Zeile zu erhalten, würde der Code lauten Activecell.offset (0, 1). Um den Wert von A2 zu erhalten, wenn wir in A3 sind, würde man lesen Activecell.offset (-1, 0).
Um Ihren Code zu testen, weisen Sie die Schaltfläche dem Makro „Main“ zu.
Einige Internetdienstanbieter begrenzen möglicherweise als Vorsichtsmaßnahme gegen Spam die Anzahl der E-Mails, die Sie gleichzeitig senden können. Wenn Sie diese Methode verwenden, ist es wahrscheinlich am besten, sich bei ihnen zu erkundigen, bevor Sie Hunderte von E-Mails auf einmal versenden.
Umgang mit Beschädigungen von Excel-Dateien

Einführung des Autors:
Felix Hooker ist ein Datenrettungsexperte in DataNumen, Inc., das weltweit führend bei Datenwiederherstellungstechnologien ist, einschließlich Reparatur- rar Korruption und SQL Recovery-Softwareprodukte. Für weitere Informationen besuchen Sie www.datanumen.com €XNUMX
