2017-06-08 1 views
-1

J'ai quelques fichiers txt à importer dans Excel. Ces fichiers sont regroupés par date. J'ai enregistré la macro dans Excel où chaque fois que je dois changer le chemin d'accès au fichier pour chaque date en tant que ... \ files (date) \ filename.txt. Voici la macro:Transférer des variables de macros QTP/UFT vers Excel

Sub DataImport2() 
' 
' DataImport2 Macro 
' 
With ActiveSheet.QueryTables.Add(Connection:= _ 
     "TEXT;d:\testfiles\project1\20170528\filename.txt" _ 
     , Destination:=Range("$A$2")) 
'  .CommandType = 0 
     .Name = "filename.txt" 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .TextFilePromptOnRefresh = False 
     .TextFilePlatform = 437 
     .TextFileStartRow = 1 
     .TextFileParseType = xlDelimited 
     .TextFileTextQualifier = xlTextQualifierDoubleQuote 
     .TextFileConsecutiveDelimiter = False 
     .TextFileTabDelimiter = True 
     .TextFileSemicolonDelimiter = False 
     .TextFileCommaDelimiter = False 
     .TextFileSpaceDelimiter = False 
     .TextFileOtherDelimiter = "|" 
     .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _ 
     2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2) 
     .TextFileTrailingMinusNumbers = True 
     .Refresh BackgroundQuery:=False 
    End With 
End Sub 

Dans le test automatisé, UFT devrait choisir une date dans la page Web et comparer les données sur la page Web avec les données dans les fichiers pour cette date. La question est: Comment passer cette date de UFT à Excel et l'utiliser dans Excel comme chemin d'accès au fichier? Je suppose que ça devrait ressembler

..."TEXT;d:\testfiles\project1\(uft-passed-date)\filename.txt" _... 

les variables qui passent peut-être comme suit pourrait fonctionner, mais à partir d'Excel/côté macro comment dois-je les utiliser? J'ai essayé de copier ci-dessus macro à UFT, mais cela ne fonctionnait pas (erreur générale). travail sur UFT 12,52, IE11 et Office 16.

+0

Créer variable 'CHAINE' pour votre sous' DataImport2' passer le nom du fichier. Maintenant extraire la date de l'interface graphique en utilisant UFT, puis [exécutez votre macro Excel de UFT] (https://www.google.com/search?q=run+excel+macro+using+vbscript&oq=run+excel+macro+using+ vbscript & aqs = chrome..69i57j0l4.11008j0j7 & sourceid = chrome & ie = UTF-8). – ManishChristian

+0

@ManishChristian dans UFT J'ai 'vDate = Navigateur (" "). Page (" "). WebElement (" "). GetROProperty (" ")' Je peux exécuter la macro comme 'objExcel.Run" DataImport2 ", "vDate" ' Dans Excel, comment la macro peut-elle obtenir cela? Qu'est-ce qui devrait être modifié dans la macro enregistrée? Thnx) – Salek

+0

vérifier ma réponse. – ManishChristian

Répondre

0

d'abord modifier votre macro comme cette option pour ajouter le paramètre de date:

Sub DataImport2(dDate as String) 
' 
' DataImport2 Macro 
' 
With ActiveSheet.QueryTables.Add(Connection:= _ 
     "TEXT;d:\testfiles\project1\" & dDate & "\filename.txt" _ 
     , Destination:=Range("$A$2")) 

Ensuite, dans UFT, capturer la date de GUI et le convertir au format de votre nom de fichier (si nécessaire).

Et enfin exécutez votre macro de UFT comme ceci:

Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open("ExcelFilePath\FileName.xlsm", 0, True) 
objExcel.Visible = False 
objExcel.DisplayAlerts = False 
objExcel.Run "DataImport2", sDate 'sDate variable holding date 
objExcel.Application.Quit 
Set objWorkbook = Nothing : Set objExcel = Nothing 
+0

Thnx beaucoup. Mais maintenant je reçois une erreur "La macro peut ne pas être disponible dans ce classeur ou toutes les macros peuvent être désactivées") Macro est activé dans Excel, est dans le module. "Accès sécurisé au projet VBA" est sélectionné. Lorsque je lance le marco depuis Excel, cela fonctionne – Salek

+0

Où stockez-vous votre macro, est-ce au niveau du module ou de la feuille? – ManishChristian

+0

Il est stocké dans le module – Salek

0

Vous devez modifier la macro à ce afin qu'il puisse prendre la picked date

Sub DataImport2(sFilePart As String) 
    With ActiveSheet.QueryTables.Add(Connection:= _ 
      "TEXT;d:\testfiles\project1\" & sFilePart & "\filename.txt" _ 
      , Destination:=Range("$A$2")) 
    ' 
    '~~> Rest of the code 
    ' 
End Sub