Stránka 1 z 1

Excel - pokračování makra při chybě souboru

Napsal: 09 črc 2020 12:17
od hujerus214
Zdravím,
potřeboval bych pomoct s řešením problému.

V excelovém souboru pracuji s listem, na kterém jsou vstupní data, tento list se mi při otevření smaže a automaticky nahradí aktuálním s daty z podnikové sítě. Externí soubor má vždy stejné jméno a leží na stejném místě - vše napsané pomocí makra v jiném souboru.
Potřeboval bych ale přidat podmínku, pokud se soubor nepodaří najít/ otevřít (například z důvodu výpadku sítě), aby mi původní data nesmazal.

stávající makro

'smazání listu DATA
Application.DisplayAlerts = False
Dim WS
For Each WS In Excel.Worksheets
If WS.Name = "DATA" Then
Sheets("DATA").Delete
Exit For
End If
Next

'nahrání aktuálních dat
Workbooks.Open Filename:= _
"\\cesta\Datovy_vystup.xlsx"
Sheets("Export_dat").Select
Sheets("Export_dat").Copy Before:=Workbooks("Objednávka.xlsm").Sheets( _4)
Sheets("Export_dat").Select
Sheets("Export_dat").Name = "DATA"
Windows("Datovy_vystup.xlsx").Activate
ActiveWorkbook.Close SaveChanges:=False


děkuji za pomoc

Re: Excel - pokračování makra při chybě souboru

Napsal: 09 črc 2020 23:44
od elninoslov
Od pásu bez akejkoľvek skúšky ...

Kód: Vybrat vše

Sub Reload_Data()
Dim wbNew As Workbook

    'pokus otevření souboru
    On Error Resume Next
    Set wbNew = Workbooks.Open(Filename:="\\cesta\Datovy_vystup.xlsx")
    On Error GoTo 0

    If Not wbNew Is Nothing Then
        Application.DisplayAlerts = False
       
        With ThisWorkbook
            'smazání listu DATA
            .Worksheets("DATA").Delete
            'nahrání aktuálních dat
            wbNew.Worksheets("Export_dat").Copy Before:=.Workbooks("Objednávka.xlsm").Sheets(4)
            .Worksheets("Export_dat").Name = "DATA"
        End With
       
        Application.DisplayAlerts = True
        wbNew.Close SaveChanges:=False
    End If
End Sub

EDIT: Close som umiestnil za End If, samozrejme má byť pred, opravil som.

Re: Excel - pokračování makra při chybě souboru

Napsal: 10 črc 2020 00:33
od Uziv00
Taky od pasu... Je to vbs, takže pro vba bude možná potřeba upravit.

Kód: Vybrat vše

   file = "\\cesta\Datovy_vystup.xlsx"
   Set fso = CreateObject("Scripting.FileSystemObject")   
   If (fso.FileExists(file)) Then
   ' stávající makro 
   End If
   Set fso = Nothing