Ayuda a Mejorar MacroFotos
Publicado por frany (42 intervenciones) el 21/12/2005 21:24:08
Buenas a todos.
Tengo una macro en excel para numerar fotos dependiendo del dia de creacion.
El problema se me plantea cuando he pasado fotos de un disco a otro o creo de un CD al disco duro y es que no me pone la fecha en que tome la foto sino en la que se paso al CD.
Empleo como parte del codigo este sub, pero lo uico que puedo acceder es a fecha de la ultima moidifcacion y no de creacion del archivo.
He visto sin embargo en XP que te pone en el explorador de carpetas la fecha de creacion de imagenes, pero esto no lo encuentro en codigo VBA
Alguien sabe ?
Gracias de antemano
La macro completa es esta:
Todo esto esta pensado para cuando tenemos una camara digital ya que te crea archivos del tipo pic1.jpg y claro cuando tenemos una archivo del mismo nombre lo que hace es machacar al existente aunque sen tomados en dias diferentes.
Espero que os guste y recibir la ayuda para mejorarla.
Public larchivo
Public modificado As Date
Public nnombre As String
Sub busqueda()
'***** numeracion fotos por Francisco Naranjo*****
Dim fecha As String
Dim final As String
Dim indice As String
Dim longitudarchivo
Dim prefijo As String
prefijo = InputBox("Prefijo?")
Set fs = Application.FileSearch
With fs
carpeta = .Application.ActiveWorkbook.Path
.LookIn = carpeta
.SearchSubFolders = True
.Filename = "*.jpg"
If .Execute(SortBy:=msoSortByLastModified, SortOrder:=msoSortOrderAscending, AlwaysAccurate:=True) > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
fichero = .FoundFiles(i)
ShowFile (fichero)
fin = Right(fichero, larchivo)
longitud = Len(fichero)
inicio = Left(fichero, longitud - larchivo)
indice = i
numero = indice / 10000
fin1 = Format(numero, "###.0000")
fin2 = Right(fin1, 4)
NombreViejo = fichero: NombreNuevo = carpeta & "\ordenados\" + prefijo + nnombre + "_" + fin2 + ".jpg"
Name NombreViejo As NombreNuevo
Next i
Else
MsgBox "There were no files found."
End If
End With
End Sub
Sub ShowFile(fichero)
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(fichero)
modificado = f.DateLastModified
nnombre = Format(modificado, "yyyy mm dd")
larchivo = Len(f.Name)
End Sub
Tengo una macro en excel para numerar fotos dependiendo del dia de creacion.
El problema se me plantea cuando he pasado fotos de un disco a otro o creo de un CD al disco duro y es que no me pone la fecha en que tome la foto sino en la que se paso al CD.
Empleo como parte del codigo este sub, pero lo uico que puedo acceder es a fecha de la ultima moidifcacion y no de creacion del archivo.
He visto sin embargo en XP que te pone en el explorador de carpetas la fecha de creacion de imagenes, pero esto no lo encuentro en codigo VBA
Alguien sabe ?
Gracias de antemano
La macro completa es esta:
Todo esto esta pensado para cuando tenemos una camara digital ya que te crea archivos del tipo pic1.jpg y claro cuando tenemos una archivo del mismo nombre lo que hace es machacar al existente aunque sen tomados en dias diferentes.
Espero que os guste y recibir la ayuda para mejorarla.
Public larchivo
Public modificado As Date
Public nnombre As String
Sub busqueda()
'***** numeracion fotos por Francisco Naranjo*****
Dim fecha As String
Dim final As String
Dim indice As String
Dim longitudarchivo
Dim prefijo As String
prefijo = InputBox("Prefijo?")
Set fs = Application.FileSearch
With fs
carpeta = .Application.ActiveWorkbook.Path
.LookIn = carpeta
.SearchSubFolders = True
.Filename = "*.jpg"
If .Execute(SortBy:=msoSortByLastModified, SortOrder:=msoSortOrderAscending, AlwaysAccurate:=True) > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
fichero = .FoundFiles(i)
ShowFile (fichero)
fin = Right(fichero, larchivo)
longitud = Len(fichero)
inicio = Left(fichero, longitud - larchivo)
indice = i
numero = indice / 10000
fin1 = Format(numero, "###.0000")
fin2 = Right(fin1, 4)
NombreViejo = fichero: NombreNuevo = carpeta & "\ordenados\" + prefijo + nnombre + "_" + fin2 + ".jpg"
Name NombreViejo As NombreNuevo
Next i
Else
MsgBox "There were no files found."
End If
End With
End Sub
Sub ShowFile(fichero)
Dim fs, f, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(fichero)
modificado = f.DateLastModified
nnombre = Format(modificado, "yyyy mm dd")
larchivo = Len(f.Name)
End Sub
Valora esta pregunta
0