Přejít na hlavní obsah

VBA Excel: jak získat čas na změnu souboru

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:

  1. Určete cestu k souboru, o kterém potřebujete získat informace.
  2. Vytvořit objekt FileScriptingObject pomocí funkce CreateObject ("Scripting.FileSystemObject").
  3. Zkontrolujte existenci souboru pomocí vlastnosti fileexists objektu FileScriptingObject.
  4. Pokud soubor existuje, získejte objekt File pomocí vlastnosti getfile objektu FileScriptingObject.
  5. Načíst čas poslední změny souboru pomocí vlastnosti DateLastModified objekt File.
  6. 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.