通过VBA -shell执行CMD命令

时间:2017-09-13 12:29:25

标签: vba excel-vba shell excel

以下是txt文件中可用的示例数据

enter image description here

我想在另一个文件中提取数据,其中Sr no为1。

请建议我执行CMD命令的VBA代码并将数据分成另一个txt文件。我已经搜索了互联网,并通过使用 Shell("")了解它是可能的。帮助我实现上述目标。

我的txt文件(即file3)在Z:\ drive中可用。

通过以下代码我可以打开cmd命令窗口

Sub macro()
Call Shell("cmd.exe", vbNormalFocus)
End Sub

2 个答案:

答案 0 :(得分:0)

Call Shell(,)命令用于加载CMD。

如果要通过VBA从CMD加载文件,可以使用如下内容:

Sub Open_CPT()
    Dim Loc As String
    Loc = "Z:/#CPT.bat"
    Call Shell(Loc, 1)
End Sub

这将打开该位置的文件或项目。

根据您想要分割/分割数据的方式,您可能希望使用Excel / VBA的本机功能打开文件并使用空格/制表符/等分隔。然后,您可以根据需要将其另存为.txt文件。

答案 1 :(得分:0)

感谢您的指导,根据 Dave 的说明,我在FileSystemObject的帮助下开发了以下代码 请找到以下解决方案。

Sub VBA()
Dim fr, t As String
Dim s As String

ReDim arr(500) As String
ReDim arri(500) As String

Dim i As Long
i = 0
ii = 0
Dim n As Integer


Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

fr = "z:\file3.txt"

Set oFS = fso.OpenTextFile(fr)


Do While Not oFS.AtEndOfStream

arr(i) = oFS.ReadLine
sls = InStr(1, arr(i), 1, vbTextCompare)
If sls >= 1 Then
arri(ii) = arr(i)
ii = ii + 1
End If
i = i + 1
Loop

oFS.Close

n = FreeFile()

s = arri(0)
For ix = LBound(arri) + 1 To UBound(arri)
s = s & vbCrLf & arri(ix)
Next

Open "z:\file2.txt" For Output As #n
Print #n, s
End Sub