Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Liste mit unbekannten Dateinamen importieren
#1
Hallo Leute,

leider komme ich bei meiner VBA nicht weiter. Gerne möchte ich die tägllich gesammelten Daten aus den verschiedensten Tabellen meiner Kollegen an meine Tabelle anhängen und eine Gesamtübersicht erstellen. Es soll also einen öffentlichen Ordner geben in dem jeder seine Daten ablegen kann und ich kopiere sie bei mir rein. Alle Tabellen haben ein identisches Format nur die Zeilen varieren zwischen 50 und 2500. Die fertig übertragenen Tabellen sollten dann automatisch gelöscht werden.

Mein Problem ist, da die Zeilenanzahl variert, sodass ich nicht weiß wie das geschrieben werden muss, das keine Probleme gibt, nachfolgend mein Code:


Code:
Function GetConnXLS(ByVal cFileName As String, _
Optional ByVal InformErrMSG As Boolean = False) As ADODB.Connection

On Error GoTo LOI:

'Open ADO connection to excel workbook

Dim oConn As ADODB.Connection
Dim Ext As String, ConnStr As String

Set oConn = New ADODB.Connection

ConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                "Data Source=" & cFileName & ";" & _
                "Extended Properties=""Excel 12.0;HDR=Yes;"";"

oConn.Open ConnStr
Set GetConnXLS = oConn

LOI:
    If Err.Number <> 0 Then
        Set oConn = Nothing
        If InformErrMSG Then
            MsgBox "GetConnXLS" & ": " & Err.Number & " " & Err.Description, vbCritical
        End If
    End If
End Function

Sub test()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim sh As Worksheet
    Dim I As Long

    Set cnn = GetConnXLS(ThisWorkbook.Path & "\" & "test.xlsx")
    If cnn Is Nothing Then
        MsgBox "Check lai co so du lieu"""
        Exit Sub
    End If
    
  [color=#ff3333]  Set rst = cnn.Execute("SELECT * FROM [Tabelle 1$A1:Z2500]")[/color]
    
    Set sh = Sheets("Master")
    
    For I = 0 To rst.Fields.Count - 1
        sh.Cells(3, I + 1).Value = rst.Fields(I).Name
    Next I
    
    I = sh.Range("A4").CopyFromRecordset(rst)
    'sh.Range("A4").CopyFromRecordset rst, tra ve phai co (  )
    ' I la so dong copy duoc
    
    ' den file tiep theo:
    'I = I + sh....
    rst.Close
    Set rst = Nothing
    cnn.Close
    Set cnn = Nothing
    
End Sub

Sub TestOpenFile()
    Dim files As Variant
    
    'single file selection
    'files = Application.GetOpenFilename()
    'MsgBox files
    
    ' open multiple files
    files = Application.GetOpenFilename(, , , , True)
    
    If VarType(files) = vbBoolean Then Exit Sub
    Dim I As Long
    
    For I = LBound(files) To UBound(files)
        
    Next I
    Debug.Print VarType(files)
    Debug.Print TypeName(files)
End Sub

Sub merge_all()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim sh As Worksheet
    Dim I As Long, k As Long, CountFiles As Long, J As Long

    Dim files As Variant
    files = Application.GetOpenFilename(, , , , True)
    
    If VarType(files) = vbBoolean Then Exit Sub
    Set sh = Sheets("Master")
    
    For k = LBound(files) To UBound(files)
        Set cnn = GetConnXLS(files(k))
        If cnn Is Nothing Then
            MsgBox "Check lai co so du lieu file: " & files(k)
            Exit Sub
        End If
        
[color=#ff3333]        Set rst = cnn.Execute("SELECT * FROM [Tabelle 1$A1:Z2500]")[/color]
[color=#ff3333]    [/color]      
        CountFiles = CountFiles + 1
        
        If CountFiles = 1 Then
            For J = 0 To rst.Fields.Count - 1
                sh.Cells(3, J + 1).Value = rst.Fields(J).Name
            Next J
        End If
        I = I + sh.Range("A" & 4 + I).CopyFromRecordset(rst)
        
        rst.Close
        Set rst = Nothing
        cnn.Close
        Set cnn = Nothing
        
    Next k
    MsgBox "Danke, dass du mithilfst die Datei zu pflegen."
End Sub



Danke für eure Hilfe
Antworten Top
#2
Das kann PowerQuery ganz einfach und ziemlich schnell.. und zusätzlich können die Daten Transformiert werden!

Unter Daten/ Daten aus Ordner
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#3
Hallo, ich eigentlich auch für Power Query, aber der Satz hier -->


Zitat:Mod2:... Die fertig übertragenen Tabellen sollten dann automatisch gelöscht werden...

passt da nicht... Ergo: Kein Power Query...!!!
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
[-] Folgende(r) 1 Nutzer sagt Danke an Jockel für diesen Beitrag:
  • Frogger1986
Antworten Top
#4
Das hab ich gekonnt überlesen..  :05:
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#5
Hi Jörg,

jetzt bin ich aber verwundert

Zitat:passt da nicht... Ergo: Kein Power Query...!!!

wenn ich die Daten mit PQ in meine Zieldatei geholt habe kann ich die Quellen doch mit vba löschen …
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
Und bei der nächsten Aktualisierung sind die Daten dann im Query-Ergebnis nicht mehr vorhanden.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

[-] Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:
  • Jockel
Antworten Top
#7
(20.06.2019, 17:49)schauan schrieb: Hi Jörg,

jetzt bin ich aber verwundert...

Hallo André und ich bin verwundert, dass du verwundert bist. (^_-)
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#8
HI,

Zitat:Gerne möchte ich die tägllich gesammelten Daten aus den verschiedensten Tabellen meiner Kollegen an meine Tabelle anhängen und eine Gesamtübersicht erstellen.
also, erst importiere ich die Daten mit PQ irgendwohin, dann hänge ich die irgendwie an "meine Tabelle" an, dann lösche ich die Datenquellen.
Am nächsten Tag mach ich das wieder. usw. usf.
Ich seh da kein Problem Wink
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#9
(20.06.2019, 19:32)schauan schrieb: HI,
...
Ich seh da kein Problem Wink

Hi, ich auch nicht... Wink Vielleicht habe ich die ganze Sache auch gar nicht durchschaut. Das kommt schon (mal) vor...
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#10
(20.06.2019, 19:32)schauan schrieb: dann hänge ich die irgendwie an "meine Tabelle" an
Jetzt musst du diesen Teil noch ausarbeiten.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste