Anzeige
Archiv - Navigation
1544to1548
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
Inhaltsverzeichnis

VBA: Einzelnes Blatt aus Datei speichern, ggf. Txt

VBA: Einzelnes Blatt aus Datei speichern, ggf. Txt
06.03.2017 13:48:21
Max
Hallo,
ich habe eine relativ große Datei mit diversen Blättern.
Am Ende eines Makros möchte ich daraus automatisch etwas speichern und zwar nur Blatt 2 und das nur als .xlsx (d.h. ohne Makros).
Noch besser wäre eine .txt-Datei, da ich theoretisch nur die Daten aus Spalte A auf Blatt 2 benötige und es damit wahrscheinlich schneller und mit kleinerer Dateigröße möglich wäre.
Bisher habe ich folgenden Code dazu:
Sub SaveLog()
Dim varPath As String
varPath = "H:\My Files\" & Format(Now, "yyyymmdd-hhmmss") & "_" & Environ("Username")
ActiveWorkbook.SaveAs Filename:=varPath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub
Kann mir jemand damit weiterhelfen ?
Vielen Dank im Voraus,
Max

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Einzelnes Blatt aus Datei speichern, ggf. Txt
06.03.2017 14:11:59
JoWE
Hallo Max,
vllt. so: ActiveSheet.SaveAs varPath, xlCSV
Gruß
Jochen
AW: VBA: Einzelnes Blatt aus Datei speichern, ggf. Txt
06.03.2017 14:20:39
Max
Hallo Jochen,
danke für Deine Antwort !
ActiveSheet geht denke ich nicht, weil das Makro nicht vom gleichen Blatt aus gestartet wird bzw. befindet sich der User dabei i.d.R. auf einem anderen Blatt.
VG,
Max
AW: VBA: Einzelnes Blatt aus Datei speichern, ggf. Txt
06.03.2017 14:26:14
JoWE
Hallo Max,
dann vllt. so: Sheets("Dein Sheet").SaveAs varPath, xlCSV
Gruß
Jochen
AW: VBA: Einzelnes Blatt aus Datei speichern, ggf. Txt
06.03.2017 14:46:37
Max
Hallo Jochen,
vielen Dank nochmal.
Das funktioniert auch, die Lösung von Chris hilft mir in dem Fall nur besser und das Ergebnis ist schneller / kleiner und damit genau, wonach ich gesucht hatte.
Trotzdem vielen Dank dafür !
VG,
Max
Anzeige
AW: VBA: Einzelnes Blatt aus Datei speichern, ggf. Txt
06.03.2017 14:16:54
ChrisL
Hi Max
Oder so...
Sub t()
Dim strPath As String, iZeile As Long
'strPath = "H:\My Files\" & Format(Now, "yyyymmdd-hhmmss") & "_" & Environ("Username") & ".txt"
strPath = ThisWorkbook.Path & "\test.txt"
Open strPath For Output As #1
With Worksheets("Tabelle2")
For iZeile = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
Print #1, .Cells(iZeile, 1)
Next iZeile
End With
Close #1
End Sub

cu
Chris
wie Chris, in Function gekapselt
06.03.2017 14:41:20
Michael
Hi,
das sieht dann z.B. so aus:
' allg. Modul, z.B. Modul1
Option Explicit
Function CSV_Erzeugen(Bereich As Range, Pfad$, t1$, t2$) As String
Dim aSp           ' ohne Angabe = as variant, unten als Array
Dim z&, s&        ' & = as long z wie Zeile, s wie Spalte
Dim st$           ' $ = as string, st wie string für Ausgabe
Dim maxZ&, maxS&  ' Anzahl Zeilen und Spalten
Dim d As Integer  ' d wie Dateinummer
On Error GoTo fehler
aSp = Bereich
maxZ = UBound(aSp)
maxS = UBound(aSp, 2)
For z = 1 To maxZ
For s = 1 To maxS
st = st & aSp(z, s) & t2 ' bei nur einer Spalte Aufruf mit t2=""
Next
st = st & t1      ' Zeilenschaltung, i.a. vbCrLf
Next
' statt For-Schleife kannst Du auch mal join() testen
d = FreeFile
Open Pfad For Output As #d
Print #d, st
Close #d
fehler:
If Err.Number  0 Then CSV_Erzeugen = Err.Description Else CSV_Erzeugen = "ok"
End Function
Sub aufruf()
Dim Pfad$, Ergebnis$
Dim Bereich As Range
' "H:\My Files\" & Format(Now, "yyyymmdd-hhmmss") & "_" & Environ("Username")
Pfad = ThisWorkbook.Path & "\"
Pfad = Pfad & Format(Now, "yyyymmdd-hhmmss") & "_" & Environ("Username") _
& ".csv" ' oder .txt oder wie auch immer
With Sheets("Tabelle2")
Set Bereich = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
End With
'Variante mit Prüfung des Pfads
'If Dir(Pfad) = "" Then
'  Ergebnis = CSV_Erzeugen(Bereich, Pfad, vbCrLf,"")
'  If Ergebnis = "ok" Then
'     MsgBox "Datei " & Pfad & " wurde erzeugt"
'    Else
'     MsgBox "Fehler: " & Ergebnis
'  End If
' Else
'  MsgBox "Datei bereits vorhanden"
'End If
' *** oder ganz einfach:
MsgBox CSV_Erzeugen(Bereich, Pfad, vbCrLf, "")
' Trennen z.B. mit: vblf, vbcr oder vbcrlf
End Sub
Schöne Grüße,
Michael
Anzeige
AW: VBA: Einzelnes Blatt aus Datei speichern, ggf. Txt
06.03.2017 14:45:01
Max
Hallo Chris,
vielen Dank dafür !
Das ist genau, wonach ich gesucht hatte und funktioniert schnell und ohne Probleme, perfekt !
VG und schönen Nachmittag,
Max
AW: VBA: Einzelnes Blatt aus Datei speichern, ggf. Txt
06.03.2017 14:49:36
Max
Hi Chris,
nur noch zum Verständnis dazu, weil ich bei VBA noch ziemlich am Anfang bin:
Kannst Du mir noch kurz erklären, was das #1 hier genau macht bzw. warum es notwendig ist ?
VG,
Max
AW: VBA: Einzelnes Blatt aus Datei speichern, ggf. Txt
06.03.2017 18:12:16
ChrisL
Hi Max
Nr.1 ist quasi die Variable für das File und wird am Schluss geschlossen.
Vielleicht gibt es noch eine bessere Erklärung aber dazu müsste ich auch recherchieren.
cu
Chris
AW: VBA: Einzelnes Blatt aus Datei speichern, ggf. Txt
06.03.2017 19:16:59
ChrisL
Hi Max
Natürlich konnte ich es nicht lassen die Antwort zu suchen:
FreeFile:
https://activevb.de/tutorials/tut_text/textdateien.html
Liefert eine freie Dateinummer. Eine Dateinummer benötigt man beim öffnen eine Datei um den Datenkanal später eindeutig identifizieren können. Jede Dateioperation auf die Datei bezieht sich dann auf die Dateinummer.
FileNumber:
https://msdn.microsoft.com/en-us/library/office/gg264163.aspx
Required. A valid file number in the range 1 to 511, inclusive. Use the FreeFile function to obtain the next available file number.
https://msdn.microsoft.com/en-us/library/office/gg264568.aspx
Number used in the Open statement to open a file. Use file numbers in the range 1–255, inclusive, for files not accessible to other applications. Use file numbers in the range 256–511 for files accessible from other applications.
Und weil es fast immer nur eine Dateinummer auf einmal braucht, ist die Dateinummer fast immer #1 :)
cu
Chris
Anzeige

336 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige