Showing results 1 to 3 of 3

Thread: Individueller Archiv Export

  1. #1
    Join Date
    27.05.2008
    Posts
    49

    Default Individueller Archiv Export

    Hallo,

    zenon 6.51, Windows 7

    Ich exportiere via Zeitsteuerung täglich, kurz nach Mitternacht, die Daten des Vortages, als .txt-Datei. Soweit so gut.

    Aber, Kundenwünsche:
    - Dateien sollen gleich als .csv-Dateien abgespeichert werden.
    - Dateiname soll das Tagesdatum in Form JJJJ-MM-TT beinhalten (Datum der Tageswerte, also Vortag, nicht das "Speicherdatum").

    Kann dies via VBA realisiert werden, und wenn ja, bitte ich hiermit um Unterstützung bei der Umsetzung, da meine VBA-Kenntnisse sehr gering sind. Falls es eine andere Lösung gibt, wäre dafür ebenso dankbar!

    Herzlichen Dank für Euere Unterstützung!

    Gruß
    Martin

  2. #2
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    881

    Default Re: Individueller Archiv Export

    Nachfolgend ein kleines VBA Makro, welches dies durchführen sollte...
    -> natürlich ohne "Gewehr"

    - VBA Editor öffnen
    - unstehender VBA Code in thisProject einfügen
    - im VBA Editor die Referenz "Microsoft Scription Runtime" hinzufügen (wegen FileSystemObject notwendig.. )
    - Funktion "VBA Makro ausführen" anlegen und dieses VBA Makro auswählen
    - eine zweite Zeitsteuerung definieren (die obige Funktion hinzufügen und z.b. um 00:10 täglich ausführen lassen...

    Bei etwaigen Fehlern (z.B. Dateiname existiert schon) bzw. wenn die Datei erfolgreich umbenannt werden konnte, wird ein Eintrag in die CEL geschrieben.

    Gruß,
    Herbert

    'used references: Microsoft Scripting Runtime
    Option Explicit
    
    Public Sub renameExpArchives()
    
    Const strFileTypeOrg As String = "txt"
    Const strFileTypeNew As String = "csv"
    Dim strExportArvFilePath As String
    Dim strExportArvFileNameOrg As String
    Dim strExportArvFileNameNew As String
    Dim strArchiveShortName As String
    Dim strArchExpFileDate As String
    Dim obFSO As New FileSystemObject
    Dim obFile As File
    
    
        'get the file path of the exported archive files
        strExportArvFilePath = thisProject.ModulePath(tpPathExpArchives)
        
        'check if the folder exists
        If obFSO.FolderExists(strExportArvFilePath) = False Then
            'write message to CEL
            thisProject.Cel.WriteCelString ("Folder does not exist: " & strExportArvFilePath)
            Set obFSO = Nothing
            Exit Sub
        End If
    
        'activate errorhandling
        On Error GoTo errorhandler
        
        'loop through all files within the folder
        For Each obFile In obFSO.GetFolder(strExportArvFilePath).Files
            'get the file type (ignore upper/lower case)
            If UCase(obFSO.GetExtensionName(obFile)) = UCase(strFileTypeOrg) Then
                'check if the found text file is an exported archive file (18 characters)
                If Len(obFile.Name) = 18 Then
                    'get the file base name
                    strExportArvFileNameOrg = obFSO.GetBaseName(obFile.Path) & "." & strFileTypeOrg
                    strExportArvFileNameNew = obFSO.GetBaseName(obFile.Path)
                    'get the archive shortname (first 2 characters)
                    strArchiveShortName = Left(strExportArvFileNameNew, 2)
                    'get the date out of file name
                    strArchExpFileDate = "20" & Mid(strExportArvFileNameNew, 3, 2) & "." & Mid(strExportArvFileNameNew, 5, 2) & "." & Mid(strExportArvFileNameNew, 7, 2)
                    'now substract 1 day (file is created after midnight -> change to date before midnight)
                    strArchExpFileDate = DateAdd("d", -1, strArchExpFileDate)
                    'make the formatting againg
                    strArchExpFileDate = Format(strArchExpFileDate, "yyyy-m-d")
                    
                    'now construct the new file name
                    'i.e "A1_2011-11-29.csv"
                    strExportArvFileNameNew = strArchiveShortName & "_" & strArchExpFileDate & "." & strFileTypeNew
                    
                    'check if the file already exists within this folder with the same name
                    If obFSO.FileExists(obFSO.GetFolder(strExportArvFilePath).Path & "" & strExportArvFileNameNew) = True Then
                        'write message to CEL
                        thisProject.Cel.WriteCelString ("Renaming exported archive file " & strExportArvFileNameOrg & " failed! Filename already exists: " & strExportArvFileNameNew)
                    Else
                        'rename the file
                        obFile.Name = strExportArvFileNameNew
                        thisProject.Cel.WriteCelString ("Renaming exported archive file was successfully! New filename: " & strExportArvFileNameNew)
                    End If
                End If
            End If
        Next
        
        Set obFSO = Nothing
    
    errorhandler:
        If Err.Number <> 0 Then
            'write message to CEL
            thisProject.Cel.WriteCelString ("An error has occured: " & Err.Number & " - " & Err.Description)
        End If
    End Sub

  3. #3
    Join Date
    27.05.2008
    Posts
    49

    Default Re: Individueller Archiv Export

    Hallo Herbert,

    herzlichen Dank!

    Funktionierte sofort, auch ohne "Gewehr"!!!

    Gruß
    Martin

Similar Threads

  1. Alarm XML Export
    By stimpfig in forum VBA
    Replies: 6
    Last Post: 16th July 2014, 15:53
  2. Archiv in SQL-Datenbank auslagern
    By sniggi in forum zenon Service Engine Supervisor
    Replies: 1
    Last Post: 28th June 2011, 23:35
  3. Export CEL to SQL
    By skywalker in forum zenon Service Engine Supervisor
    Replies: 1
    Last Post: 14th September 2010, 12:24
  4. Export Historial to SQL
    By skywalker in forum zenon Service Engine Supervisor
    Replies: 4
    Last Post: 25th August 2010, 08:47
  5. Archiv Werteimport über VBA
    By Axel in forum VBA
    Replies: 1
    Last Post: 2nd April 2009, 10:55

Posting Rules

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •