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

 

Werte mit VBA in Spalte suchen und ersetzen

Ein häufiges Problem ist das Suchen und Ersetzen von Zellwerten. Dafür gibt es im Wesentlichen zwei Herangehensweisen. Den meisten Lesern dürfte die Standard-Funktion “Suchen und Ersetzen”, die entweder über den Eintrag im Register “Start” oder über die Tastenkombination “Strg+H” aufgerufen werden kann, bekannt sein. Die Funktion habe ich auch bereits im Beitrag Sonderzeichen Suchen und Ersetzen in Excel vorgestellt.

Die Alternative ist ein VBA Makro. Eine VBA Lösung ist vor allem dann sinnvoll, wenn Sie regelmäßig den gleichen Zellbereich überprüfen wollen oder gleichzeitig noch weitere Schritte automatisiert durchgeführt werden sollen. In VBA können Sie die Replace-Funktion nutzen. Die Funktion ist wie folgt aufgebaut:

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

 

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

 

Dateinamen eines Verzeichnisses mit VBA auslesen und in Excel schreiben

Mit einem kleinen Makro können Sie ganz bequem sämtliche Dateinamen inklusive der Dateiendungen in Excel schreiben. Das nachfolgende Makro brauchen Sie hierfür lediglich in ein Modul Ihrer Exceldatei hinzufügen. Alternativ können Sie auch die im Anschluss an diesen Beitrag anghängte Musterdatei nutzen um Dateinamen mit VBA auslesen zu können.

Bevor Sie starten gibt es zwei Wichtige Punkte zu beachten. Vor dem Ausführen des Makros müssen Sie den Ordnername im VBA Code noch abhändern. Im Beispiel würde das Makro ansonsten im Laufwerk “C:\” den Ordner mit dem Namen “Ordnername” suchen und falls vorhanden die Dateien dieses Ordners in Spalte A ab Zeile 1 auflisten. Sofern der Ordnerpfad nicht vorhanden ist, erhalten Sie die Fehlermeldung “Laufzeitfehler ’76’: Pfad nicht gefunden”.

Weiterlesen