Clever-Excel-Forum

Normale Version: .vbs Script mit VBA schreiben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo schon wieder..

Ich würde gern ein .vbs - Script mit vba umschreiben, um eine Exceldatei damit aufzurufen die den Namen immer ändert... 

Hat mir da jemand eine Hilfestellung?
Hallo,

Mehrere Möglichkeiten:
-Erstelle eine Textdatei mit dem vbs-Code, die Du mit der Endung .vbs speicherst.
-Erstelle eine .vbs-Datei, die Du per VBA öffnest und die Teile dann abänderst, die Du ändern möchtest
-Mache das, was Du mit dem vbs-Code machen willst, gleich mit VBA

Dazu müsstest Du aber etwas konkreter werden.
Hallo,

bei *.bat - Dateien kann man Parameter, z.B. einen Dateinamen übergeben. Hast Du geprüft, ob dies auch mit *.vbs geht?

mfg
Also @steuerfuzzi

Ich habe eine Datei, die sich selbständig mit "Application.OnTime" Oder durch Schaltflächenbetätigung speichert! Dabei wird immer das aktuelle Datum und ein Dateibeisatz gesetzt "Schichtprotokoll vom 11.09.2018" z.B...

Nun möchte ich aber immer über den Desktop die aktuelle Datei öffnen, ohne im Verzeichnis danach zu suchen, da das Programm öffentlich zugänglich ist! 

Die Datei soll immer durch ein Icon geöffnet werden, das immer die aktuellste Datei öffnet...

Also ich würde gern in dem Skript einfach immer den aktuelle Dateipfad ändern wollen!

Hier das Script als .vbs (mit Beispielpfad geschrieben mit dem Notepad)

Code:
Option Explicit
Dim xlApp , Pfad
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Pfad = "C:\Eigene Dateien\Deine Datei.xls"
xlApp.Workbooks.Open Pfad
set xlApp = nothing
Da würde ich die aktuelle Datei immer ohne Zusatz speichern. Wenn die neue Speicherung erfolgt, ist der erste Schritt, die (noch) aktuelle Datei unter dem gewünschten Namen mit Datum zu speichern und dann die Alte Datei mit der neuen zu überspeichern. Damit kannst Du eine Verknüpfung zu der Datei ohne Endung auf dem Desktop lassen, ohne diese ändern zu müssen.

Ich lese aus Deinem Post heraus, dass es sich bei der betreffenden Datei um die geöffnete handelt. Dann könnte das Speichern evtl. so ähnlich aussehen:
Code:
Sub speichern()
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile ThisWorkbook.FullName, ThisWorkbook.Path & "\Schichtprotokoll vom " & Format(Now(), "dd.mm.yyyy") & ".xlsm", True
ThisWorkbook.Save
End Sub

EDIT: Achtung! Beim Filecopy mit True wird die Datei überschrieben, wenn diese bereits exisitiert! Ggf. die Zeit (mit Sekunden) in den Dateinamen aufnehmen, damit es nicht vorkommt, dass Dateien überschrieben werden.
Du bist einsame Spitze.. da hätte ich auch selbst drauf kommen können...  :20: :20: 

Klaar erst speichere ich die Datei mit den Daten unter dem Namen den ich brauche, dann leere ich die Daten und speichere die Datei wieder im der Ursprünglichen Bezeichnung...… 

Irgendwann sieht man vor lauter Bäumen den Wald nicht mehr.. 

Danke dir!!
Hallöchen,

nur mal der Vollständigkeit halber.

Argumente an ein Script werden mit wscript.arguments ausgewertet. …(0), …(1) usw.
Man kann dazu z.B. eine oder mehrere Dateien auf ein Script ziehen und diese werden dann "abgearbeitet".
Ok.. Würdest du mir aus reiner Interesse ein Bespiel machen? Wie ich mein Vorhaben umsetzen hätte können auf diesem Weg?
Hallöchen,

Eigentlich war der Hinweis an Fennek gedacht wegen dessen Frage nach den Argumenten Smile
Da muss ich aber nochmal fragen, welche Aufgabe genau. Die letzte / aktuellste Datei in einem bestimmten Pfad öffnen? Nach welchen Gesichtspunkten soll ein Pfad geändert werden und warum?

Das wäre erst mal die letzte Datei:
Code:
'Ordner festlegen
Const Path = "C:\Test"
'Varialendeklarationen
Dim oFso, oFile, sFilePath, SFileName, dFileTime
'Objekt setzen
Set oFso = CreateObject("Scripting.FileSystemObject")
'Startdatum setzen
sFileTime = DateValue("01.01.2000")
'Schleife ueber alle Dateien des Ordners
For Each oFile In oFso.GetFolder(Path).Files
        'Wenn das Dateidatum neuer ist, Zeit und Name und Pfad uebernehmen
        If dFileTime < oFile.DateLastModified Then
        dFileTime = oFile.DateLastModified
        sFilePathName = oFile.Path
    End If
Next
MsgBox sFilePathName & vbLf & "Letzte Aenderung: " & dFileTime
Der Pfad sollte geändert werden, da sich der Dateiname der Aktuellen Datei ständig verändert! Ich wollte mit der Besagten Datei (tägliches Schichtprotokoll) eben das Script schreiben um immer das Aktuelle zu greifen, da das Schichtprotokoll dann von ettlichen Mitarbeitern gefüllt wird! ( Allerdings war das natürlich in der Form dann nicht so klug, wie wir ja dann festgestellt hatten)

Sozusagen eine Verknüpfung mit variablem Ziel
Seiten: 1 2