Excel-Macro, das eine Textdatei ausliest

Hallo Leute,

es ist zum verrückt werden, dieses Problem habe ich schon einmal gelöst, weiß aber jetzt nicht mehr, wie ich es gemacht habe.

Es geht um eine Excel-Tabelle, in die ich jeden Tag fortlaufend eine bestimmte Zahl zum aktuellen Datum einfüge. Diese Zahl steht in einer Textdatei.

Bis hierher wäre es kein Problem, aber in der Textdatei stehen auch noch jede Menge anderer Daten.

Wie gesagt, ich habe das Macro schon einmal erstellt, weiß aber nicht mehr wie (das funktionierende Macro ist mittlerweile gelöscht).

Ich weiß noch, daß ich per (aufgezeichnetem) Macro die Textdatei geöffnet habe, mit dem „Suche“ Befehl die betreffende Zeile gesucht habe, den Wert neben dem gesuchten Wort in die Zwischenablage gelesen habe und dann über „Einfügen“ die Zwischenablage in die Zelle der Tabelle geschrieben habe.

Kann sich jemand von euch vorstellen, wie ich das gemacht habe?

gerhard

Hat sich erledigt
Hallo nochmal,

die Frage hat sich mittlerweile erledigt, nach einer halben Stunde rumprobieren bin ich wieder draufgekommen:

Die betreffende Zeile wird nicht in der Textdatei gesucht, sondern die ganze Textdatei in eine Excel-Tabelle importiert, die Zeile gesucht, kopiert und anschließend wird die temporäre Tabelle wieder gelöscht.

Allerdings habe ich doch noch eine Frage, kann ich den Inhalt der Zwischenablage direkt in die Zelle einfügen lassen, ohne über den bisherigen Umweg „Strg+v“?

gerhard

Allerdings habe ich doch noch eine Frage, kann ich den Inhalt
der Zwischenablage direkt in die Zelle einfügen lassen, ohne
über den bisherigen Umweg „Strg+v“?

gerhard

Hi Gerhard,

das nachfolgende Makro habe ich mal bekommen, um das aktive
Datenblatt als E-mail zu versenden. Dabei wird das aktive
Datenblatt per VBA in ein temporäres Datenblatt kopiert.

Leider kenne ich mich in der VBA-Programmierung nicht
so gut aus, um sagen zu können, in welcher Zeile, ich kann
es nur vermuten. Aber vielleicht hilft es Dir weiter?

Gruß

Rolf

Hier das Makro:

Sub SendActiveSheet()
Dim objSourceWb As Workbook
Dim objNewWb As Workbook
Dim strSubjectline As String
Dim strRecipient As String
Dim strTempPath As String

On Error GoTo SendError
strSubjectline = InputBox _
(Prompt:=„Wollen Sie das aktive Blatt senden?“ & _
String(2, vbCr) & _
„Geben Sie eine Betreffzeile ein“ & _
" oder klicken Sie auf Abbrechen.", _
Title:=„Aktives Blatt senden“)
If strSubjectline „“ Then
strRecipient = InputBox _
(„Bitte E-Mail-Empfaenger eingeben:“, _
Title:=„Aktives Blatt senden“)
If strRecipient „“ Then
Application.ScreenUpdating = False
Set objSourceWb = ActiveWorkbook
ActiveSheet.Copy
Set objNewWb = ActiveWorkbook
With objNewWb
.SaveAs "Auszug aus " & objSourceWb.Name
strTempPath = .FullName
.SendMail Recipients:=strRecipient, _
Subject:=strSubjectline
.Close SaveChanges:=False
Kill strTempPath
End With
Application.ScreenUpdating = True
End If
End If

SendEnd:
Set objNewWb = Nothing
Set objSourceWb = Nothing
Exit Sub

SendError:
MsgBox Prompt:="Fehler beim Senden des Blatts " & _
„(“ & Err.Number & „):“ & vbCr & _
Err.Description
Resume SendEnd
End Sub

1 Like

Allerdings habe ich doch noch eine Frage, kann ich den Inhalt
der Zwischenablage direkt in die Zelle einfügen lassen, ohne
über den bisherigen Umweg „Strg+v“?

Warum liest Du die Datei nicht einfach ein? Kommt doch das gleiche bei raus, als wenn Du es über die Zwischenablage machst.

Workbooks.OpenText \_
 Filename:="..\Test.txt", \_
 Origin:=xlWindows, \_
 StartRow:=1, \_
 DataType:=xlDelimited, \_
 TextQualifier:=xlNone, \_
 ConsecutiveDelimiter:=False, \_
 Tab:=False, \_
 Semicolon:=False, \_
 Comma:=False, \_
 Space:=False, \_
 Other:=False, \_
 FieldInfo:=Array(1, 1)

Das war das Ergebnis des Makro-Rekorders. Ausreichen tut auch das:

Workbooks.OpenText \_
 Filename:="..\Test.txt", \_
 TextQualifier:=xlNone

Und das ist auch das gleiche:

Workbooks.OpenText "..\Test.txt", , , , xlTextQualifierNone

Kristian

1 Like

Hallo Kristian,

danke für deine Lösung, ich werde es ausprobieren. In Sachen Makro bin ich eben noch nicht über den Recorder hinausgekommen, vielleicht komm ich ja doch einmal dazu mich ein bißchen mehr damit zu beschäftigen.

gerhard