Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1576to1580
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

bitte um VBA-Korrektur

bitte um VBA-Korrektur
08.09.2017 10:22:19
Fred
Hallo Excel-VBA-Experten
Ich kopiere einen Bereich (Bereichname:"Level") in eine andere Mappe (Name: "Level1.xlsm", Blatt "Tabelle2")
mit diesem gut kommentierten VBA

'----- Anpassen -----
Const ZIEL_PFAD As String = "C:\Users\Besitzer\Desktop\Auswertungen\" 'Verzeichnis der Ziel- _
Datei
Const ZIEL_MAPPE As String = "Level1.xlsm" 'Name der Ziel-Datei
Const ZIEL_BLATT As String = "Tabelle2" 'Name des Ziel-Tabellenblattes
Const QUELL_BEREICH_NAME As String = "Level"
'----- ENDE -----
Dim WbQ As Workbook, WsQ As Worksheet, WbZ As Workbook, WsZ As Worksheet
Dim Bereich As Range, Opened As Boolean
Application.ScreenUpdating = False
Set WbQ = ThisWorkbook 'Quell-Mappe = DIESE Mappe (mit Makro(s))
With WbQ
'Aktuelle Auswahl auf dem Blatt wird kopiert...
Set Bereich = .Worksheets("Level").Range(QUELL_BEREICH_NAME)
End With
Bereich.Copy 'Kopiert den Bereich wie o.a.
'Ziel-Mappe öffnen, wenn noch nicht offen
If MappeOffen(ZIEL_MAPPE) = False Then
Set WbZ = Workbooks.Open(ZIEL_PFAD & ZIEL_MAPPE)
Opened = True 'Vermerken, dass Ziel-Mappe durch Makro geöffnet wurde
Else: Set WbZ = Workbooks(ZIEL_MAPPE)
End If
'Prüfen ob Ziel-Blatt vorhanden ist; wenn nicht wird Vorgang abgebrochen
'(mit Warnmeldung) und die Ziel-Mappe geschlossen, WENN diese erst durch
'dieses Makro geöffnet wurde
If Not BlattVorhanden(ZIEL_BLATT, WbZ) Then
MsgBox "Ziel-Blatt """ & ZIEL_BLATT & """ in Mappe """ & ZIEL_MAPPE & _
""" nicht vorhanden. Vorgang wird abgebrochen", vbCritical, "Fehler!"
If Opened Then WbZ.Close False
Exit Sub
End If
'Kopierte Daten im Ziel-Blatt einfügen...
With WbZ
Set WsZ = .Worksheets(ZIEL_BLATT)
With WsZ
'...ab der nächsten freien Zelle in Spalte A
'Eingefügt werden nur Werte und Zahlenformate, keine anderen
'Formatierungen etc.
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial _
xlPasteValuesAndNumberFormats
End With
'Wenn Ziel-Mappe erst durch dieses Makro geöffnet wurde, wird diese
'wieder geschlossen, Änderungen gespeichert, ansonsten bleibt sie geöffnet
If Opened Then .Close True
End With
WbQ.Activate 'Quell-Mappe aktivieren
Application.CutCopyMode = False
nun möchte ich allerdings, dass mein Quell-Bereich in die Intelligente Tabelle "Tab_Level2" im Blattname "Tabelle2" angefügt wird.
Kann mir jemand dieses VBA entsprechend bitte ändern?
Mit freundlichen Gruß
Fred Neumann

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: bitte um VBA-Korrektur
08.09.2017 10:36:40
yummi
Hallo Fred,
ich nehme mal an du meinst mit intelligente Tabelle, eine Tabelle die du über Einfügen - Tabelle erzeugen kannst.
Wenn dem so ist brauchst Du deine Daten doch nur, unterhalb der Tabell ohne Leerzeile hinzukopieren und gut.
Wenn sich die 1. Spalte deiner Tabelle nicht in Spalte A befindet dann musst du die 1

.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial _
xlPasteValuesAndNumberFormats

hinter .Rows.Count, entsprechend ändern B = 2 usw
Gruß
yummi
AW: bitte um VBA-Korrektur
08.09.2017 10:44:27
Fred
Hallo yummi,
der Ziel-Bereich ist ja ursprünglich Blattname "Tabelle2".
Zielbereich soll aber in "Tabelle2" die Tabelle "Tab_Level2" sein.
Gruß
Fred
Anzeige
AW: bitte um VBA-Korrektur
08.09.2017 10:52:07
yummi
Hallo Fred,
dann hier

Const ZIEL_BLATT As String = "Tabelle2" 'Name des Ziel-Tabellenblattes

wie du selber gesagt hat gut dokumentiert ;-)
einfach anstelle Tabelle2 deinen neuen Namen eintragen, aber achte darauf, das du alle Leerzeichen mit übernimmst (falls am Ende "unsichtbare" vorhanden sind
Gruß
yummi
AW: bitte um VBA-Korrektur
08.09.2017 11:09:20
Fred
Alles OK yummi,
dadurch, das in meiner "intellig. Tabelle" noch keine Zeile Einträge hatte, war ich etwas durch das einfügen (eben erst nach der ersten Zeile) irritiert.
Danke für die Mühe!
Gruß
Fred
Anzeige
AW: bitte um VBA-Korrektur
08.09.2017 11:06:15
Luschi
Hallo Fred,
bei mir klappt das so:

Sub Machmal()
Dim rg1 As Range, rg2 As Range, rg3 As Range, lstObj As ListObject, _
adr1 As String, adr2 As String, nRow As Long
Set rg1 = Range("Level")
Set lstObj = Worksheets("Tabelle2").ListObjects("Tab_Level2")
Set rg2 = lstObj.DataBodyRange
adr1 = rg2.Address(0, 0)
adr2 = Split(adr1, ":", -1, vbTextCompare)(1)
nRow = Range(adr2).Row
Set rg3 = Worksheets("Tabelle2").Cells(nRow + 1, lstObj.DataBodyRange.Columns(1).Column)
Set rg3 = rg3.Resize(rg1.Rows.Count, rg1.Columns.Count)
rg3.Value = rg1.Value
Set rg1 = Nothing: Set rg2 = Nothing
Set rg3 = Nothing
Set lstObj = Nothing
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
Danke Luschi
08.09.2017 11:20:29
Fred
Hallo Luschi,
dein VBA bezieht sich auf "Tabelle2" in gleicher Mappe.
Dein Code kann ich dennoch für weiteres sehr gut gebrauchen.
Danke für deine Mühe
Gruß
Fred
AW: Danke Luschi
08.09.2017 14:17:21
Luschi
Hallo Fred,
mit einer Demodatei von Dir hätte ich es auch für diesen Fall angepaßt, so aber habe ich Dir nur gezeigt, wie es in meinem Beispiel läuft.
Gruß von Luschi
aus klein-Paris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige