Excel - Daten in Notepad anzeigen

Excel VBA Programmierung

Dieser Artikel beschreibt zwei Möglichkeiten Daten aus einem Excel Worksheet formatiert in Notepad anzuzeigen. Beide Methoden werden anhand eines Beispiels erläutert, bei dem ein Bericht ausgegeben und in Notepad angezeigt werden soll.

Datei schreiben

Die CreateTextFile-Methode erstellt eine Datei und gibt ein TextStream-Objekt zurück. In diesem Stream kann gelesen und geschrieben werden.

Objekt.CreateTextFile(Dateiname[, überschreiben[, Unicode]])

Mit der Write- und WriteLine-Methode kann in das TextStream-Objekt geschrieben werden. Nach dem Schreiben in den Textstream schließt die Close-Methode die Datei. Um die so erstellte Datei in Notepad anzuzeigen wird die notepad.exe mit Hilfe der Shell-Funktion geöffnet.

Private Sub OnReport()
    Set fs = CreateObject("Scripting.FileSystemObject")
    sPath = NewFileDlg

    If Not IsEmpty(sPath) Then
        Set f = fs.CreateTextFile(sPath, True)
        f.WriteLine "Report " & Now()
        f.WriteLine "Ergebnis: " & Range("A5").Text
        f.Close
        Shell "notepad.exe " & sPath, vbNormalFocus
    End If
End Sub

Function NewFileDlg() 'Öffnet einen FileDialog und gibt den gewählten Datei Pfad zurück

    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    Dim vrtSelectedItem As Variant

    If fd.Show = -1 Then NewFileDlg = fd.SelectedItems.Item(1)

    Set fd = Nothing
End Function

Verwendung von SendKeys

Bei dieser Methode muss der Anwender keinen Dateinamen auswählen bevor der Report angezeigt wird. Der Text wird in die Zwischenablage geschrieben und mittels SendKeys-Anweisung im Notepad Fenster eingefügt. Anschließend kann der Anwender selbst entscheiden, ob er die Datei speichern möchte oder nicht.

Wie Daten in die Zwischenablage kopiert werden, wurde hier beschrieben. Wie im oberen Beispiel wird dann mittels Shell die notepad.exe gestartet, allerdings ohne einen Dateipfad zu übergeben. Stattdessen werden die Daten durch das Senden der Tastenkombination Strg+v in das Notepad Fenster eingefügt.

SendKeys string[, wait]

Das wait Argument gibt an, ob die Prozedur nach dem Senden fortgeführt werden soll (False), oder ob auf die Verarbeitung der Tastenfolge gewartet werden soll (True). In unserem Fall spielt der Wert keine Rolle.

Private Sub OnReport()
    Dim Data As New DataObject
    Data.SetText "Report " & Now() & vbNewline & _
		"Ergebnis: " & Range("A5").Text

    Data.PutInClipboard

    Shell "notepad.exe", vbNormalFocus
    SendKeys "^V", True
End Sub

Diskussion

Sende ein Kommentar, Frage, Korrekturen, Beschimpfungen...

Name:

Nachricht:


doxapp c++
Zur Übersicht
home