将文本文件的每一行读入VB

时间:2013-06-27 10:33:46

标签: excel text excel-vba output worksheet-function vba

我正在寻找自动化我目前必须完成的一些工作。 我目前收到一些机器名称,我必须从配置文件中查询unix,但我必须修改我每天收到的列表以生成命令。我正在寻找一种自动化方法,所以我可以将这些名称存储在一个文本文件中,并在vb中运行一个脚本,该脚本将自动生成我需要在unix中运行的命令。

例如文本文件(machines.text)可能包含以下内容:

ABCDE1234 ADEFR1234 BCDFREWE1

每一行都是机器名称,但我要求将其更改为小写并获得以下命令输出:

grep -i abcdef1234 */*.cfg
grep -i adefr1234 */*.cfg 
grep -i bcdfrewe1 */*.cfg

我有时每天会收到数百个,所以我希望缩短流程,因为我可以使用我收到的原始文件,而不必手动完成。

任何建议都会受到赞赏,即使有人有VB和excel的替代品。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以在Excel中打开列表,以便要操作的所有数据都进入A列,然后使用下面的公式在B,C,D列中创建UNIX命令:

第一个命令

="grep -i " &LOWER(LEFT(A:A,FIND(" ",A:A)))  & " */*.cfg"

第二个命令

="grep -i "&LOWER(LEFT(TRIM(MID(A:A,FIND(" ",A:A),LEN(A:A))),FIND(" ",TRIM(MID(A:A,FIND(" ",A:A),LEN(A:A))))))&" */*.cfg"

THIRD命令

="grep -i "&LOWER(MID(RIGHT(A:A,LEN(A:A)-FIND(" ",A:A)),FIND(" ",RIGHT(A:A,LEN(A:A)-FIND(" ",A:A))),LEN(RIGHT(A:A,LEN(A:A)-FIND(" ",A:A)))))&" */*.cfg"

在A列中操作所有texdt之后,请复制B,C,D列中的公式

Below is a screenshot showing the three result commands 然后你可以运行下面的代码(可能需要调整)来创建你的输出:

Sub getCommands()

Dim oFso As New Scripting.FileSystemObject
Dim oWriteFile As TextStream

Dim oRange As Range

Set oWriteFile = oFso.CreateTextFile("C:\Commands.txt", True)

Set oRange = Range("B2")

Do Until oRange.Text = ""

    With oWriteFile
        .WriteLine oRange.Text
        .WriteLine oRange.Offset(0, 1).Text ' second command
        .WriteLine oRange.Offset(0, 2).Text ' third command
    End With
    Set oRange = oRange.Offset(1, 0)
Loop
oWriteFile.Close

End Sub