Script VBS pour ouvrir excel pour appeler une macro en échec

Merci d'avoir pris le time de lire, très léger sur les compétences de programmation ici. J'ai un script VBS qui ouvre un model Excel qui appelle une macro pour extraire des données à partir d'un file .txt. La macro dans Excel fonctionne correctement à la main, mais lors de l'utilisation du script, elle essaie de sélectionner tous les files dans la window de l'explorateur Windows. Je crois que le problème provient de l'ouverture du file .txt, car mes deux autres scripts vbs et les templates Excel fonctionnent bien lors de la saisie de données à partir de files .xls.

Mon script VBS:

Option Explicit Dim xlApp, xlBook Set xlApp = CreateObject("Excel.Application") 'xlApp.Visible = True Set xlBook = xlApp.Workbooks.Open("\\xyzpath\model name.xlsm") xlApp.Application.Wait(Now + TimeValue("0:00:5")) xlApp.Application.Run "macroName" xlBook.Close True xlApp.Quit Set xlBook = Nothing Set xlApp = Nothing WScript.Quit 

Ma macro excel:

 Sub updateData() 'Application.ScreenUpdating = False reloop: Dim ldate As Date Dim home, myPath, ldatefile, txtfile As Ssortingng Dim ldata As Integer Dim lrow As Integer Dim lcol As Integer Dim s As Variant ActiveWorkbook.Worksheets("Data").Activate 'Determine end of data set ldata = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column 'Determine date of last data set ldate = Cells(2, ldata - 14).Value home = ActiveWorkbook.Name 'Check if up to date, if yes then exit, if no then continue If ldate >= (Date - 1) Then Workbooks(home).Worksheets("Dashboard").Activate Application.ScreenUpdating = True 'MsgBox "Up to date." Exit Sub End If 'Specify the path to the folder and open data file myPath = "\\xyzpath\" & Year(ldate) & "\" & Year(ldate) & " " & Format(ldate + 1, "MM") & "\" & "data" & "\" & "Standard" & "\" txtfile = "data" & Format(ldate + 1, "YYYYMMDD") & ".txt" ldatefile = myPath & txtfile s = Shell("C:\Windows\System32\notepad.exe " & ldatefile, vbNormalFocus) AppActivate s 'Send keys of actions to Notepad SendKeys "^a" SendKeys "^h" SendKeys " " SendKeys "{Tab 5}" SendKeys "~" SendKeys "{Tab}" SendKeys "~" SendKeys "^a", True SendKeys "^c", True SendKeys "%{f4}", True SendKeys "{Tab}", True SendKeys "~", True 'Copy and paste required data Application.Wait DateAdd("s", 3, Now()) Workbooks(home).Worksheets("Data").Activate ActiveSheet.Range(Cells(1, ldata + 1), Cells(50, ldata + 16)).Activate Application.DisplayAlerts = False ActiveSheet.Paste Application.SendKeys "{Enter}", True Application.DisplayAlerts = True GoTo reloop End Sub 

Donc, comme je l'ai mentionné, je crois que l'erreur réside lors de l'utilisation du Shell pour ouvrir le file text, car lorsque je lance le script comme visible, je peux le voir essayer de saisir tout dans la window de l'explorateur Windows. J'ai essayé différentes façons d'activer la window .txt après l'ouverture, mais pas de chance en fonction des searchs de Google. Comment puis-je modifier soit la macro VBScript, soit la macro Excel, pour envoyer correctement les keys à l'application .txt et non à Windows Explorer? Toute aide ou consortingbution est grandement appréciée, et merci à tous pour ce que vous faites, j'ai eu beaucoup de succès en utilisant ces forums.

D'abord et avant tout: N'UTILISEZ PAS les SendKeys .
Deuxièmement: N'utilisez PAS SendKeys .

Utilisez FileSystemObject pour lire du text à partir de files:

 ... Set fso = CreateObject("Scripting.FileSystemObject") ldatefile = fso.BuildPath(myPath, txtfile) Set f = fso.OpenTextFile(ldatefile) Do Until f.AtEndOfStream l = f.Line v = Split(Replace(f.ReadLine, " ", ""), vbTab) For i = 0 To UBound(v) Workbooks(home).Worksheets("Data").Cells(l, ldata+i+1).Value = v(i) Next Loop f.Close ...