Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: CSV-Export mehrer Tabellenblätter mit Userform

CSV-Export mehrer Tabellenblätter mit Userform
09.11.2006 14:30:43
Olaf
Hallo Leute,
ich habe hier ein Problem an dem ich einfach nicht weiter komme:
Die Benutzer einer Arbeitsmappe sollen mittels eines Userforms Tabellenblätter auswählen können, auch Mehrfach-Auswahl soll möglich sein, die anschließend in CSV-Dateien geschrieben werden sollen.
Hintergrund dieser Aktion ist, daß nicht immer alle Tabellenblätter für den Export benötigt werden.
Der Export eines Tabellenblattes "fest verdrahtet" in CSV-Datei funktioniert schon einwandfrei.
Wie ich mir den Ablauf des Codes grob vorstelle:
- bestehende Tabellenblätter in ein Userform einlesen
- User wählt ein oder mehrere Blätter aus
- Auswahl wird als Array zurückgegeben
Kann mir da jemand helfen ? Userforms sind mir leider immer noch ein Buch mit sieben Siegeln. Danke
Gruß Olaf
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CSV-Export mehrer Tabellenblätter mit Userform
09.11.2006 16:06:40
Rudi
Hallo,
eine Userform mit 2 Buttons (cmdOK und cmdCancel) anlegen.
in den Code der UF:
Option Explicit
Private Sub cmdCancel_Click()
Me.Hide
Unload Me
End Sub
Private Sub cmdOK_Click()
Dim iCounter As Integer
Dim strWKS As String
Dim objChkBox As Control, objTxtBox As Control
Application.ScreenUpdating = False
For Each objChkBox In Me.Controls
If TypeOf objChkBox Is MSForms.CheckBox And objChkBox = True Then
Call prcCSV(objChkBox.Caption)
End If
Next
Me.Hide
Unload Me
Set objChkBox = Nothing
Set objTxtBox = Nothing
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_Initialize()
Dim Wks As Worksheet
Dim objChkBox As Control, objTxtBox As Control
Dim iCounter As Integer
Const iBoxWidth As Integer = 200
For Each Wks In Worksheets
If Wks.Visible Then
iCounter = iCounter + 1
Set objChkBox = Me.Controls.Add("forms.checkbox.1")
With objChkBox
.Left = 15
.Top = iCounter * 15
.Width = iBoxWidth
.Caption = Wks.Name
End With
End If
Next
With Me
With .cmdOK
.Top = objChkBox.Top + objChkBox.Height + 20
.Left = 15
End With
With .cmdCancel
.Top = objChkBox.Top + objChkBox.Height + 20
.Left = cmdOK.Left + cmdOK.Width + 15
End With
.Width = (iBoxWidth * 2 + 40) + (objTxtBox Is Nothing) * (iBoxWidth + 25)
.Height = .cmdOK.Top + .cmdOK.Height + 50
End With
Set Wks = Nothing
Set objChkBox = Nothing
Set objTxtBox = Nothing
End Sub
'in ein Modul:
Sub prcCSV(strDateiName As String)
Dim iCol As Byte, iRow As Integer, _
iR As Integer, iC As Byte, strTxt As String, _
strMldg As String, strTmp As String
Const strSep As String = ";"
Reset
With Sheets(strDateiName).UsedRange
iRow = .Rows.Count
iCol = .Columns.Count
End With
Open ThisWorkbook.Path & "\" & strDateiName & ".csv" For Output As #1
With Sheets(strDateiName).UsedRange
For iR = 1 To iRow
strTxt = ""
For iC = 1 To iCol
strTmp = .Cells(iR, iC)
strTxt = strTxt & strTmp & strSep
Next iC
strTxt = Left(strTxt, Len(strTxt) - 1)
Print #1, strTxt
Next iR
End With
Close #1
End Sub

Gruß
Rudi
Anzeige
AW: CSV-Export mehrer Tabellenblätter mit Userform
09.11.2006 16:40:04
fcs
Hallo Olaf,
Userform mit 2 Commandbuttons und 1 Listenfeld anlegen.
Nachfolgende Makros unter das Userform kopieren. Je nachdem wie du den CSV-Export durchführst (ich hab einfach mal die Excel-SaveAs-Variante verwendet) ist noch die eine oder andere Modifikation an der Prozedur des Commandbutton1 nötig.
Gruß
Franz

Private Sub CommandButton1_Click()
'Button für Export
Dim wb As String, wbCSV As Workbook
Dim I As Integer
If ActiveWorkbook.Saved = False Then
ActiveWorkbook.Save
End If
wb = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
For I = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(I) = True Then
Call CSV_Export(ActiveWorkbook.Worksheets(Me.ListBox1.List(I)))
End If
Next
Set wbCSV = ActiveWorkbook
'Ursprüngliche Datei wieder öffnen
Application.Workbooks.Open wb
'CSV-Datei schließen
wbCSV.Close savechanges:=False
End Sub
Private Sub CommandButton2_Click()
'Abbrechen-Button
Unload UserForm1
End Sub
Private Sub UserForm_Initialize()
Dim wks As Worksheet
With Me.ListBox1
.Clear
.MultiSelect = fmMultiSelectMulti
.ListStyle = fmListStyleOption
For Each wks In ActiveWorkbook.Worksheets
.AddItem wks.Name
Next
End With
End Sub
Sub CSV_Export(Tabelle As Worksheet)
MsgBox "Export Tabelle: " & Tabelle.Name 'Testzeile
Pfad = "C:\Lokale Daten\Test"
Dateiname = Tabelle.Name & ".CSV"
Tabelle.SaveAs Filename:=Pfad & "\" & Dateiname, FileFormat:=xlCSV
End Sub

Anzeige
AW: CSV-Export mehrer Tabellenblätter mit Userform
10.11.2006 08:46:44
Olaf
Hallo Franz, Hallo Rudi,
wow, vielen Dank für Eure Hilfe, daß hat mir sehr geholfen !
Danke Olaf
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige