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

Makro funktioniert einmal aber nicht im Loop

Makro funktioniert einmal aber nicht im Loop
12.12.2017 21:26:48
Markus
Hallo,
ich habe zum ersten Mal probiert, Daten per VBA aus einer Text-Datei in Excel zu importieren.
Mein Makro funktioniert ohne Probleme, wenn ich es für ein einzelnes Blatt laufen lasse, möchte ich aber das gleiche Makro per Loop für 4 (oder mehr) Blätter laufen lassen, funktioniert es immer nur für das jeweils erste (ich erhalte keine Fehlermeldung).
Wenn ich den Loop mit der Zeile "For wsCount = 10 To 13" beginne, funktioniert es nur für Blatt 10.
Wenn ich den Loop mit der Zeile "For wsCount = 11 To 13" beginne, funktioniert es nur für Blatt 11. usw.
Da der Code ansonsten funktioniert, vermute ich, ich verwende irgendeine falsche Referenz in Bezug auf die Variable wsCount oder mir fehlt ein Schritt am Anfang oder Ende des Loops.
Ich vermute, der Fehler bzw. falsche Bezug ist in den Bereichen "Set qt..." oder "With qt...".
Kann mir jemand damit weiterhelfen ?
Mein Code:
Option Explicit
Sub update_all()
Dim wsCount As Long, lngCalc As Long
Dim str_adr As String, co_na As String
Dim qt As QueryTable
Dim co As WorkbookConnection, i As Long, lz As Long
Dim booUSS As Boolean, strDec As String, strTho As String
'    lngCalc = Application.Calculation
'    Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False
For wsCount = 10 To 13
With Worksheets(wsCount)
.Cells.ClearContents
.Cells.NumberFormat = "General"
booUSS = Application.UseSystemSeparators
strDec = Application.DecimalSeparator
strTho = Application.ThousandsSeparator
With Application
.UseSystemSeparators = False
.DecimalSeparator = "."
.ThousandsSeparator = ","
End With
On Error GoTo Errhandler
Select Case wsCount
Case 10
str_adr = "\\...\import1.txt"
Case 11
str_adr = "\\...\import2.txt"
Case 12
str_adr = "\\...\import3.txt"
Case 13
str_adr = "\\...\import4.txt"
End Select
Set qt = .QueryTables.Add(Connection:="TEXT;" & str_adr, Destination:=.Range("$A$1") _
)
With qt
.TextFileParseType = xlDelimited
.AdjustColumnWidth = False
.TextFilePlatform = 65001    'utf-8
.TextFileCommaDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileTabDelimiter = True
.Refresh BackgroundQuery:=False
End With
For Each co In ThisWorkbook.Connections
co_na = co.Name
ThisWorkbook.Connections(co_na).Delete
Next co
.Cells.QueryTable.Delete
With Application
.UseSystemSeparators = booUSS
.DecimalSeparator = strDec
.ThousandsSeparator = strTho
End With
Exit Sub:
Errhandler:
With Application
.UseSystemSeparators = booUSS
.DecimalSeparator = strDec
.ThousandsSeparator = strTho
End With
End With
Next wsCount
'    Application.Calculation = lngCalc
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Vielen Dank im Voraus,
Markus

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

Betreff
Datum
Anwender
Anzeige
AW: Makro funktioniert einmal aber nicht im Loop
12.12.2017 22:01:37
Zwenn
Hallo Markus,
Du musst Next wsCount vor das Exit Sub setzen. Sonst wird die Schleife nur einmal durchlaufen, weil Du das Makro dann direkt verlässt.
Viele Grüße,
Zwenn
AW: Makro funktioniert einmal aber nicht im Loop
12.12.2017 22:41:40
Markus
Hallo Zwenn,
vielen Dank für die schnelle Antwort !
Heißt das, ich schreibe den Errhandler außerhalb des Loops ?
Sorry, ich bin bei VBA noch ziemlich am Anfang.
VG,
Markus
AW: Makro funktioniert einmal aber nicht im Loop
12.12.2017 22:53:51
Zwenn
Genau so ist es Markus,
der Error Handler ist ja kein Bestandteil des Codes, den Du eigentlich ausführen willst. Der soll nur auftretende Fehler abfangen und dem Makro "mitteilen", was im Fall eines Fehlers zu tun ist, damit Du die Kontrolle über den Verlauf bei einem auftretenden Problem behältst.
Um im Falle eines Falles in den Code der Fehlerbehandlung zu gelangen, hast Du ja extra die Sprungmarke Errhandler: definiert. Im Idealfall wird der Code darin niemals ausgeführt. Dem entsprechend gehören diese Zeilen

'Application.Calculation = lngCalc
Application.ScreenUpdating = True
Application.EnableEvents = True

ebenfalls vor das Exit Sub.
Viele Grüße,
Zwenn
Anzeige
AW: Makro funktioniert einmal aber nicht im Loop
12.12.2017 22:58:53
Markus
Hallo Zwenn,
vielen Dank für die tolle Erklärung - das ist super so !
Jetzt funktioniert es einwandfrei - war wirklich ne große Hilfe ! :)
VG und einen schönen Abend,
Markus
AW: Makro funktioniert einmal aber nicht im Loop
12.12.2017 23:14:46
Zwenn
Hallo Markus,
das freut mich. So war es am Ende doch nur ein kleines Problem in der Mechanik. Dein Code ansich macht ja, was Du willst :-)
Viele Grüße und auch Dir noch einen schönen Abend,
Zwenn

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige