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

Excel OHNE öffnen bearbeiten

Excel OHNE öffnen bearbeiten
04.12.2018 14:13:58
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

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Hatten wir gestern schon mal, warum neu?
04.12.2018 14:17:55
Torsten
AW: Excel OHNE öffnen bearbeiten
04.12.2018 15:33:43
Aleks
Hallo Tortste,
ich war mir nicht Sicher ob mein Post dann so weit nach unten rutscht und nicht mehr beantwortet wird.
AW: Excel OHNE öffnen bearbeiten
04.12.2018 17:03:48
Daniel
Hi
kannst du in einen Schrank etwas hineintun, ohne diesen zu öffnen?
Wenn du in einer Datei etwas verändern wolltest, ohne diese zu öffnen, dann müsstest du ja die entsprechenden Bits und Bytes direkt auf der Festplatte bzw dem aktuellen Speichermedium ändern.
Das geht nicht.
vor allem dann nicht, wenn du nicht nur direkt Werte ändern willst, sondern auch noch möchtest, dass sich Formeln, die sich auf diese Zelle beziehen, auch noch mit ändern.
Gruß Daniel
Anzeige
AW: Excel OHNE öffnen bearbeiten
04.12.2018 17:12:13
Aleks
Hallo Daniel,
vielen Dank für deine Antwort. Dann weiß ich jetzt Bescheid.
Hatte nur irgendwann mal gelesen gehabt, dass das möglich wäre über VBA. Das man quasi im Hintergrund die Datei über VBA öffnet (ohne das dies sichtbar ist) und dann das Datum verändern.
LG
AW: Excel OHNE öffnen bearbeiten
04.12.2018 17:23:32
Daniel
Hi
naja, die Datei öffnen und verändern, ohne dass der Anwender das mitbekommt, das geht problemlos.
entweder du schaltest vor dem Öffnen der Datei die Bildschirmaktualisierung aus und nach dem Schließen der Datei wieder ein. Application.ScreenUpdating = False/True
oder du öffnest die Datei nicht mit Workbooks.Open, sondern mit GetObject
dann wird die Datei beim Öffnen gleich ausgeblendet, dh für das Fenster der Datei wird die .Visible-Eigenschaft auf False gesetzt.
Dann sollte man aber die Datei nicht in diesem zustand gespeichert werden, sonst wundert sich der nächste, der die Datei öffnen will.
Dh wenn du die Änderungen speichern willst, solltest du die erste Variante verwenden.
Gruß Daniel
Anzeige
AW: Excel OHNE öffnen bearbeiten
04.12.2018 17:30:29
Aleks
Hallo Daniel,
deine Antworten sind mehr als nur hilfreich!
Ich kenne mich ein wenig aus mit VBA aber so gut auch wieder nicht. Wie könnte denn der "Code" heißen wenn ich somit 5 Dateien öffnen möchte und die Zeile z.B. D5 verändern möchte?
LG
AW: Excel OHNE öffnen bearbeiten
04.12.2018 19:30:08
Daniel
ADO.Recordsets programmieren und dann nicht wissen, wie man eine Datei öffnet und einen Zellwert ändert?
Das passt nicht zusammen.
Aber sei’s drum
With Workbooks.Open ("Pfad\Dateiname")
.Range("D5").Value = Hier dein Wert
.Save
.Close
End With
Gruß Daniel
AW: Excel OHNE öffnen bearbeiten
05.12.2018 09:23:12
Aleks
Ich habe es mir zusammengebastelt. Mit eigenem Teilwissen und fremdem Wissen. Leider bin ich diesbezüglich nicht so begabt ! :) Perfekt Vielen Dank!
Wie kann ich bei "With Workbooks.Open (Pfad)" mehrere Dateien eingeben also wie werden sie getrennt?
Bsp:
With Workbooks.Open (Pfad1) & (Pfad2)& (Pfad3) ?
Dann habe ich dich genug belästigt und komme alleine zurecht jetzt.
Danke nochmal
Anzeige
AW: Excel OHNE öffnen bearbeiten
05.12.2018 09:57:33
Daniel
Hi
das muss für jede Datei separat ausgeführt werden.
wenn die Programmschritte für jede Datei gleich sind, kann man eine Schleife über die Dateinamen erstellen, so dass man dass nur einmal hinschreiben muss.
dim Pfad as Variant
for each Pfad in Array(Pfad1, Pfad2, Pfad3, Pfad4, Pfad5)
With Workbooks.Open(Pfad)
.Range("D5").Value = Hier dein Wert
.Save
.Close
end with
Next
Gruß Daniel
AW: Excel OHNE öffnen bearbeiten
04.12.2018 19:30:10
Daniel
ADO.Recordsets programmieren und dann nicht wissen, wie man eine Datei öffnet und einen Zellwert ändert?
Das passt nicht zusammen.
Aber sei’s drum
With Workbooks.Open ("Pfad\Dateiname")
.Range("D5").Value = Hier dein Wert
.Save
.Close
End With
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige