Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1660to1664
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

Geschlossene Excel Datei verändern

Geschlossene Excel Datei verändern
03.12.2018 11:42:05
Aleks
Guten Tag,
ich habe eine Frage an euch Profis :)
Ich habe eine "Master-Datei", welche aus verschiedenen Dateien die wichtigsten Zahlen raussucht. Diese Zahlen werden am Anfang in einem Cockpit dargestellt. In diesem Cockpit habe ich ein Feld in dem ich nur einen Stichtag eingeben und es filtert mir quasi die Informationen zum gewünschten Stichtag raus.
Jetzt habe ich ein neues "produkt" mit dem ich quasi aus diesen verschiedenen "Master-Dateien" das cockpit automatisch rausfiltern kann ohne alle Dateien immer zu öffnen. Jetzt möchte ich es NOCH einfacher.
Wie kann ich ohne die "Master-Dateien" zu öffnen, das Datum ändern aus meinen 5 gleich aufgebauten "Master-Dateien" verändern? Das Feld Datum ist in allen Dateien an der gleichen stelle.
Ich möchte also in meinem "Produkt" das ohnehin schon das Cockpit der 5 verschiedenen "Master-Dateien" rausfiltert also ein Feld in dem ich das Datum verändern kann (aus den geschlossenen Dateien um dann das Cockpit zu einem gewissen Stichtag rauszufiltern)
So siehts aus bisher:
Function GetConnXLS(ByVal cFileName As String, _
Optional ByVal InformErrMSG As Boolean = False) As ADODB.Connection
'EDIT by Aleksandar Jakovljevic
'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 xml;HDR=Yes"";"
oConn.Open ConnStr
Set GetConnXLS = oConn
Exit Function
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 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, strData, _
kDS As Long, xKorr As Integer
files = Application.GetOpenFilename(, , , , True)
If VarType(files) = vbBoolean Then Exit Sub
Set sh = Sheets("Master")
For k = LBound(files) To UBound(files)
'Anzahl der Datensätze in der ausgewählten Datei ermitteln
kDS = lastRowClosedFile(files(k), "Cockpit", "A:A")
'ADODB-Connection erstellen
Set cnn = GetConnXLS(files(k))
If cnn Is Nothing Then
MsgBox "Check lai co so du lieu file: " & files(k)
Exit Sub
End If
'Select-Befehl zusammenstellen (quasi welche Daten ausgewählt werden sollen)
strData = "SELECT * From [Cockpit$A1:D10" & kDS & "];"
'Recordset öffnen auf der Grundlage der Connection & Select-Befehl
Set rst = cnn.Execute(strData)
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
If k = 1 Then
xKorr = 1
Else
xKorr = 0
End If
sh.Range("I" & 4 + I - xKorr).Value = files(k)
I = I + sh.Range("A" & 4 + I).CopyFromRecordset(rst)
rst.Close
Set rst = Nothing
cnn.Close
Set cnn = Nothing
Next k
MsgBox "Done", vbSystemModal + 48, "Hurraaa..."
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Geschlossene Excel Datei verändern
04.12.2018 19:06:15
ChrisL
Hi
Generell: Eine Form von Öffnen findet immer statt (woher sollen sonst die Daten kommen). Insofern kannst du die Datei auch konventionell schnell öffnen und wieder schliessen. Wenn du ScreenUpdating=False machst, merkt der User kaum etwas.
Du hast eine Variante mit SQL (Structured Query Language, eine Datenbanksprache) gewählt, was mir eigentlich gut gefällt.
SELECT * FROM Tabelle
Das Gegenstück von SELECT ist UPDATE. SQL-Beispiele findest du sicherlich im Netz.
Voraussetzung hierfür ist jedoch eine Datenbankstruktur. Deine Aufgabe - eine Zelle irgendwo ganz ohne Datenbank - zu ändern, ist mit SQL m.W. nicht möglich.
Ideen hätte ich folgende
- Wie eingangs erwähnt kurz öffnen/schliessen
- Die Zelle in eine "Pseudo-Datenbank" (Tabelle mit Feldnamen und 1 Datensatz) stecken, damit mit SQL darauf zugreifen kannst.
- Oder das Datum in der Cockpit Datei speichern (Quick & Dirty).
Eigentlich müsste man Sinn und Zweck des Datums, sowie das Vorgehen generell hinterfragen, aber das würde den Rahmen vermutlich sprengen.
Und bitte mach das weg:
lastRowClosedFile
https://www.herber.de/forum/archiv/1260to1264/1260766_Letzte_Zeile_aus_geschlossene_Excel_Datei.html
Was du machst, ist die Datei zu öffnen (in Form einer ADODB-Verbindung), die Anzahl Datensätze ermitteln (RecordCount), Datei schliessen, Datei wieder öffnen, Datensätze auslesen (SELECT) und wieder schiessen.
strData = "SELECT * From [Cockpit$A:D];"
(ohne Variable kDS)
cu
Chris
Anzeige
AW: Geschlossene Excel Datei verändern
05.12.2018 09:34:34
Aleks
Hallo,
vielen Dank für deine ausführliche und sehr informative Antwort. Da scheint sich jemand sehr gut auszukennen!
Ich bin grad am überlegen. Theoretisch muss ich überhaupt nicht per programmierung mein Datum ändern sondern ich kann doch einfach normale Zellenbezüge setzen. Sprich wenn die Datei, natürlich im unsichtbar im Hintergrund, offen ist dann kann ich einfach aus den 5 verschiedenen Cockpits die Datum Zelle auf ein Datumsfeld in meinem Master "markieren"?
Ich denke, dass das die einfachere Lösung wäre und nicht so komplizierto der was sagst du?
LG,
Aleks
AW: Geschlossene Excel Datei verändern
05.12.2018 12:55:06
ChrisL
Hi
Dein Workaround tönt vernünftig. Wenn es für dich passt, dann passt es auch für mich. :)
(mir fehlen für ein abschliessendes Urteil die Gesamtzusammenhänge)
cu
Chris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige