Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1824to1828
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

Datei als Pivotquelle mit variablem Name

Datei als Pivotquelle mit variablem Name
23.04.2021 13:56:07
Malle
Hallo liebe Forengemeinde,
ich bin am Verzweifeln und hoffe, dass ihr mir, wie schon so oft weiterhelfen könnt.
Ich habe eine Datei in der eine Pivot liegt, die Datenquelle ist in einem anderen Laufwerk, wird jeden Tag aktualisiert (ergänzt, d.h. die Vortagesdatei bleibt erhalten und die des aktuellen Tages kommt dazu) und enthält im Namen leider das Datum und die Uhrzeit.
Jetzt möchte ich die tagesaktuelle Datei als Quelle "auf Knopfdruck" auswählen (es passieren noch einige andere Dinge auf Knopfdruck).
Der Dateiname setzt sich wie folgt zusammen PROD_AdHocQuery_yyyy-mm-dd_hhmmss.csv
Habt ihr eine Idee, wie ich vorgehen kann?
Das hier habe ich schon versucht, leider ohne Ergebnis: http://www.office-loesung.de/ftopic369121_0_0_asc.php
Vielen Dank für eure Hilfe.

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

Betreff
Datum
Anwender
Anzeige
AW: Datei als Pivotquelle mit variablem Name
23.04.2021 17:47:04
Yal
Hallo Malle,
das einfachste wäre der neueste Datei in einer Datei zu kopieren, die immer dieselbe Name hat.
Du hast sicher im Verzeichnis mindestens 30 Dateien. Eins mehr fällt nicht ins Gewicht.
z.B. mit der DOS- Befehl

xcopy PROD_AdHocQuery_20*.csv PROD_AdHocQuery_heute.csv /D
(muss in dem besagten Verzeichnis laufen. Kann man auch in eine .bat-Datei ablegen)
Dann musst du nur noch die Pivot aktualisieren.
VG
Yal
AW: las& lese es allerdings anders, ...
23.04.2021 17:58:53
neopa
Hallo Yal,
... mE möchte er die neuen Daten zur Auswertung nicht gegen die vorherigen ersetzen sondern ergänzen.
Aus meiner Sicht bietet sich dafür neben VBA auch PQ an.
Gruß Werner
.. , - ...
Anzeige
AW: las& lese es allerdings anders, ...
23.04.2021 23:37:00
Kevin
Hallo,
Danke für eure Rückmeldungen. Ich will immer nur auf die aktuellste Datei zugreifen Daten aus den alten sind nicht mehr relevant.
Mit DOS befehlen kenne ich mich leider gar nicht aus.
Besteht nicht die Möglichkeit, den Dateinamen in VBA "zusammenzubauen" und den variablen Teil zu "überlesen"?
Danke vorab.
Über VBA
24.04.2021 00:11:40
Yal
Hallo Malle/Kevin,
im Prinzip ist alle möglich. Über VBA auch. Jedoch ist es zu prüfen, nicht nur welche Lösung scheinbar bequem ist, sondern auch leicht handzuhaben.
Die Schwierigkeit besteht daran, das aktuelleste Datei zu ermitteln. Wenn es nur eine Datei pro Tag gibt, ist die Kopie am "günstigste" (sowohl beim Herstellen als auch beim Warten).
eine xcopy per VBA könnte so aussehen (Pfad muss angepasst werden):

Sub xcopy()
Shell "xcopy C:\temp\PROD_AdHocQuery_*.csv C:\temp\PROD_AdHocQuery_heute.csv /D /Y"
End Sub
bei ersten Ablauf wird wahrscheinlich eine manuelle Bestätigung verlangt.
VG
Yal
Anzeige
AW: Über VBA
24.04.2021 00:49:22
Kevin
Hallo Yal,
danke für deine Rückmeldung. Ist mit der Methode sichergestellt, dass auch immer eine Kope der aktuellsten Datei erstellt wird?
Falls dem so ist, werde ich diese Variante nutzen.
Vielen Dank.
AW: Über VBA
24.04.2021 22:52:21
Yal
Hallo Kevin,
Das /D ohne Datum macht eine Kopie der Datei, die neuer ist, als das Zieldatei.
Wenn Du die Befehl jeden Tag verwendest, hast Du immer die neueste Datei. Wenn auch am Wochenende Dateien erzeugt werden, müsste man schauen. Ansonsten setzt das Datum an das Parameter /D an.
Eine Alternative wäre mit Powershell. Es sieht nur auf dem ersten Blick komplizierter:
gci "C:\Pfad\PROD_AdHocQuery_*.csv" -File | sort LastWriteTime -Desc | Select -First 1 | Copy-Item -Destination "C:\Pfad\PROD_AdHocQuery_heute.csv" -Force
VG
Yal
Anzeige
AW: Über VBA
26.04.2021 08:50:56
Malle
Guten Morgen Zusammen,
habe das genannte Vorgehen versucht, werde damit aber nicht ganz glücklich. Es öffnet sich jedes mal das "DOS-Feld" und möchte eine Eingabe, ob es sich um ein Verzeichnis oder eine Datei handelt. Das kann ich den Endanwendern nicht zumuten.
Gibt es weitere Vorschläge, die mein Problem lösen könnten?
Vielen Dank.
AW: Über VBA
26.04.2021 10:37:39
Yal
Hallo Kevin,
die Schwierigkeit der Aufgabe liegt daran, die neueste Datei zu identifizieren.
Mit folgendem Code sollte es funktionieren.
Da der FileSystemObject keinen Find oder Filter hat, muss man alle Dateien durchlaufen. Bei einem grossen Anzahl an Dateien kann es ein paar Sekunden dauern.
Mit Einbindung der Library "Microsoft Scripting Runtime" in VB-Editor unter Extras, Verweise für das FileSystemObject

'Mit Einbindung der Library "Microsoft Scripting Runtime"
' und "Microsoft VB-Script Regular expressions 5.5"
'In VB-Editor unter Extras, Verweise
Sub NeuesteDatei_kopieren()
Dim FSO As New FileSystemObject
Dim V As Folder
Dim D As File
Dim Neuest As File
Const cPfad = "C:\temp\H_for\" 'wichtig: "\" am Ende
Const cMuster = "PROD_AdHocQuery_"
On Error Resume Next
Set V = FSO.GetFolder(cPfad)
If V Is Nothing Then MsgBox "Pfad """ & cPfad & """ wurde nicht gefunden.": Exit Sub
For Each D In V.Files
If InStr(1, D.Name, cMuster, vbTextCompare) Then
If Neuest Is Nothing Then
Set Neuest = D
ElseIf D.DateLastModified > Neuest.DateLastModified Then
Set Neuest = D
End If
End If
Next
On Error GoTo 0 'Fehlertoleranz auf null
If Not Neuest Is Nothing Then
FSO.CopyFile Neuest.Path, cMuster & "heute.csv"
End If
End Sub
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige