windows - Kører en batch-fil i en given mappe ved hjælp af VBA

Indlæg af Hanne Mølgaard Plasc

Problem



Når jeg går til min batchfils placering og åbner den, fungerer batchfilen. Min batchfil er simpelthen:


cd .data
dir/b/o:n > names.txt


Som du kan se, er jeg i min nuværende mappe og flytter til undermappen 'data' og håndterer alle navne og opretter en fil, der hedder names.txt.


Når jeg siger


shell "location of file" 


det åbner batchfilen, men den mappe, der er standard til, er C:my documents, så mine kommandoer vil ikke fungere, fordi den ikke kan finde undermappen. Jeg vil have, at dette er en dynamisk batchfil, og derfor skal jeg skriv noget i VBA, der åbner batchfilen under sin nuværende mappe eller noget deraf.


Hvordan gør jeg det her?

Bedste reference


Følgende skal give dig den effekt du søger.


Min testkode er:


Option Explicit
Sub TryShell()

  Dim PathCrnt As String

  PathCrnt = ActiveWorkbook.Path
  Call Shell(PathCrnt & "TryShell.bat " & PathCrnt)

End Sub


Min testbatchfil hedder TryShell.bat og indeholder:


cd \%1
dir *.* >TryShell.txt


Jeg har lagt min batch-fil i samme mappe som arbejdsbogen, der indeholder min makro.


Erklæringen PathCrnt = ActiveWorkbook.Path indstiller PathCrnt til navnet på den mappe, der indeholder den aktive arbejdsbog. Du kan indstille PathCrnt til det bibliotek, du har brug for.


Når jeg kalder Shell, har jeg tilføjet PathCrnt som en parameter.


I min batchfil indstiller jeg den nuværende mappe til \%1, som er den første parameter.


Kommandoen dir fungerer som jeg ønsker, fordi den nuværende mappe er min mappe og ikke systemets standardmappe.


Håber dette er klart.

Andre referencer 1


C: \ Mine dokumenter er nok den mappe, hvor dit speadsheet er placeret. Hvis du tilføjer


ChDir "C:TheFolderWhereYourBatchIs"


før du starter din Shell-kommando, og det skal fungere ...


Alternativt kan du ændre din batchfil til at bruge en absolut mappe i stedet for en relativ en.