Dies könnte einfach für Sie sein, aber ich bin neu bei VBA.Hinzufügen/Aktualisieren Liste mit Excel VBA
Ich habe eine Excel-Datei, die viele Spalten hat, von denen eine "id" ist, was ein Schlüsselwert ist. Ich habe einen Code geschrieben, um eine Auswahl für die Datei zu öffnen.
Sub GetFile()
Dim fNameAndPath As Variant
fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLSM), *.XLSM", Title:="Select File To Be Opened")
If fNameAndPath = False Then
Exit Sub
Workbooks.Open Filename:=fNameAndPath
End Sub
Ich möchte Makro in dieser Liste haben, die die anderen Dateien hinzufügen soll (die mit unterschiedlichen Werten und unsicher Menge der Zeilen derselben Spalte Namen haben). Und wenn die Spalte "id" in der hinzugefügten Datei denselben Wert hat, sollte die alte Zeile vollständig gelöscht werden.
Hat jemand einen Vorschlag?
Option Explicit
Dim myWorkbooks As New Collection
Sub GetFile()
Dim fNameAndPath As Variant, i As Long, x As Variant
fNameAndPath = Application.GetOpenFilename("All Files (*.*), *.*", , "Select Files To Be Opened", , True)
If Not IsArray(fNameAndPath) Then
If fNameAndPath = False Then Exit Sub Else fNameAndPath = Array(fNameAndPath)
End If
For i = LBound(fNameAndPath) To UBound(fNameAndPath)
Set x = Workbooks.Open(fNameAndPath(i))
myWorkbooks.Add x
Next
End Sub
Auf diese Weise können Sie mehrere Dateien öffnen und auch speichert sie (ein Zeiger auf sie):
Ja genau das. Ich möchte in der Lage sein, eine beliebige Dateimenge auszuwählen, während ich dies tue. Und wenn "ID" Spaltenwerte bereits gleich sind, wird der alte in der Liste gelöscht. –
Ich weiß, wie man eine Dateiauswahl öffnet, aber ich weiß nicht, wie ich die anderen Dateiwerte der Liste hinzufügen werde, wenn sie variabel sind (ein Teil der Datei hat 10 Werte, manche 100 usw.), wenn sie nicht variabel sind könnte es mit Rekordmakro tun. Außerdem kenne ich den Algorithmus nicht, der prüft, ob zwei Werte gleich sind und den alten löscht. –
ich habe es bearbeitet und ich bekomme keine Antwort –