2017-06-08 2 views
-1

Ich habe einige TXT-Dateien in Excel importieren. Diese Dateien sind nach Datum gruppiert. Ich habe Makro in Excel aufgezeichnet, wo ich jedes Mal den Pfad zur Datei für jedes Datum als ... \ files (date) \ filename.txt ändern muss. Hier ist das Makro:Übergabe von Variablen aus QTP/UFT zu Excel-Makros

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 

In automatisiertem Test sollte UFT ein Datum in der Homepage wählen und vergleicht Daten auf der Webseite mit Daten in Dateien für dieses Datum.

Frage ist: Wie übergeben Sie das ausgewählte Datum von UFT nach Excel und verwenden Sie es in Excel als Pfad zur Datei? Ich denke, es wie

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

Vielleicht vorbei Variablen wie folgt funktionieren könnte aussehen sollte, aber aus Excel/Makro-Seite, wie sollte ich sie verwenden?

objExcel.Run "macroname", "params1", "param2" 

Ich habe versucht, über Makro zu UFT zu kopieren, aber es hat nicht funktioniert (Allgemeiner Fehler). Arbeiten an UFT 12.52, IE11 und Office 16.

+0

erstellen 'String' Variable für Ihre Unter' DataImport2' Dateinamen zu übergeben. Extrahieren Sie jetzt das Datum aus der GUI mit UFT und führen Sie dann [Ihr Excel-Makro von UFT ausführen] aus (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 in UFT Ich habe 'vDate = Browser (" "). Seite (" "). WebElement (" "). GetROProperty (" ")' Ich kann das Makro als 'objExcel.Run" DataImport2 "ausführen, "vDate" ' In Excel, wie das Makro das bekommen kann? Was sollte im aufgezeichneten Makro geändert werden? Thnx) – Salek

+0

überprüfe meine Antwort. – ManishChristian

Antwort

0

Zuerst ändern, wie dies Ihr Makro Datum Parameter hinzuzufügen:

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

Dann in UFT, erfassen Sie das Datum von der GUI und konvertieren Sie es in das Format Ihres Dateinamens (falls erforderlich).

Und schließlich Ihr Makro von UFT wie folgt ausführen:

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 viel. Aber jetzt bekomme ich Fehler "Das Makro ist möglicherweise nicht verfügbar in dieser Arbeitsmappe oder alle Makros sind möglicherweise deaktiviert") Makro ist in Excel aktiviert, ist in Modul. "Vertrauensmäßiger Zugriff auf das VBA-Projekt" ist ausgewählt. Wenn ich den marco aus Excel starte, funktioniert es – Salek

+0

Wo speichern Sie Ihr Makro, ist in Modul oder Blatt Ebene? – ManishChristian

+0

Es ist in Modul – Salek

0

Sie müssen das Makro, das zu ändern, damit es die picked date nehmen

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 
Verwandte Themen