2016-01-29 1 views
0

J'utilise un complément pour rationaliser la création d'un rapport à partir de données brutes disponibles dans une feuille de calcul. Les données brutes utilisées pour être disponibles sont un fichier .xlsx, où il est maintenant disponible en .csv.VBA: Accès à la date de création d'un .csv

Dans le cadre du suivi d'où proviennent les données, j'utilise le code suivant pour accéder à la date de création de la feuille de calcul.

Dim ReportBook as Workbook 
Dim DataBook as Workbook 

Set ReportBook = Workbooks("Report.xlsx") 
Set DataBook = Workbooks("Data.csv") 

With ReportBook.Worksheets("Admin") 
    .Cells(1, 1) = Format(DataBook.BuiltinDocumentProperties("Creation Date"), "dd/mm/yyyy hh:mm") 
End With 

J'ai vérifié que les deux ReportBook et DataBook sont correctement se référant à leurs fichiers prévus.

Lorsque j'ai essayé d'utiliser le fichier .csv comme DataBook j'ai eu à la fois une erreur Automation et une erreur Unspecified. Je peux voir cela étant lié au fait que DataBook est maintenant un .csv plutôt qu'un .xlsx. Des idées pourquoi?

Répondre

3

Il échoue probablement car un fichier CSV ne contient pas les mêmes métadonnées qu'un bon classeur Excel. Essayez d'utiliser le FileSystemObject qui fait partie de la bibliothèque de scripts à la place:

http://www.mrexcel.com/forum/excel-questions/73458-read-external-file-properties-date-created-using-visual-basic-applications.html

Edit:

Une version du code indiqué dans le lien suivant:

Sub Test() 
    MsgBox CreationDate(Workbooks("Data.csv").FullName) 
End Sub 

Public Function CreationDate(FullPath As String) As Date 
    CreationDate = CreateObject("Scripting.FileSystemObject").GetFile(FullPath).DateCreated 
End Function 
+0

Bonne observation au sujet de la métadonnées, et une bonne suggestion pour une solution de contournement. –

+1

Je me demande toujours si le lien est suffisant car il peut être supprimé (ok, avec MrExcel ce ne sera probablement pas le cas) ou s'il faut poster un échantillon du code. J'espère que cela ne vous dérange pas @ Steveo40 si je viens d'ajouter une version du code à votre réponse - pas de point d'ajouter une réponse distincte en disant la même chose. –

+0

Fair point Darren. Merci pour l'édition. – steveo40