Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1516to1520
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

eine Schleife in ein bestehenden Code einbauen

eine Schleife in ein bestehenden Code einbauen
26.09.2016 09:53:40
Domdey
Hallo zusammen,
ich habe mal ein Beispieldatei hochgeladen.
https://www.herber.de/bbs/user/108402.xls
In dem Code kann man mehrere "csv" Dateien auswählen und die Daten in den Dateien werden dann in die Excel Datei zurückgeschrieben.
Der Code funktioniert sehr gut.
Nun zu meinem Problem:
Bei uns wird zur Zeit das EDV System von Gruppenlaufwerke auf SharePoint umgestellt. Hier ist es nun nicht mehr möglich mehrere Dateien auf einmal zu markieren.
Ist es vielleicht möglich nach dem Ablauf der Routine eine Schleife einzufügen die fragt ob ich noch eine Datei einfügen möchte, wenn ja so die Prozedur wieder von vorn beginnen ohne das ich den Button drücken muss. Wenn nein sollt die Prozedur dann weiter laufen.
Seht ihr da eine Möglichkeit das so umzusetzen?
Ich sehe auf dem Schlauch und weiß nicht wie ich das hinbekommen kann.
Vielen Dank im Voraus für eure Mühen.
Mit freundlichem Gruß
René

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: eine Schleife in ein bestehenden Code einbauen
26.09.2016 11:00:27
Daniel
Hi
ja, ganz einfach mit einer Do-Schleife:
Do
hier dein eigentlicher Makrocode
Loop While MsgBox("Noch ne Datei?", vbYesNo) = vbYes
Gruß Daniel
AW: eine Schleife in ein bestehenden Code einbauen
26.09.2016 11:08:42
ChrisL
Hi René
Sub CommandButton1_Click()
Dim wksZiel As Excel.Worksheet
Dim qtbN As Excel.QueryTable
Dim vntPathAndFileName As Variant
Dim lngLetzteZeileSpalteA As Long, i As Long
Dim strPfad As String
Dim vMsg As Variant
strPfad = "C:\"
ChDrive strPfad
ChDir strPfad
Do While vMsg  vbNo
vntPathAndFileName = Application.GetOpenFilename( _
FileFilter:="csv Files (*.csv), *.csv", _
Title:="CSV Import", _
MultiSelect:=False)
If vntPathAndFileName = False Then Exit Sub
Set wksZiel = ThisWorkbook.Worksheets("Tabelle1")
For i = LBound(vntPathAndFileName) To UBound(vntPathAndFileName)
lngLetzteZeileSpalteA = wksZiel.Cells(wksZiel.Rows.Count, 1).End(xlUp).Row
Set qtbN = wksZiel.QueryTables.Add("TEXT;" & vntPathAndFileName(i), wksZiel.Cells( _
lngLetzteZeileSpalteA + 1, 1))
qtbN.FieldNames = True
qtbN.RowNumbers = False
qtbN.FillAdjacentFormulas = False
qtbN.PreserveFormatting = True
qtbN.RefreshOnFileOpen = False
qtbN.RefreshStyle = xlOverwriteCells
qtbN.SaveData = True
qtbN.AdjustColumnWidth = False
qtbN.RefreshPeriod = 0
qtbN.TextFilePromptOnRefresh = False
qtbN.TextFilePlatform = xlWindows
qtbN.TextFileStartRow = 2
qtbN.TextFileParseType = xlDelimited
qtbN.TextFileTextQualifier = xlTextQualifierNone
qtbN.TextFileTabDelimiter = False
qtbN.TextFileSemicolonDelimiter = True
qtbN.TextFileDecimalSeparator = ","
qtbN.TextFileCommaDelimiter = False
qtbN.TextFileSpaceDelimiter = False
qtbN.TextFileSemicolonDelimiter = True
qtbN.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  _
1, 1, 1, 1, 1, 1, 1, 1)
qtbN.Refresh BackgroundQuery:=False
qtbN.Delete
Next i
vMsg = MsgBox("weiter?", vbYesNo)
Loop
wksZiel.Columns.AutoFit
End Sub

cu
Chris
Anzeige
AW: eine Schleife in ein bestehenden Code einbauen
26.09.2016 13:12:22
Domdey
Vielen Dank euch beiden.
Ich habe es so umgesetzt, wie es Daniel beschrieben hat.
Es hat sich nun noch etwas anderes ergeben. Wenn ich beim Import keine Datei wähle bekomme ich einen Laufzeitfehler 13. in folgender Zeile.
For i = LBound(vntPathAndFileName) To UBound(vntPathAndFileName)
Könnt ihr bitte auch noch mal schauen.
Besten Dank
René
AW: eine Schleife in ein bestehenden Code einbauen
26.09.2016 13:25:30
Daniel
Hi
du solltest prüfen, was du von der GetOpenFilename-Funktion zurückbekommst.
dazu kannst du die Funktion VarType(vntPathAndFileName) verwenden.
diese Funktion gibt dir an, was für einen Variablentyp du erhalten hast.
klickst du Abbrechen, wird vntPathAndFileName eine boolsche Variable mit dem Wert FALSE
überprüfen kannst du das mit
IF = VarType(vntPathAndFileName) = vbBoolean
bei Erfolg müsste der typ ein Array sein (genaueres kannst du in der Hilfe nachlesen)
Gruß Daniel
Anzeige
AW: eine Schleife in ein bestehenden Code einbauen
26.09.2016 14:07:31
ChrisL
Hi René
Die entsprechende Prüfung hatte ich den Beispielcode bereits eingebaut.
cu
Chris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige