Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1944to1948
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA - Import einer Textdatei
06.09.2023 09:22:08
Claudia
Hallo an das Forum,

irgendwie stehe ich auf dem Schlauch.
Hoffe aus diesem Forum ein wenig Hilfe zu erhalten, damit ich mir das Arbeitsleben ein wenig einfacher machen kann.

Ich möchte gern aus der Userform1 ein Commandbutton1 mit folgender Funktion starten:
1. Öffne eine neue Arbeitsmappe mit der Benennung "Materialliste + Datum + Uhrzeit.xlsx".
2. Die neu erstellte Arbeitsmappe soll 2 Arbeitsblätter enthalten (Materialliste Nr.1 + Materialliste Nr.2)
2. Die neue erstellte Arbeitsmappe "Materialliste + Datum + Uhrzeit.xlsx" auf einem vorgegebenem Pfad speichern (Der Pfad steht in: Userform1/MultiPage2/Listbox1)
3. Nun soll in dem Arbeitsblatt "Materialliste Nr.1" eine Textdatei vom Laufwerk importiert werden (Der Datenpfad soll frei Auswählbar sein)
4. Setzte einen Schreibschutz die beiden Arbeitsblätter "Materialliste Nr.1" + "Materialliste Nr.2".
4. Nach dem Import einer Textdatei in dem Arbeitsblatt "Materialliste Nr.1" soll in Userform1 ein Bild (Image1)
a. Wenn im Arbeitsblatt "Materialliste Nr.1" Daten enthalten, dann das Bild (Image1) auf sichtbar ändern
b. Wenn im Arbeitsblatt "Materialliste Nr.1" KEINE Daten enthalten, dann das Bild (Image1) auf unsichtbar lassen

Wäre schön wenn ich von euch Profis eine kleine Unterstützung bekommen würde :-)

Claudia


In meinem Makro fehlt einiges und komme leider nicht weiter :-(

Private Sub CommandButton1_Click()
' Neue Arbeitsmappe mit Dateinamen erzeugen

Dim NewWorkbook As Workbook
Dim FileName As String
Dim FilePath As String

' Erzeuge den Dateinamen
FileName = "Datenvergleich_" & Format(Now, "YYYYMMDD_HHMMSS") & ".xlsx"

' Setze den Pfad
FilePath = "C:\Users\Claudia\OneDrive\Dokumente\" & FileName

' Neue Arbeitsmappe erstellen
Set NewWorkbook = Workbooks.Add

' Arbeitsmappe speichern
NewWorkbook.SaveAs FilePath

' Arbeitsmappe klein machen
Application.WindowState = xlMinimized

' Dialog zum Auswählen der Textdatei anzeigen
TextFile = Application.GetOpenFilename("Textdateien (*.txt), *.txt")

' setzte Blattschutz
' ThisWorkbook.Protect Password:="Passwort"

'Überprüfen, ob Tabelle1 Daten enthält, wenn ja dann Image1 auf "Sichtbar" setzen
If Sheets("Tabelle1").UsedRange.Rows.Count > 1 Then
UserForm1.Image1.Visible = True
End If


End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Import einer Textdatei
06.09.2023 10:44:21
Oberschlumpf
Hi Claudia,

du kennst es doch, zeig doch bitte per Upload eine Bsp-Datei, mit Bsp-Daten, mit dem Userform, in dem sich alle Controls befinden, die du hier erwähnt hast.

Noch eine Frage:
Zitat: "...soll in Userform1 ein Bild (Image1)

Bitte was genau für ein Bild soll in Image1 gezeigt werden?
Wenn es eine externe Bilddatei ist, dann bitte per Upload auch davon eine Bsp-Bilddatei.

Oder du kannst natürlich die anderen, vielleicht Antwortenden weiter raten lassen.

Ciao
Thorsten
VBA - Import einer Textdatei
06.09.2023 15:19:07
Yal
Hallo Claudia,

nicht getestet.

Sub Alles_machen()

Dim wbVergl As Workbook
Dim wbDaten As Workbook

Set wbVergl = NeueVergleichDatei_herstellen
Set wbDaten = Textdatei_öffnen
If Not wbDaten Is Nothing Then
wbDaten.Worksheets(1).UsedRange.Copy Destination:=wbVergl.Worksheets(1).Range("A1")
wbDaten.Close False
Blätter_schutzen wbVergl
wbVergl.Close True
MsgBox "Daten sind in" & vbCr & wbVergl.Path & vbCr & "vorhanden."
Else
MsgBox "Keine Daten gefunden. Datei jedoch als " & vbCr & wbVergl.Path & vbCr & "gespeichert."
End If
End Sub

Function Textdatei_öffnen() As Workbook
Dim TextDatei 'Variablenname gern auf Deutsch, um zu zeigen: das ist eigene Kreation (kein VBA-Vokabular)
Dim wb As Workbook
' Dialog zum Auswählen der Textdatei anzeigen
TextDatei = Application.GetOpenFilename("Textdateien (*.txt), *.txt")
Set wb = Workbooks.OpenText(TextDatei)
'Datei nur zurückgeben, wenn es nicht leer ist
If wb.Worksheets(1).Cells(Rows.Count, 1).End(xlUp) > 1 Or wb.Worksheets(1).Range("A1") > "" Then
Set Textdatei_öffnen = wb
Else
wb.Close SaveChanges:=False
End If
End Function

Function NeueVergleichDatei_herstellen() As Workbook
Dim wb As Workbook
'neue Wb
Set wb = New Workbook
'wir wissen nicht, welche Anzahl an Worksheets ein wb per Default hat..
If wb.Worksheets.Count = 1 Then wb.Worksheets.Add
Do While wb.Worksheets.Count > 2
wb.Worksheets(3).Delete
Loop
'umbenennen
wb.Worksheets(1).Name = "Materialliste Nr.1"
wb.Worksheets(2).Name = "Materialliste Nr.2"
'Speichern
wb.SaveAs "C:\Users\Claudia\OneDrive\Dokumente\Datenvergleich_" & Format(Now, "YYYYMMDD_HHMMSS") & ".xlsx"
'Übergeben
Set NeueVergleichDatei_herstellen = wb
End Function

Sub Blätter_schutzen(wb As Workbook)
Dim ws As Worksheet
For Each ws In wb.Worksheets
ws.Protect "Passwort"
Next
End Sub


VG
Yal
Anzeige
VBA - Import einer Textdatei
06.09.2023 16:29:03
Claudia
Erst einmal vielen Dank, für eure Unterstützung., hab nicht gesehen das da noch antworten kamen :-))

Habs durch ausprobieren selbst hin bekommen. :-)

Private Sub CommandButton1_Click()

Static buttonClicked As Boolean ' Statische Variable, um zu überprüfen, ob der Button bereits geklickt wurde

' Überprüfen, ob der Button bereits geklickt wurde
If Not buttonClicked Then
Dim wb As Workbook
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Dim savePath As String
Dim dataPath As String
Dim imgVisible As Boolean

' 1. Neue Arbeitsmappe erstellen
Set wb = Workbooks.Add
' 2. Tabellenblatt umbenennen
Set ws1 = wb.Sheets(1)
ws1.Name = "Materialliste Nr.1"
' 3. Neues Tabellenblatt hinzufügen
Set ws2 = wb.Sheets.Add(, ws1)
ws2.Name = "Materialliste Nr.2"
' 4. Neues Tabellenblatt für den Datenvergleich hinzufügen
Set ws3 = wb.Sheets.Add(, ws2)
ws3.Name = "Datenvergleich"

' 5. Pfad aus ListBox1 auswählen
savePath = "C:\Users\Claudia\speicherort"

' 6. Arbeitsmappe speichern
wb.SaveAs savePath & "\Materialliste " & Format(Now, "yyyymmdd_hhmmss") & ".xlsx"

' 7. Datenpfad auswählen (Dialogfeld anzeigen)
dataPath = Application.GetOpenFilename("Textdateien (*.txt), *.txt")

' 8. Textdatei importieren
If dataPath > "Falsch" Then
ws1.Cells.Clear ' Löschen Sie vorhandene Daten im Blatt 1
With ws1.QueryTables.Add(Connection:="TEXT;" & dataPath, Destination:=ws1.Range("A1"))
.TextFileParseType = xlDelimited
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = vbTab ' Hier können Sie das Trennzeichen ändern, wenn es ein anderes ist
.TextFileColumnDataTypes = Array(1) ' Hier kann der Datentyp geändert werden (1 = Text)
.Refresh
End With
End If

' 9. Schreibschutz setzen
ws1.Protect
ws2.Protect

' 10. Überprüfen, ob Daten in ws1 vorhanden sind
If ws1.UsedRange.Rows.Count > 1 Then
imgVisible = True
Else
imgVisible = False
End If

' 11. Bild (Image1) sichtbar/unsichtbar setzen
Me.Image1.Visible = imgVisible

' 13. Neue Arbeitsmappe minimieren
wb.Windows(1).WindowState = xlMinimized

' 14. Label1 und CommandButton2 sichtbar machen
Me.Label2.Visible = True
Me.CommandButton2.Visible = True

' Setzen Sie die Flag auf True, um zu verhindern, dass der Button erneut geklickt wird
buttonClicked = True
End If
End Sub
Anzeige
AW: VBA - Import einer Textdatei
06.09.2023 16:50:53
Oberschlumpf
Hi Claudia,

Cool! Glückwunsch! Freu mich für dich.
Deinen Code könnte man zwar noch optimieren, aber dass du all deine Wünsche, trotz VBA bescheiden, hinbekommen hast = gut gemacht + weiter so!

Ciao
Thorsten

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige