Suponemos que hay un informe diseñado para ejecutarse diariamente y que genera una serie de ficheros de resultados con distintos datos automáticamente. Éstos ficheros se guardan en directorios específicos que están definidos en la macro de exportación.
La realidad nos dice que al final éste informe se ejecuta más de una vez al día y lo que se quiere no es regenerarlo sino actualizar los datos. De hecho la primera ejecución puede haber generado ficheros o no o sólo unos pocos. ¿Cómo sabemos si un fichero existe para abrirlo y actualizarlo?
Para saberlo utilizaremos un objeto que iremos viendo a menudo cuando queramos acceder a las funciones de sistema, el FileSystemObject. Éste objeto nos permite operar con Windows usando scripts de sistema.
Ejemplo:Sub abrir_fichero_si_existe()
Dim Archivo As String
Archivo = "C:\test.xls"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(Archivo) Then
Workbooks.Open FileName:= Archivo
Else
Workbooks.Add
End If
End Sub
Éste ejemplo abre el fichero test.xls si existe o crea un libro nuevo.
24 comentarios:
Muy bueno!!
Saludos
Excelente mi hermano. Aunque si hay personas que quieren q excel buske donde esta abierto la macro, pondriamos: Archivo = ThisWorkBook.Path & "\consultas.xls"
Jeancarlo R.
No le des pescado al que tiene hambre, Enseñale a pescar... (proverbio chino)
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Worksheets("ENCUESTA").TextBox2.Text = "" Or Worksheets("ENCUESTA").TextBox3.Text = "" Or Worksheets("ENCUESTA").TextBox3.Text = "XXXXXXXX-X" Or Worksheets("ENCUESTA").TextBox4.Text = "" Or Worksheets("ENCUESTA").TextBox5.Text = "" Then
Cancel = True 'BLOQUEAMOS CIERRE
MsgBox "¡Vaya! es imposible cerrar la aplicación. Revise los datos solicitados al comienzo de la encuesta.", vbApplicationModal + vbCritical + vbOKOnly
Else
ThisWorkbook.SaveAs (Worksheets("ENCUESTA").TextBox3.Text)
MsgBox "El archivo quedará guardado con el nombre de: " & Worksheets("ENCUESTA").TextBox3.Text & Chr(13) & Chr(13) & "Ruta: " & ThisWorkbook.Path & Chr(13) & Chr(13) & "Si desea modificarlo debera eliminar el archivo ubicado en la ruta especifica." & Chr(13) & Chr(13) & "... Muchas gracias por su tiempo.", vbApplicationModal + vbInformation + vbOKOnly
ThisWorkbook.Close (1) 'CIERRE Y GUARDA AUTOMATICO
End If
End Sub
Funcionando impecablemente!!! condiciona la salida del libro... XD!!!
Muchísimas Gracias!!!
Lo siguiente me ha sido de gran utilidad.
'Cuando un proceso previo obtiene un error, genera un archivo llamado errores.txt con el motivo del fallo
'Si existe dicho archivo (hubo un erro), quiero que se muestre, para ver que ha fallado
Dim Archivo As String
Archivo = "C:\AEAT\REDISTRIBUIR\ERRORES.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
'Si existe, abrimos el nuevo archivo para mostrar los errores del módulo de impresión
If fso.FileExists(Archivo) Then
ActiveWorkbook.FollowHyperlink Address:="C:\AEAT\REDISTRIBUIR\ERRORES.txt"
End If
'Detectado problema de compatibilidad: FileSystemObject da error con Windows XP. Se soluciona fácil habilitando referencia:
'Ir a Herramientas -> Referencias -> Microsoft Scripting Runtime (esto no es necesario en Windows 7)
'Aún despues de habilitar referencia: Microsoft Scripting Runtime, no funciona si no hacemos previamente la siguiente declaración (no necesaria en Windows 7 según mi experiencia):
Dim fso As Scripting.FileSystemObject
Ahora sí!!, prometo no comentar más (para no liar).
Probando, ocurre que la línea de declaración es mejor que sea así:
Dim fso As New FileSystemObject
Sub abrir_fichero()
'Aquí un ejemplo con Scripting.FileSystemObject que funciona tanto en Windows XP como en Windows 7:
'***Recordar añadir referencia: Herramientas -> Referencias -> marcamos en la lista "Microsoft Scripting Runtime"
'*****You need to add reference to the library: Microsoft Scripting RunTime.
Dim Archivo As String
Archivo = ThisWorkbook.Path & "\ejemplo.txt"
Dim fso As New FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(Archivo) Then
ActiveWorkbook.FollowHyperlink Address:=Archivo
Else: MsgBox "No existe el archivo ejemplo.txt en:" & ThisWorkbook.Path
End If
End Sub
Muchas gracias, me sirvió mucho
Muchas gracias Oriol Garrote, debemos valorar las cosas simples y funcionales como tu ejemplo. Saludos
Otra opción es usar Dir$("archivo.ext")
:)
If Len(Dir("c:\Instructions.doc")) = 0 Then
Msgbox "This file does NOT exist."
Else
Msgbox "This file does exist."
End If
sac longchamp pas cher
ugg boots
jordan shoes
ed hardy sale
gucci uk
louis vuitton factory outlet
vans outlet store
the north face outlet
coach outlet
michael kors purses
canada goose outlet
ralph lauren outlet
coach factory outlet
ugg outlet
coach outlet
louis vuitton outlet
ray ban sunglasses
ralph lauren outlet
ugg outlet
canada goose outlet
clb1113
nike factory outlet
longchamp
coach outlet online
coach outlet online
true religion jeans
ray ban
basketball shoes
ugg boots
pandora rings
air max
nike factory outlet
longchamp
coach outlet online
coach outlet online
true religion jeans
ray ban
basketball shoes
ugg boots
pandora rings
air max
nike factory outlet
longchamp
coach outlet online
coach outlet online
true religion jeans
ray ban
basketball shoes
ugg boots
pandora rings
air max
201712.1chenjinyan
burberry outlet
jordans
uggs
ai max
tommy hilfiger pas cher
converse all stars
nike air
prada handbags
michael kors
rolex watches
2018.1.8chenlixiang
supreme clothing
uggs outlet
ralph lauren
coach factory outlet online
uggs clearance
cheap ugg boots
coach outlet store
moncler jackets
fitflops sale clearance
ray ban sunglasses discount
20180115yuanyuan
kobe 11
new balance
longchamp outlet
basketball shoes
belstaff jackets
michael kors outlet
flops
ralph lauren
kevin durant shoes
nike outlet
chenlina20180406
ray ban
nike air max 97
nike free
breitling watches
gucci outlet
new balance sandals
dak prescott jerseys
supra shoes
nike mercurial
nike outlet
hzx20180529
jordan
clarks shoes
new balance shoes
miu miu shoes
fendi
nike air max
ray ban sunglasses
mizuno
pandora
nike air force
2018.6.15chenlixiang
nike air max 270
retro jordans
lebron 13
kobe sneakers
birkin bag
moncler jackets
persol sunglasses
reebok classic shoes
nike air max
ray ban
victoria's secret
bape
clarisonic
chanel handbags
maillot de foot
hermes uk
chenlina20180703
jerseys from china
coach outlet
oakley sunglasses
arcteryx jacket
ugg outlet
pandora charms
michael kors outlet
camel shoes
alife clothing
diesel jeans
chanyuan2018.08.03
soccer jerseys
pasotti ombrelli
polo outlet
levi jeans
kate spade outlet
balenciaga
kate spade outlet
adidas outlet
north face outlet
nike outlet
201811.7chenjinyan
Excelente ejemplo. Gracias
The article is very interesting. And I also want to share articles about health, I'm sure this will be useful. Read and share it. Thank you very much :)
Obat Migrain Tradisional
Cara Menghilangkan Benjolan di Kelopak Mata
Publicar un comentario