Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1748to1752
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

Macrorecorder Vba Code modifizieren

Macrorecorder Vba Code modifizieren
03.04.2020 12:41:43
Bernd
Hallo Forum,
ich scheitere gerade an einem einfachen Problem...
Ich lade eine csv-Datei aus dem Internet herunter per vba.
Die Datei wird schreibgeschützt geöffnet.
Die Datei ist dann geöffnet und ich möchte die Datei sortieren.
Der Macrorecorder zeichnet folgenden Code für das Sortieren auf
Sub Sortieren()
Windows("2020-04-03").Activate
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 3), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)),  _
_
DecimalSeparator:=".", ThousandsSeparator:=" ", TrailingMinusNumbers:= _
True
ActiveWorkbook.Worksheets("2020-04-03").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("2020-04-03").Sort.SortFields.Add Key:=Range("A1") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("2020-04-03").Sort
.SetRange Range("A2:F24")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Spalten sortieren
Columns("C:C").Select
Selection.Cut
Columns("H:H").Select
ActiveSheet.Paste
Columns("B:B").Select
Selection.Cut
Columns("G:G").Select
ActiveSheet.Paste
Columns("B:C").Select
Selection.Delete Shift:=xlToLeft
End Sub
Nun ändert sich aber der Dateiname beim Download am nächsten Tag.
Daher habe ich gleich nach dem Download, wenn also die geöffnete Datei aktiviert ist die Namen zuordnen mit
' wks_1 entspricht der Arbeitsmappe JJJJ-MM-TT.csv
Set wks_1 = ThisWorkbook.Sheets(1)
' wkb_1 entspricht dem Arbeitsblatt "JJJJ-MM-TT"
Set wkb_1 = ActiveWorkbook
um dann
Windows("2020-04-03").Activate
durch
wkb_1.wks_1.Activate
oder
ActiveWorkbook.Worksheets("2020-04-03").Sort.SortFields.Clear
durch
wkb_1.wks_1.Sort.SortFields.Clear
zu ersetzen.
Der Makrorecorder bringt keine Fehlermeldung - dennoch wird beim Einzelschritt-Test mit F8 genau an diesen Stellen dann das aufgezeichnete Makro abgebrochen...
Wer kann helfen - stehe auf dem Schlauch.
Besten Dank
Bernd

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Macrorecorder Vba Code modifizieren
03.04.2020 15:54:45
Regina
Hi, ich vermute "ThisWorkbook" ist falsch, damit sprichst Du die Datei an, in der der VBA-Code steht. Der steht aber nicht in der csv-Datei. Hier würde ich es mit ActiveWorkbook versuchen.
Gruß Regina
AW: Macrorecorder Vba Code modifizieren
03.04.2020 16:26:29
Bernd
Forum,
Ich habe das Problem jetzt gelöst (ohne eine eigene Sub Sortieren, die ich mit "call" aufgerufen hatte!),in dem ich "2020-04-03" des aktiven Tabellenblattes die Variable Blattname zugeordnet habe.
' Aktive Arbeitsmappe und aktives Tabellenblatt an Objektvariable übergeben
Set wkb_1 = ActiveWorkbook
Set wks_1 = ActiveSheet
'Blattname = ActiveSheet.Name
Blattname = wks_1.Name
Damit hat es funktioniert...und hier der Auszug aus dem Code...
' Aktive Arbeitsmappe und aktives Tabellenblatt an Objektvariable übergeben
Set wkb_1 = ActiveWorkbook
Set wks_1 = ActiveSheet
'Blattname = ActiveSheet.Name
Blattname = wks_1.Name
' CSV-Datei Sortieren
wkb_1.wks_1.Activate
' Text in Spalte A formatieren und in verschiedene Spalten kopieren
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 3), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
DecimalSeparator:=".", ThousandsSeparator:=" ", TrailingMinusNumbers:= _
True
'wkb_1.wks_1.Sort.SortFields.Clear
'ActiveWorkbook.Worksheets("2020-04-03").Sort.SortFields.Clear
wkb_1.Worksheets(Blattname).Sort.SortFields.Add Key:=Range("A1") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With wkb_1.Worksheets(Blattname).Sort
.SetRange Range("A2:F24")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Anzeige

39 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige