Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, der code funktioniert schon in einer leeren Datei Du musst halt nur schauen, ob Du mit festen Bereichsangaben arbeiten kannst oder wie Du selbige ermittelst.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 14.09.2020
Version(en): 2013
24.09.2020, 08:59
(Dieser Beitrag wurde zuletzt bearbeitet: 24.09.2020, 09:15 von ExcelLearner.)
leider klappt es nicht. Im Debugger ist alles gelb markiert. Habe probiert die ganzen Daten in eine Tabelle umzuwandeln und auch nur eine bestimmte Range. Edit: Habe es gerade bei einem selbst erstellten Datensatz probiert, da gehts. Ich glaube es liegt daran, dass Excel Probleme hat, weil es als CVS Datei erkannt wird. 2. Edit: Habe einen Code gefunden der die CVS Datei einfach in eine Excel Datei umwandelt und dann klappt es besser: Code: Sub Makro1() Dim ws As Worksheet Dim qt As QueryTable For Each ws In ThisWorkbook.Worksheets For Each qt In ws.QueryTables qt.Delete Next qt Next ws
If ActiveWorkbook.Connections.Count > 0 Then For i = 1 To ActiveWorkbook.Connections.Count ActiveWorkbook.Connections.Item(1).Delete Next i End If End Sub
Ich hab nur keine Ahnung ob ich das "Dim", "Next i" und "End if" weg lassen kann. Was bedeutet das?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
wenn das der Grund sein sollte, dann speichere die Datei als xlsx.
wenn alles gelb markiert ist, muss irgend etwas anderes falsch sein. Gelb wird normalerweise nur ein Codezeile markiert, wobei eine Codezeile aus mehreren, mit Underline verbundenen Zeilen im Editor bestehen kann.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 14.09.2020
Version(en): 2013
24.09.2020, 09:17
(Dieser Beitrag wurde zuletzt bearbeitet: 24.09.2020, 09:17 von ExcelLearner.)
Ja nur eine Codezeile ist gelb markiert. Sorry
Tut mir echt leid das ich mich so mega schlecht auskenne. Aber meinst du ich soll die CVS Datei bevor ich sie importiere, als XLS umwandeln?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
nein, nicht umwandeln. Wenn Du sie importierst und nicht einfach öffnest, ist ja alles ok. Dann ist es für Excel die Exceldatei, wo Du importiert hast. Zwei Dinge. Zum einen könntest Du mal die Codezeile nennen, die gelb ist, oder die Datei mal anhängen, sofern da keine schützenswerten Daten drin sind.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 14.09.2020
Version(en): 2013
24.09.2020, 09:29
(Dieser Beitrag wurde zuletzt bearbeitet: 24.09.2020, 09:35 von WillWissen.
Bearbeitungsgrund: Farbe wegen schlechter Lesbakeit geändert
)
Sub test() ActiveSheet.ListObjects.Add(xlSrcRange, ActiveSheet.UsedRange, , xlYes).Name = _ "Tabelle1"End SubSo siehts dann aus. Also ich importiere ja schon. Also ich gehe auf Daten > aus Text... Aber trotzdem erkennt er da noch die CVS Datei dahinter. Wenn ich aus einem Bereich eine intelligente Tabelle mache, zeigt der im VBA irgendwas mit Code: QueryTable ("CVS") Delte
an.
Testen-importiert.xlsm (Größe: 59,82 KB / Downloads: 1)
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, ja, da hattest Du schon was in Deinem weiter oben geposteten Code. So würde es gehen Sub Test ActiveSheet.QueryTables("09091534").Delete ActiveSheet.ListObjects.Add(xlSrcRange, Range("A6:E11"), , xlYes).Name = _ "Tabelle1" End Sub Da die Nummer nicht unbedingt bekannt ist könnte man das Löschen auch so vornehmen: Dim qt As QueryTable For Each qt In ActiveSheet.QueryTables qt.Delete Next Mit dem UsedRange würdest Du auch nur A6:E11 als Tabelle bekommen. Das importierte Blatt ist ja ziemlich zergliedert und würde ggf. mehrere tabellen erfordern. Wie ich schon schrieb, wenn die im Beispiel 5 Bereiche klar und konstant sind könntest Du die fest programmieren. Ansonsten müsstest Du sie erst ermitteln. Im Prinzip könnte es aber so funktionieren, Du erhältst damit mehrere Tabellen. Code: Sub test() 'Variablendeklaratonen Dim qt As QueryTable, iCnt%, rngZelle1 As Range, rngZelle2 As Range 'Schleife ueber alle Querys For Each qt In ActiveSheet.QueryTables 'ggf. refresh beenden If qt.Refreshing Then qt.CancelRefresh 'Querys loeschen qt.Delete 'Ende Schleife ueber alle Querys Next 'Startzelle ueber erstem Tabellenbereich festlegen Set rngZelle1 = Cells(3, 1) 'Schleife ueber 100 moegliche Bereiche For iCnt = 1 To 100 'Startzelle Tabelle festlegen Set rngZelle1 = Cells(rngZelle1.Row, 1).End(xlDown).Offset(1, 0) 'Endzelle ermittlen unten rechts, bereich muss unten rechts gefuellt sein! Set rngZelle2 = rngZelle1.End(xlDown) Set rngZelle2 = rngZelle2.End(xlToRight) 'Bereich in Tabelle wandeln ActiveSheet.ListObjects.Add(xlSrcRange, Range(rngZelle1, rngZelle2), , xlYes).Name = _ "Tabelle" & iCnt 'untere Zelle des Bereichs als Ausgangspunkt fuer naechsten Schleifendurchlauf setzen Set rngZelle1 = Cells(rngZelle2.Row, 1) 'Wenn nach unten nix mehr kommt, dann Schleife verlassen If Cells(rngZelle1.Row, 1).End(xlDown).Row = Rows.Count Then Exit For 'Ende Schleife ueber 100 moegliche Bereiche Next End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 14.09.2020
Version(en): 2013
Da probiere ich seit Tagen rum, war ganz kurz davor das es klappt. Und mit deinem Code funktioniert es direkt perfekt :D Nur leider verstehe ich den überhaupt nicht, und werde es auch nicht. Wenn ich es schaffe meinen zum laufen zu bringen würde ich gerne diesen beutzen. Der Fehler bei mir: Ich wähle einen Bereich aus: Code: Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select
und diesen will ich in eine Tablle umwandeln. Aber das Makro wandelt eine bestimmte Range die ich halt ausgewählt habe in eine Tabelle um: Code: ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$24:$O$56"), , xlYes).Name = _ "Tabelle1"
Wie schreibe ich, dass der ausgewählte Bereich zur Tabelle wird? Dass muss so sein weil die immer unterschiedlich lang sein werden.
Registriert seit: 14.09.2020
Version(en): 2013
Habs jetzt hin bekommen, habe Teile von deinem Code benutzt aber hauptsächlich meinen. Ich werde versuchen irgendwann deinen Code zu verstehen, sieht super komplex für mich aus
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
ich habe ja ausführlich kommentiert, vielleicht hilft das. Wenn Du mit dem weitermachen willst, was Du gewählt hast, dann nimm statt Range("$A$24:$O$56") dann Selection Ich habe in meinem Code ja die beiden "Ecken" ermittelt - rng...1 und 2 - und die mit Range(...1, ...2) zusammengesetz.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
|