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

Zeile in Tables(ListObjects) schreiben

Zeile in Tables(ListObjects) schreiben
23.07.2020 09:52:12
Herby
In einem vorangehenden Beitrag hat mir Werner geholfen um Zeilen von unterschiedlichen Workbooks in ein zentrales Workbook/Worksheet übertragen und aktualisieren zu können und dies hat am Schluss super funktioniert. Da ich die auf diese Weise gesammelten Daten mit einem Microsoft Flow weiter verarbeiten möchte, müssen sich die Daten in einer Table befinden. Das bisherige Script, hat neue Zeilen im besagten Worksheet jeweils "unter" die Table geschrieben.
Meine bisherigen Versuche das Script so anzupassen, dass neue Zeilen innerhalb der Table geschrieben werden, haben leider nicht gefruchtet. Wenigstens funktioniert das aktualisieren einer Zeile, aber nun komme ich nicht weiter.
Wäre super, wenn mir jemand helfen könnte
Danke im Voraus
Herby
Zieldatei mit Table
https://www.herber.de/bbs/user/139229.xlsx
An der Stelle wo's Klemmt habe ich eine Message Box eingebaut und die fehlerhafte Copy Zeile ist auskommentiert
PS: sorry dass nicht der ganze Code im Fenster ist, aber irgendwie ist der button zum Einfügen von Code verschwunden :(
Option Explicit
Public FoundCell As Range
Public boAktualisieren As Boolean
Public boAbbruch As Boolean

Sub Übertragen()
Dim LastRow As Long, rng As Range, raFund As Range
Dim wbZiel As Workbook, wsZiel As Worksheet
Dim tblZiel As ListObject
Application.ScreenUpdating = False
Set wbZiel = Workbooks.Open("https://upgreat365.sharepoint.com/sites/ServiceManagement/ _
Freigegebene%20Dokumente/SERVICE%20MANAGEMENT%20LIBRARY/1.%20Service%20Katalog/Servicematrix.xlsx?web=1")
Set wsZiel = wbZiel.Worksheets("Servicematrix")
Set tblZiel = wsZiel.ListObjects("AT_Servicematrix")
With ThisWorkbook.Worksheets("Offering")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
For Each rng In .Range("A5:A" & LastRow)
Set FoundCell = tblZiel.DataBodyRange.Columns(1).Find(what:=rng, LookIn:=xlValues,  _
lookat:=xlWhole)
If FoundCell Is Nothing Then
rng.EntireRow.Copy
With tblZiel
Set raFund = .DataBodyRange.Columns(1).Find(what:="*", LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlPrevious)
If Not raFund Is Nothing Then
MsgBox ("so weit ok")
'                     .Cells(raFund.Row, "A").Offset(1).PasteSpecial Paste:=xlPasteValues
'                     .Cells(raFund.ListObjects(", "A").Offset(1).PasteSpecial Paste:= _
xlPasteValues
End If
End With
Else
rng.EntireRow.Copy
UserForm2.Show
If boAbbruch Then
Application.CutCopyMode = False
Exit Sub
End If
If boAktualisieren Then
With wsZiel
.Cells(FoundCell.Row, "A").PasteSpecial Paste:=xlPasteValues
boAktualisieren = False
End With
Else
With wsZiel
Set raFund = .Columns("A").Find(what:="*", LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlPrevious)
If Not raFund Is Nothing Then
'hier geändert ##
'.Cells(raFund.Row, "A").End(xlUp).Offset(1).PasteSpecial _
Paste:=xlPasteValues
.Cells(raFund.Row, "A").Offset(1).PasteSpecial Paste:=xlPasteValues
End If
End With
End If
End If
Next rng
End With
'Zieldatei speichern
wbZiel.Save
'   wbZiel.Close True
Application.CutCopyMode = False
Set wbZiel = Nothing: Set wsZiel = Nothing: Set FoundCell = Nothing: Set raFund = Nothing
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile in Tables(ListObjects) schreiben
23.07.2020 16:00:58
fcs
Hallo Herby.
statt die letzte ausgefüllte Zeile zu suchen ist es günstiger, die Tabelle um eine Zeile zu vergrößern und dann die Werte reinzukopieren.
LG
Franz
Textdatei mit angepasstem Makro.
https://www.herber.de/bbs/user/139248.txt
AW: Zeile in Tables(ListObjects) schreiben
23.07.2020 18:30:09
Herby
Hallo Franz
Herzlichen Dank, das hat auf Anhieb funktioniert und dies hätte ich niemals alleine hinbekommen. In der Zwischenzeit habe ich einen Flow erstellt, welcher die Daten in eine SharePoint Liste schreibt. Von dort wird die gesammelte Liste, mit einem Excel Query in diverse Excel Worksheets geholt. Das funktioniert auch alles bereits ganz gut. Doch ein kleines Problem habe ich noch.
In der Zieldatei sollte in der Spalte B eine Zeilennummer stehen. Diese kann ja nicht von der Quelldatei übernommen werden, sondern müsste in der Zieldatei generiert werden.
Damit wäre ich dann in der Lage in den Worksheets mit den Excel Query Daten einen vwerweis zusammenzubauen, welcher die Kundenzeile wieder auslesen kann. Ich habe schon versucht, die Zeilennummer in der SharePoint Liste zu berechnen, allerdings bin ich damit nicht weitergekkommen.
Da die Excel Datei mit Servicematrix die führende Datei ist, wäre es vermutlich einfacher, diese Funktion dort einzubauen. Ich weiss leider nur nicht wie?
Anzeige
AW: Zeile in Tables(ListObjects) schreiben
23.07.2020 21:48:18
fcs
Hallo Herby,
ich hab dir die entsprechende Funktionlität ins Makro eingebaut.
Die Zeile in der Quelle muss jetzt aber in Teilen ins Zielblatt übertragen werden
1. Spalte A
2. Spalte B bis zum letzten Eintrag in der Zeile.
Da der Kopiervorgang immer gleich ist wird jetzt für die verchiedenen Fälle Neu, Aktualisieren, Anfügen "nur" noch die Ziel-Zeile in der Zieltabelle ermittelt und die Datensatz-Nr(Alt bzw. Neu). Es gibt nur noch einen Block in dem die Daten kopiert werden.
Hier deine Modifizierte Zieldatei und meine Testdatei mit dem Makro und provisorischen Userform.
https://www.herber.de/bbs/user/139260.zip
LG
Franz
Anzeige
AW: Zeile in Tables(ListObjects) schreiben
24.07.2020 01:28:41
Herby
Hallo Franz
da du dich dermassen in's Zeug gelegt hast, wollte ich das Makro heute unbedingt noch testen. Habe also den Code in meine "Live" Umgebung verfrachtet und was soll ich sagen?
Einfach Hammermegageil !!!!
Ich habe soweit alles getestet, was mir in den Sinn gekommen ist und was ich mit meinem Account alles testen konnte. Der Knüller ist, dass man von der Quelldatei X Kopien erstellen und darin Kunden erfassen kann. Dank deinem Makro, werden die so erfassten Daten in eine zentrale Arbeitsmappe geschrieben. Auch die Generierung vom Zeilenindex funktioniert so weit ich sehen konnte, perfekt.
Ich habe noch Probleme mit dem Flow. Der funktioniert zwar auch soweit, aber die Cell Formate gehen irgendwie verloren. Der Wert im Datumsfeld, ist in der SharePoint Liste kein Datum mehr, sondern eine Zahl usw. Der Versuch das Feld auf beiden Seiten als Datum zu formatieren, führt dazu, dass der Flow auf einen Fehler läuft!!
Werde da wohl noch etwas Zeit investieren müssen und hoffe das lässt sich auch noch irgendwie lösen
Du hast mir aber definitiv sehr geholfen
Danke nochmals und eine gute Nacht
Herby
Anzeige
AW: Zeile in Tables(ListObjects) schreiben
29.07.2020 08:21:53
Herby
Hallo Franz
bei der Nutzung Excel Tabellen ist mir aufgefallen, dass es zu einem Fehler kommt, wenn das Makro ausgeführt und dabei keine Zeile ausgefüllt bzw. die Zeile A5 leer ist.
In einem solchen Fall werden in der Zieltabelle zwei Zeileneinträge erstellt (kopiert)
Zum Einen handelt es sich um die Zeile 4 der Quelldatei, plus eben diese eine Leerzeile (A5)
Ich habe versucht dies zu verhindern, habe es aber nicht fertig gebracht
AW: Zeile in Tables(ListObjects) schreiben
29.07.2020 17:24:26
fcs
Hallo Herby,
ich habe eine entsprechende Prüfung eingebaut.
Das Makro springt dann Richtung Makroende (Ziel=Beenden)
Ich hab die Ergänzung entsprechend markiert.
LG
Franz
https://www.herber.de/bbs/user/139380.xlsm
Anzeige
AW: Zeile in Tables(ListObjects) schreiben
29.07.2020 17:48:25
Herby
Hallo Franz
funktioniert perfekt, vielen Dank dafür denn Du hast mir sehr geholfen.
Liebe Grüsse
Herby
PS: Ich wusste nicht, ob es eine andere Möglichkeit gibt, als den Beitrag als ungelöst zu markieren, was ja aber eigentlich nicht der Fall war :)
Bis dato sind alle E-Mails von herber.de von Microsoft als Pishing behandelt und entsprechend blockiert worden und dann passiert es schnell, dass wertvolle Zeit verloren geht. Nach 5 Tagen verschwinden die Beiträge ja im Archiv und es gibt dann ja keine Möglichkeit der Kommunikation mehr, oder?
AW: Zeile in Tables(ListObjects) schreiben
29.07.2020 23:20:29
fcs
Hallo Herby,
es gibt dann ja keine Möglichkeit der Kommunikation mehr, oder?
Falls ein Thread/Beitrag schon im Archiv gelandet ist und es weitere Fragen gibt, dann kannst du ihn wieder "aufwärmen".
Kopiere den Link des letzten Beitrags zu deiner Frage - diesen findest du unter "Deine Beiträge" - und füge ihn in einen neuen Betrag ein. Im Betrefft fügst du den alten Betreff ein ggf. noch mit vorangestelltem @ den Namen des Users der dir geholfen.
Manche User haben in ihrem Profil auch eine E-Mail-Adresse angegeben - diese sollte aber nur in Ausnahmefällen genutzt werden oder dann wenn man Hilfe einkaufen möchte.
LG
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige