VBA If

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

maraga
nováček
Příspěvky: 13
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline

VBA If

Příspěvekod maraga » 16 črc 2013 09:35

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

Reklama
Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: leden 12
Bydliště: Země, bohužel...
Pohlaví: Žena
Stav:
Offline
Kontakt:

Re: VBA If

Příspěvekod Azuzula » 16 črc 2013 11:56

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
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.

maraga
nováček
Příspěvky: 13
Registrován: červen 13
Pohlaví: Muž
Stav:
Offline

Re: VBA If

Příspěvekod maraga » 16 črc 2013 13:14

ďakujem veľmi pekne

guest
Pohlaví: Nespecifikováno

Re: VBA If

Příspěvekod guest » 16 črc 2013 13:16

Metoda FileExists ve VBA existuje sama o sobě, není potřeba tvořit nějakou svou proceduru.

cmuch
Level 4.5
Level 4.5
Příspěvky: 1547
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: VBA If

Příspěvekod cmuch » 16 črc 2013 13:45

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

Azuzula
Level 3
Level 3
Příspěvky: 452
Registrován: leden 12
Bydliště: Země, bohužel...
Pohlaví: Žena
Stav:
Offline
Kontakt:

Re: VBA If

Příspěvekod Azuzula » 16 črc 2013 13:49

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šší?
Pokud je to vše.
Vše co znám z VBA jsem se naučila tady na fóru, na Office.lasakovi, david-zbiral.cz a hlavně hledáním na googlu.
SZ není poradna, na pokládání dotazů je tu fórum. Děkuji.

guest
Pohlaví: Nespecifikováno

Re: VBA If

Příspěvekod guest » 16 črc 2013 22:23

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.

Uživatelský avatar
X
Elite Level 12.5
Elite Level 12.5
Příspěvky: 19360
Registrován: květen 07
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: VBA If

Příspěvekod X » 16 črc 2013 23:52

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


Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti