IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

TDMS vers XLSX [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 28
    Par défaut TDMS vers XLSX
    Bonjour,

    Je veux convertir des fichiers tdms (Labview) en fichiers Excel.
    Je vais avoir beaucoup de fichiers a convertir, donc je veux faire une macro pour automatiser le processus.

    Pour pouvoir décrypter les fichiers, il faut utiliser l'add-on disponible ici :
    http://zone.ni.com/devzone/cda/epd/p/id/2944
    Et il y a un exemple de macro d'utilisation là :
    http://www.ni.com/white-paper/10207/en

    La macro proposée (macro 1) marche parfaitement. Mais elle demande d'ouvrir les fichiers un par un. J'ai essayé d'automatiser le processus, mais je ne parviens pas à mes fins.
    Si je mets un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call obj.Object.ImportFile(fileName)
    j'ai une erreur runtime 5.
    Si je mets un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open (fileName)
    Le fichier s'ouvre bien mais n'est pas converti, il n'est donc pas lisible.

    Je cherche donc comment combiner la conversion du fichier grâce à l'add-in, et l'ouverture automatique des fichiers.

    Merci

    Macro 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Sub TDMImport()
    'Get TDM Excel Add-In
    Dim obj As COMAddIn
    Set obj = Application.COMAddIns.Item("ExcelTDM.TDMAddin")
    obj.Connect = True
     
    'Confirm only importing "Description" properties for Root
    Call obj.Object.Config.RootProperties.DeselectAll
    Call obj.Object.Config.RootProperties.Select("Description")
     
    'Show the group count as property
    Call obj.Object.Config.RootProperties.Select("Groups")
     
    'Select all the available properties for Group
    Call obj.Object.Config.GroupProperties.SelectAll
     
    'Import custom properties
    obj.Object.Config.RootProperties.SelectCustomProperties = True
    obj.Object.Config.GroupProperties.SelectCustomProperties = True
    obj.Object.Config.ChannelProperties.SelectCustomProperties = True
     
    'Let the user choose which file to import
    Dim fileName
    fileName = Application.GetOpenFilename("TDM & TDMS (*.tdm;*.tdms),*.tdm;*.tdms")
    If fileName = False Then
     'User selected Cancel
    Exit Sub
    End If
     
    'Import the selected file
    Call obj.Object.ImportFile(fileName)
    'Workbooks.Open (fileName)
     
    'Record down the current workbook
    Dim Workbook As Object
    Set Workbook = ActiveWorkbook
     
            Workbook.SaveAs ("C:\Documents and Settings\bzm924\My Documents\post traitement\moyenne courant de commande\04_Traces\400bar\1.xlsx")
            Workbook.Close
    End Sub
    Macro 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Sub TDMImport(fileName As String)
    'Get TDM Excel Add-In
    Dim obj As COMAddIn
    Set obj = Application.COMAddIns.Item("ExcelTDM.TDMAddin")
    obj.Connect = True
     
    'Confirm only importing "Description" properties for Root
    Call obj.Object.Config.RootProperties.DeselectAll
    Call obj.Object.Config.RootProperties.Select("Description")
     
    'Show the group count as property
    Call obj.Object.Config.RootProperties.Select("Groups")
     
    'Select all the available properties for Group
    Call obj.Object.Config.GroupProperties.SelectAll
     
    'Import custom properties
    obj.Object.Config.RootProperties.SelectCustomProperties = True
    obj.Object.Config.GroupProperties.SelectCustomProperties = True
    obj.Object.Config.ChannelProperties.SelectCustomProperties = True
     
    'Let the user choose which file to import
    'Dim fileName
    'fileName = Application.GetOpenFilename(Dir)
    'If fileName = False Then
    ' User selected Cancel
    'Exit Sub
    'End If
     
    'Import the selected file
    'Call obj.Object.ImportFile(fileName)
    Workbooks.Open (fileName)
     
    'Record down the current workbook
    Dim Workbook As Object
    Set Workbook = ActiveWorkbook
     
            Workbook.SaveAs ("C:\Documents and Settings\bzm924\My Documents\post traitement\moyenne courant de commande\04_Traces\400bar\1.xlsx")
            Workbook.Close
    End Sub

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Je serais curieux de voir à quoi ressemble un fichier tdms ce dont je n'ai aucune idée.
    Pouvez-vous mettre un fichier tdms zippé en pièce jointe ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 28
    Par défaut Exemple tdms
    Bonjour,

    Voici un fichier TDMS.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Merci pour le fichier .tdms que j'ai téléchargé ainsi que le Addin dont vous indiquiez le lien.
    J'ai essayé de comprendre et j'arrive à monter le tdms dans un classeur Excel sur 2 onglets.
    Voilà comment j'ai procédér :

    Copiez le code suivant dans un module standard et vérifiez l'exactitude du chemin (voir l'instruction cernée par des ###)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub ImportTDM()
    Call GetTDM("c:\Voltage.tdms")  '### chemin à adapter ###
    End Sub
     
    Sub GetTDM(Chemin As String)
    Dim ComTDM As Object  'COMAddIn
    Dim TDM As Object     'ExcelTDMLib.TDMAddin
    Set ComTDM = Application.COMAddIns.Item("ExcelTDM.TDMAddin")
    ComTDM.Connect = True
    Set TDM = ComTDM.Object
    Application.ScreenUpdating = False
    TDM.ImportFile fileName:="" & Chemin & ""
    Application.ScreenUpdating = True
    End Sub
    Après adaptation du chemin, lancez la procédure ImportTDM.
    Dites moi si cela fonctionne chez vous.

    A plus.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 28
    Par défaut
    Bonjour,

    Votre code marche parfaitement, merci beaucoup.

    Par contre je ne comprends pas du tout la syntaxe de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TDM.ImportFile fileName:="" & Chemin & ""
    Pouvez me l'expliquer ?

    Par ailleurs, pour utiliser l'add-in, Excel a besoin que je sois en sessions administrateur sous Windows. Savez-vous si il est possible d'enlever cette requête ?

    Merci

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Par contre je ne comprends pas du tout la syntaxe de :
    TDM.ImportFile fileName:="" & Chemin & ""
    En premier lieu j'avais cette unique procédure (sans argument) qui fonctionnait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub GetTDM() 
    Dim ComTDM As Object  'COMAddIn
    Dim TDM As Object     'ExcelTDMLib.TDMAddin
    Set ComTDM = Application.COMAddIns.Item("ExcelTDM.TDMAddin")
    ComTDM.Connect = True
    Set TDM = ComTDM.Object
    Application.ScreenUpdating = False
    TDM.ImportFile fileName:="c:\Voltage.tdms"    
    Application.ScreenUpdating = True
    End Sub
    Par la suite, je me suis dit que pour traiter automatiquement plusieurs fichiers .tdms, il convenait de la transformer avec un argument ( Sub GetTDM(Chemin As String) ) pour pouvoir l'appeler, telle une fonction, à partir d'une autre procédure dans laquelle s'effectuerait une boucle énumérant tous les chemins des fichiers .tdms.
    J'ai constaté que l'instruction ( TDM.ImportFile fileName:=Chemin ) ne fonctionnait pas. J'en ai conclu que cette instruction interprétait le paramètre Chemin sans les double quotes. J'ai donc ajouté ces double quotes au devant et au derrière du paramètre et l'essai a été concluant, ce qui a corroboré mon intuition. Essayez de les retirer pour voir si vous constater le même dysfonctionnement chez vous.
    *****
    Par ailleurs, pour utiliser l'add-in, Excel a besoin que je sois en session administrateur sous Windows. Savez-vous si il est possible d'enlever cette requête ?
    Je ne sais pas du tout.
    Peut être peut-on transformer le code en passant par une référence à la dll qui se trouve chez moi dans C:\Program Files\National Instruments\Shared\TDM Excel Add-In\ExcelTDM.dll sans utiliser directement l'Addin
    Je vais essayer de refaire le code dans ce sens. Malheureusement, étant sur une machine personnelle et étant administrateur, je ne pourrai tester si cela fonctionne dans l'autre cas. Ce sera à vous de le faire et vous me direz le résultat.

    A plus donc.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-MAC 2011] Suppression message de confirmation (enregistrement xlsm vers xlsx)
    Par GreatTeacherOnizuka dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/03/2015, 17h08
  2. Conversion HTML vers XLSX
    Par elryo dans le forum Documents
    Réponses: 4
    Dernier message: 16/03/2015, 13h02
  3. TDMS vers XLSX
    Par maxdeveloppeur dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 03/04/2014, 16h17
  4. TDMS vers XLSM
    Par Piixx_e dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/11/2013, 14h23
  5. de xls vers xlsx
    Par erlerwade dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/04/2012, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo