Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
816to820
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
816to820
816to820
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige