Při práci s VBA v Excelu je často nutné přistupovat k informacím o souboru, včetně doby jeho poslední změny. Znalost času změny souboru může být užitečná v různých scénářích, například při sledování aktualizace dat nebo automatické aktualizaci kontingenčních tabulek.
Chcete-li získat čas poslední změny souboru VBA, musíte použít objekt FileSystemObject z knihovny Microsoft Scripting Runtime. Pomocí tohoto objektu můžeme přistupovat k různým vlastnostem souboru, včetně data a času jeho změny.
Chcete-li začít s FileSystemObject, musíte jej oznámit a vytvořit instanci objektu:
Dim FSO As Object
Dále můžeme použít metodu GetFile k získání objektu souboru, jehož změny nás zajímají:
Dim File As Object
Poté pomocí vlastnosti DateLastModified můžeme získat čas poslední změny souboru:
Dim LastModified As Date
Výsledný čas změny souboru lze použít ve svých scénářích zpracování dat nebo přenést na obrazovku uživatele. Je také možné zkontrolovat čas změny souboru s určitou periodicitou a automaticky aktualizovat data v sešitu aplikace Excel.
Algoritmus pro získání času pro změnu souboru VBA Excel
Pro čas změny souboru v aplikaci VBA Excel lze použít následující algoritmus:
- Určete cestu k souboru, o kterém potřebujete získat informace.
- Vytvořit objekt FileScriptingObject pomocí funkce CreateObject ("Scripting.FileSystemObject").
- Zkontrolujte existenci souboru pomocí vlastnosti fileexists objektu FileScriptingObject.
- Pokud soubor existuje, získejte objekt File pomocí vlastnosti getfile objektu FileScriptingObject.
- Načíst čas poslední změny souboru pomocí vlastnosti DateLastModified objekt File.
- Načíst čas poslední změny souboru na obrazovku nebo jej uložit do proměnné nebo buňky aplikace Excel.
Uvedený algoritmus umožňuje získat čas poslední změny souboru v aplikaci VBA Excel. Tyto informace mohou být užitečné například při monitorování změn souborů nebo při provádění auditu dat.
Příklad kódu na VBA:
Sub GetFileLastModifiedTime()Dim filePath As StringDim fileSystem As ObjectDim file As ObjectDim lastModifiedTime As DatefilePath = "C:\path\to\file.txt" ' Замените на путь к нужному файлуSet fileSystem = CreateObject("Scripting.FileSystemObject")If fileSystem.FileExists(filePath) ThenSet file = fileSystem.GetFile(filePath)lastModifiedTime = file.DateLastModifiedMsgBox "Время последнего изменения файла: " & lastModifiedTimeElseMsgBox "Файл не найден"End IfEnd Sub
V tomto příkladu kódu zadejte cestu k souboru, jehož čas poslední změny chcete získat. Výsledná hodnota času poslední změny souboru je zobrazena v okně zprávy, ale tuto část kódu můžete změnit pro své potřeby.
Popsaný algoritmus tak umožňuje získat čas poslední změny souboru v aplikaci VBA Excel a použít tyto informace k řešení různých problémů.
Metoda 1: Použití funkce FileDateTime
Chcete-li použít funkci FileDateTime, musíte jí jako argument předat cestu k souboru. Cesta může být uvedena jako absolutní (s úplnou cestou k souboru) nebo relativní (vzhledem k aktuálnímu umístění souboru s makrem).
Níže je uveden příklad kódu, který ukazuje použití funkce FileDateTime:
Sub GetFileLastModifiedTime()Dim filePath As StringDim lastModifiedTime As DatefilePath = "C:\Path\To\Your\File.xlsx"lastModifiedTime = FileDateTime(filePath)MsgBox "Время последнего изменения файла: " & lastModifiedTimeEnd Sub
V tomto příkladu kódu, proměnná filePath obsahuje cestu k souboru, jehož čas změny chceme získat. Funkce FileDateTime přiřadí hodnotu lastmodifiedtime proměnné a v poslední době se změny souboru zobrazí ve zprávě pomocí MsgBox.
Tato metoda usnadňuje získání času změny souboru, ale vyžaduje přesné zadání cesty k souboru. Pokud se soubor přesune nebo se změní jeho název, kód nebude fungovat správně. V takových případech se doporučuje použít jiné metody k určení času změny souboru.
Metoda 2: Použití objektu FileSystemObject
Druhou metodou, jak získat čas změny souboru v aplikaci VBA Excel,je použití objektu FileSystemObject z knihovny Microsoft Scripting Runtime. Tento objekt umožňuje různé operace se soubory a složkami v operačním systému.
Nejprve je třeba přidat odkaz na knihovnu Microsoft Scripting Runtime. Chcete - li to provést, otevřete nabídku Nástroje-odkazy a vyhledejte v seznamu Microsoft Scripting Runtime. Zaškrtněte tento odkaz a klikněte na tlačítko "OK".
Po přidání odkazu na knihovnu můžete objekt FileSystemObject použít k získání času změny souboru. Chcete-li to provést, vytvořte instanci objektu FileSystemObject pomocí klíčového slova CreateObject:
Dim fs As ObjectSet fs = CreateObject("Scripting.FileSystemObject")
Poté lze k získání objektu souboru použít metodu getfile objektu FileSystemObject. Jako argument metody předejte cestu k požadovanému souboru. Například následující kód přijímá objekt souboru pomocí metody GetFile:
Dim f As ObjectSet f = fs.GetFile("C:\Documents\TestFile.txt")
Po obdržení objektu souboru je možné získat čas jeho poslední změny pomocí vlastnosti DateLastModified. Například:
Dim lastModified As DatelastModified = f.DateLastModified
Proměnná lastModified bude obsahovat čas poslední změny souboru. Tuto hodnotu můžete použít ve svém kódu k provedení nezbytných akcí.
Je důležité si uvědomit, že při používání objektu FileSystemObject je třeba být opatrný a vzít v úvahu možné chyby a výjimky, které mohou nastat při práci se soubory a složkami.