Mit VBA einen Text in die Windows Zwischenablage kopieren

Verarbeitete Datensätze protokollieren

Es ist ganz einfach mit VBA eine Zelle zu kopieren und an einer anderen Stelle einzufügen. Am Beispiel der Zelle C3 würde das zum Beispiel mit einem einzeiligen VBA Befehl funktionieren.

Range("C3").Copy

Damit kopieren Sie allerdings nicht den Text der Zelle, sondern die gesamte Zelle inklusive der Formatierung. Das hat manche möglicherweise unerwünschten Auswirkungen beim Einfügen an anderer Stelle. Innerhalb von Excel werden so kopierte Zellen beim Aktivieren einer beliebigen Zelle über einen Doppelklick wieder aus dem Speicher gelöscht. Ein häufiges Ärgernis, dass viele Anwender bereits kennen werden, wenn von Hand eine oder mehrere Zellen kopiert worden sind. Auch dann kann nicht zuvor eine Zelle aktiviert werden, ohne dass der Zwischenspeicher wieder geleert wird. Ein weiteres Problem besteht, wenn Sie den Inhalt außerhalb von Excel einfügen möchten. Da erhält man je nach Programm dann nicht nur den Inhalt der Zelle, sondern auch die Zelle und Formatierung eingefügt.

Möchten Sie also den reinen Text kopieren, ist es sinnvoller den Inhalt der Zelle in die Windows Zwischenablage zu kopieren. Die Windows Zwischenablage wird nicht so schnell geleert, und enthält den reinen Text der Zelle. Aktivieren Sie eine Zelle, bleibt der Inhalt der Zwischenablage erhalten.

Daten in die Windows Zwischenablage kopieren

Um einen Text in die Windows Zwischenablage zu kopieren ist etwas mehr VBA Code erforderlich. Zudem ist im VBA Editor über den Menüpunkt Extras -> Verweise zu prüfen, ob die Verweisbibliothek „Microsoft Forms 2.0 Object Library“ aktiviert ist.

Die Bibliothek ist erforderlich um das Objekt HtmlFile nutzen zu können. Ist dies sichergestellt können Sie die folgende VBA Routine in ein Modul kopieren und ausführen.

Sub Zwischenablage()
'erfordert die Verweis-Bibliothek: Microsoft Forms 2.0 Object Library

Dim strText As String
Dim objHF As Object

strText = Range("C3").Value

Set objHF = CreateObject("HtmlFile")

objHF.ParentWindow.ClipboardData.SetData "text", strText

End Sub

So funktioniert das Makro  

Die VBA-Routine “Zwischenablage” kopiert den Text aus Zelle C3 in die Zwischenablage des Windows-Betriebssystems.

Die Routine beginnt damit, dass sie zwei Variablen deklariert:

    • strText: Diese Variable wird verwendet, um den Text zu speichern, der kopiert werden soll.

    • objHF: Diese Variable wird verwendet, um ein Objekt vom Typ “HtmlFile” zu erstellen.

Zunächst wird der Inhalt der Zelle in die Variable strText gespeichert:

strText = Range("C3").Value

Danach wird ein Objekt vom Typ “HtmlFile” erstellt:

Set objHF = CreateObject("HtmlFile")

Dieses Objekt wird verwendet, um die Zwischenablage des Windows-Betriebssystems zu öffnen.

In der letzten Zeile wird der Text aus der Variablen strText in die Zwischenablage kopiert:

objHF.ParentWindow.ClipboardData.SetData "text", strText

Die Methode SetData wird verwendet, um Daten in die Zwischenablage zu kopieren. In diesem Fall wird der Text in der Variablen strText mit der Datenformat-ID “text” in die Zwischenablage kopiert.

Download

Zellinhalt mit VBA in die Windows Zwischenablage kopieren

zwischenablage.xlsm
Die Exceldatei enthält ein einfaches Beispiel, wie der Inhalt einer Zelle in die Windows Zwischenablage kopiert werden kann.

 

Anzahl verarbeiteter Datensätze mit VBA protokollieren

Verarbeitete Datensätze protokollieren

Heute stelle ich Ihnen eine Möglichkeit vor, die Anzahl der verarbeiteten Datensätze fortlaufend zu zählen. Das ist insbesondere dann sehr hilfreich, wenn Sie kostenpflichtige Webservices wie zum Beispiel die Google Maps API nutzen. Sie erhalten so einen sehr einfachen Überblick über die Anzahl der abgefragten Datensätze und können entsprechend die anfallenden Kosten kalkulieren. Auch ist es möglich einen monatliches Abfragebudget zu definieren, das nicht überschritten werden soll. Darüber hinausgehende Anfragen an die API-Schnittstelle können anschließend unterbunden werden.

Die nachfolgend vorgestellten VBA Routinen beinhalten allerdings nur die notwendigen Hilfsmittel um entsprechende Datenabfragen zu zählen und zu protokollieren. Das Beispiel beinhaltet kein Makro um tatsächlich eine Anfrage an die Google Maps API zu senden. Das sollte an dieser Stelle nur ein Hinweis für ein praktisches Anwendungsbeispiel sein.

VBA Routinen zum Messen der verarbeiteten Datensätze

Im Wesentlichen werden für das zählen und protokollieren der verarbeiteten Datensätze zwei VBA Routinen zusätzlich zur eigentlichen VBA Routine für die Verarbeitung der Datensätze benötigt. Bevor die Datensätze verarbeitet werden, wird zunächst der Stand der bereits verarbeiteten Datensätze aus einer externen Datei eingelesen. Hierfür wird im Beispiel eine einfache unformatierte Textdatei im TXT-Format genutzt. Reihenfolge der Verarbeitung:

Weiterlesen

 

Mit VBA in Excel ein Tabellenblatt löschen oder hinzufügen

Anordnung der Tabellenblätter

Mit wenigen Zeilen VBA Code können Sie beliebige Tabellenblätter löschen oder neu hinzufügen. In diesem Beitrag stelle ich Ihnen die einzelnen Funktionen vor. Weil das Löschen von Daten generell immer sehr problematisch ist, zunächst allerdings noch ein paar Hinweise um versehentlichen Datenverlust zu vermeiden.

Wenn Sie selbst “von Hand” ein Tabellenblatt löschen wollen, erhalten Sie zunächst eine Sicherheitsabfrage mit dem Hinweistext:

“Microsoft Excel löscht dieses Blatt endgültig. Möchten Sie den Vorgang fortsetzen?”

Sicherheitsabfrage: Tabellenblatt löschen
Sicherheitsabfrage: Tabellenblatt löschen

Auch wenn Hinweistexte häufig ungelesen weggeklickt werden, diesen Hinweis sollten Sie nicht sorglos ignorieren. Löschen Sie das Tabellenblatt grundsätzlich nur, wenn Sie sich sicher sind. Prüfen Sie vorher unter anderem auch, ob es von anderen Tabellenblättern noch Bezüge zu dem Tabellenblatt gibt, das Sie löschen wollen. So vermeiden Sie, dass Formeln anschließend den Fehler #BEZUG! statt dem gewünschten Ergebnis anzeigen. Sobald Sie die Datei nach dem Löschen des Tabellenblatts speichern ist der Datenverlust ansonsten irreparabel.

Weiterlesen

 

Mit VBA Email versenden ohne Outlook

Email versenden VBA

Im ersten Teil wurde der Emailversand mit Outlook erklärt. Bei dieser Variante gibt es sehr viele Optionen um den Emailversand optimal anzupassen. Eine Email mit ganz einfachen Funktionen kann aber auch ohne die Nutzung von Microsoft Outlook sehr einfach und schnell versendet werden.

Teil 1: Per VBA-Makro eine Email mit Outlook versenden
Teil 2: Mit VBA Email versenden ohne Outlook

Email mit FollowHyperlink erzeugen

Die Methode über einen Mailto-Hyperlink ist eine sehr einfache Möglichkeit zum Erzeugen einer Email, allerdings auch mit einem eingeschränkten Funktionsumfang.

Weiterlesen

 

Excel Makros mit dem Makro-Rekorder aufzeichnen

Der integrierte Makro Rekorder in Excel ist, unabhängig von vorhandenen Programmierkenntnissen, ein sehr nützliches Tool. VBA Anfänger können über die Aufzeichnung wiederkehrender Arbeitsabläufe auch ohne Programmierkenntnisse ganz oder teilweise automatisieren. Aber auch fortgeschrittene Anwender können den Makro Rekorder sinnvoll nutzen. Insbesondere wenn einzelne VBA Funktionen nicht bekannt sind, können einzelne Schritte aufgezeichnet und anschließend im VBA Editor nachvollzogen werden.

Teil 1: Erste Schritte – Aufruf vom VBA-Editor
Teil 2: Excel Makros mit dem Makro-Rekorder aufzeichnen

Zu beachten ist allerdings, dass der aufgezeichnete VBA Code in vielen Fällen deutlich umständlicher ist, als selbst geschriebene VBA Befehle. Die Folgen von aufgeblähten Programmzeilen können sich bei größeren Projekten in verlängerten Laufzeiten direkt bemerkbar machen. Ein weiterer Nachteil ist, dass der aufgezeichnete Programmcode aufgrund seiner Länge leichter unübersichtlich wird.

Weiterlesen

 

Dateien mit Excel VBA erzeugen – Teil 3 XML-Format

XML-Format

Dateien aus Excel können vielfach direkt in andere Anwendungen importiert werden. Manche Systeme/Anwendungen benötigen jedoch speziell aufbereitete Daten in bestimmten Speicherformaten um diese weiterverarbeiten oder nutzen zu können. An einem einfachen Beispiel zeige ich Ihnen in drei Teilen, wie Sie mit einem Excel-Makro Daten aus einer Exceltabelle in unterschiedlichen Speicherformaten erzeugen.

Teil 1: CSV/TXT-Format
Teil 2: HTML-Format
Teil 3: XML-Format

Bei XML-Dateien handelt es sich um eine erweiterbare Auszeichnungssprache (Englisch: Extensible Markup Language), abgekürzt XML, für die Darstellung von hierarchisch strukturierten Daten in Format einer Textdatei. Der Vorteil von XML-Dateien: Dieses Format kann sowohl von Menschen als auch von Maschinen gelesen werden. Die Syntax von XML wird von vielen formalen Programmiersprachen verwendet und ist ein Instrument um W3C konform eine offene verständliche Informationslandschaft für Mensch und Maschine zu gewährleisten. Auch die gängige Dokumentensprache HTML wurde als XHTML in dieses Konzept integriert, so dass XML als Definitionsbasis zu Grunde liegt. XML-Dateien werden für die Weitergabe und Weiterverarbeitung von Informationen genutzt und werden aufgrund der einfachen Syntax von vielen Systemen unterstützt. Soviel zum Hintergrund von XML-Dateien.

Weiterlesen

 

Dateien mit Excel VBA erzeugen – Teil 2 HTML-Format

HTML Sonderzeichen

Dateien aus Excel können vielfach direkt in andere Anwendungen importiert werden. Manche Systeme/Anwendungen benötigen jedoch speziell aufbereitete Daten in bestimmten Speicherformaten um diese weiterverarbeiten oder nutzen zu können. An einem einfachen Beispiel zeige ich Ihnen in drei Teilen, wie Sie mit einem Excel-Makro Daten aus einer Exceltabelle in unterschiedlichen Speicherformaten erzeugen.

Teil 1: CSV/TXT-Format
Teil 2: HTML-Format
Teil 3: XML-Format

Die Erstellung von HTML-Dateien mit Inhalten aus einer Exceltabelle eignet sich besonders für die automatisierte Bereitstellung von Berichten. Der Vorteil an diesem Format ist, dass die erstellten Dateien mit allen gängigen Webbrowsern aufgerufen werden können und eine optisch ansprechende Darstellung der zusammengefassten Inhalte möglich ist. Die einzelnen Anwender benötigen zur Ansicht der erstellten HTML-Dateien selbst weder MS Excel noch eine vergleichbare Office Anwendung. Auch kann so sichergestellt werden, dass die ursprüngliche Datei nicht verändert oder gelöscht wird. HTML-Dateien können auch wahlweise im Internet oder nur im Firmennetzwerk bereitgestellt werden. Die Anwendungsmöglichkeiten sind zahlreich.

Weiterlesen

 

Dateien mit Excel VBA erzeugen – Teil 1 CSV/TXT-Format

CSV-Format

Dateien aus Excel können vielfach direkt in andere Anwendungen importiert werden. Manche Systeme/Anwendungen benötigen jedoch speziell aufbereitete Daten in bestimmten Speicherformaten um diese weiterverarbeiten oder nutzen zu können. An einem einfachen Beispiel zeige ich Ihnen in drei Teilen, wie Sie mit einem Excel-Makro Daten aus einer Exceltabelle in unterschiedlichen Speicherformaten erzeugen.

Teil 1: CSV/TXT-Format
Teil 2: HTML-Format
Teil 3: XML-Format

Für den Import/Export von Dateien werden grundsätzlich verschiedene Dateiformate genutzt. Die gängigsten hierfür genutzten Formate sind Textdateien, bei denen die Datensätze ohne die Informationen zur Formatierung der Zellwerte gespeichert werden und mit einem fest definierten Trennzeichen (z.B. Semikolon) oder einer festgelegten Breite die Abgrenzung der Spalten sicherstellen.

Weiterlesen

 

Excel Spaltenbuchstaben ermitteln

In VBA wird im Allgemeinen nicht der Spaltenbuchstabe, sondern die Spaltennummer verwendet. Spalte A entspricht der Spaltennummer 1, Spalte B der Spaltennummer 2, Spalte C der Spaltennummer 3 usw.

Möchten Sie nun aus einer Spaltennummer wieder den Spaltenbuchstabe ermitteln gibt es hierfür verschiedene Ansätze, die je nach Verwendungszweck mehr oder weniger geeignet sind.

Fehlerhafter VBA Code auf der Microsoft Support Seite

Im Internet gibt es allerdings auch Lösungsansätze, die nicht ungeprüft verwendet werden sollten. So stellt z.B. selbst Microsoft auf einer Support Seite einen fehlerhaften Algorithmus für die Ermittlung des Spaltenbuchstaben vor.

Zunächst einmal ist dieser generell nur auf zwei Stellen ausgelegt. Seit der Excel 2007 sind inzwischen jedoch 16.384 Spalten bis zum Spaltenbuchstabe XFD vorhanden. Um alle Spaltenbuchstaben ermitteln zu können muss also in jedem Fall ein Algorithmus genutzt werden, der dreistellig die Spaltennummer in den jeweiligen Spaltenbuchstabe(n) umwandeln kann. Davor gab es einen Spaltenbereich der nur 256 Spalten bis Spalte IV unterstützte.

Aber auch in diesem Fall hätte der Algorithmus auf der Microsoft Seite Fehler produziert. Der erste Fehler tritt nämlich bereits bei Spalte 53 (BA) auf. Hier wirft der Microsoft Alogrithmus A[ aus. Mit jedem Durchlauf von A bis Z verschiebt sich fortan der Fehler um eine weitere Spalte (CA, CB / DA, DB, DC / EA, EB, EC, ED / …). Ab Spalte 4508 (FQJ) erzeugt das Makro dann sogar die erste Fehlermeldung.

Excel VBA Spaltenbuchstabe aus Zahl ermitteln

Nachfolgend nun zwei Lösungsvorschläge, die für alle 16.384 Spalten aus der Spaltennummer den Excel Spaltenbuchstaben ermitteln.

Weiterlesen

 

Per VBA-Makro eine Email mit Outlook versenden

Email versenden VBA

Sie möchten einen Bericht aus einer Exceltabelle erstellen und anschließend per Email versenden? Auch der Versand einer kompletten Exceldatei oder eines bestimmten Tabellenblatts ist relativ einfach mit VBA realisierbar. Mit dem nachfolgenden Musterbeispiel zeige ich Ihnen wie Sie mit Hilfe eines VBA-Codes eine Email versenden können. Voraussetzung für die Nutzung ist, Sie haben neben Microsoft Excel auch das Programm Microsoft Outlook installiert und darin ein Emailkonto eingerichtet.

Teil 1: Per VBA-Makro eine Email mit Outlook versenden
Teil 2: Mit VBA Email versenden ohne Outlook

Weitere Voraussetzung, im VB-Editor muss in der Exceldatei eine der beiden Objektbibliotheken aktiviert sein:

  • Microsoft Outlook 15.0 Object Library
  • Microsoft 15.0 Object Library

Die Nummer 15.0 steht hierbei für die genutzte Office-Version (15.0 entspricht z.B. Office 2013).

Nun zum eigentlichen VBA-Code. Hier gibt es einige Möglichkeiten den Versand individuell zu gestalten. In den beiden folgenden Makros wird die Email erstellt und zunächst angezeigt (1. VBA-Code), bzw. automatisch versendet (2. VBA-Code):

Weiterlesen