Stránka 1 z 1

VBA If

Napsal: 16 črc 2013 09:35
od maraga
Zdravim,

potreboval by som pomoc:

mám makro na ukladanie súboru XX do zložky Archiv:

ThisWorkbook.SaveCopyAs Filename:=(Application.ThisWorkbook.Path & "\Archiv\XX_" & Format(Date, "dd.mm.yyyy") & ".xls")

Potreboval by som podmienku:

Ak je v zložke rovnaký názov vypíš hlášku : Súbor s rovnakým názovom je už uložený

Ďakujem

Re: VBA If

Napsal: 16 črc 2013 11:56
od Azuzula
Ahoj,
na zjištění existence souboru můžeš použít třeba tuhle funkci:

Kód: Vybrat vše

Function File_Exists(ByVal sPathName As String, Optional Directory As Boolean) As Boolean
'funkce na zjištění přítomnosti souboru. Výstup je True/False
'Returns True if the passed sPathName exist
'Otherwise returns False
On Error Resume Next
If sPathName <> "" Then
    If IsMissing(Directory) Or Directory = False Then
        File_Exists = (Dir$(sPathName) <> "")
    Else
        File_Exists = (Dir$(sPathName, vbDirectory) <> "")
    End If
End If
End Function


A do svého makra potom použiješ toto:

Kód: Vybrat vše

If File_Exists(Application.ThisWorkbook.Path & "\Archiv\XX_" & Format(Date, "dd.mm.yyyy") & ".xls") = True Then
    MsgBox "Súbor s rovnakým názovom je už uložený"
End If

Re: VBA If

Napsal: 16 črc 2013 13:14
od maraga
ďakujem veľmi pekne

Re: VBA If

Napsal: 16 črc 2013 13:16
od guest
Metoda FileExists ve VBA existuje sama o sobě, není potřeba tvořit nějakou svou proceduru.

Re: VBA If

Napsal: 16 črc 2013 13:45
od cmuch
Třeba takto

Kód: Vybrat vše

Sub ExistujeSoubor()

 Set fso = CreateObject("Scripting.FileSystemObject")

    File = ThisWorkbook.Path & "\Archiv\XX_" & Format(Date, "dd.mm.yyyy") & ".xls"
    ' existuje soubor?
    If (fso.FileExists(File)) Then
       MsgBox "Soubor existuje !! ", vbInformation
       Set fso = Nothing
      Else
       MsgBox "Soubor nenalezen !! ", vbCritical
       Set fso = Nothing
    End If
End Sub

Re: VBA If

Napsal: 16 črc 2013 13:49
od Azuzula
Ta funkce bylo to jediný co jsem před pár lety našla, teď když jsem hledala víc konkrétně, tak opravdu existuje i s FileSystemObject. Jen by mě zajímalo proč je ve většině fór jen ta funkce a ne přímo fso když je o tolik jednodušší?

Re: VBA If

Napsal: 16 črc 2013 22:23
od guest
FileExists a FolderExists jsou co já vím součástí FileSystemObjects (FSO) od nepaměti. FSO zná i třeba VBScript, potažmo Windows Script Host (WSH). VBA také práci se soubory směřuje na FSO. Přes API by se to dalo řešit asi funkcemi GetFileAttributes nebo PathFileExists.

Re: VBA If

Napsal: 16 črc 2013 23:52
od X
Pokud si soubor budeš ukládat i s časem (hodina-minuta-sekunda), nic takového nebudeš potřebovat. Případně prozkoumej kód v mém souboru Teorie Rubikovy kostky ... ve vláknu: Teorie Rubikovy kostky + exonixů >>> viewtopic.php?f=62&t=42122&start=76