批量创建文本文件,每个新文件从两个不同的文本文件中提取不同的文本

时间:2014-03-30 15:53:10

标签: excel vba batch-file cmd

我正在尝试从2个模板文本文件创建多个文本文件;但是,在每个新生成的文件中,应该添加一个从excel行拉出的新文本行。

例如:

template1文本文件内容

Line1
Line2

Line 3

template2文本文件内容

Line4

Line5

Excel文件有几行,每行都有不同的文本,例如

Row1text
Row2text
Row3text

所以我需要做的是从Excel行中提取文本并根据文本模板文件将其添加到新生成的文本文件中

所以结果会像这样

GeneratedText1.txt

Line1
Line2

Line 3

Row1text

Line4

Line5

GeneratedText2.txt

Line1
Line2

Line 3

Row2text

Line4

Line5

GeneratedText3.txt

Line1
Line2

Line 3

Row3text

Line4

Line5

excel中有多行,应该生成很多文本文件。新文件的名称也应该在某处预定义。最好的方法是什么?一些命令行会有帮助吗?

以下是我目前管理的内容:

@echo off

setlocal EnableDelayedExpansion

set i=1
for /f %%l in (input.cvs) do (
  >GeneratedText!i!.txt type template1.txt
  >>GeneratedText!i!.txt echo %%l
  set /a i+=1
)

endlocal

2 个答案:

答案 0 :(得分:0)

以下代码将两个文本模板文件与Excel工作表中的数据合并。您需要确定单元格范围,以及如何命名输出文件。

Option Explicit

Sub Create_Text_Files()
Dim strLineIn   As String
Dim lRow        As Long

    ' Determine Excel Range (Rows & Colums!!
    For lRow = 2 To 5          '<<< Set your Range!!
        Close #1    ' Just in case left open during testing
        Close #2
        Close #3
        Open "C:\temp\TemplateFile1.txt" For Input As #1
        Open "C:\temp\TemplateFile2.txt" For Input As #2
        'Determine how to name your output files.
        Open "C:\temp\TemplateOut" & lRow & ".txt" For Output As #3         ' Set Output File Name

        'Write out TemplateFile1.txt
        Do While Not EOF(1)         ' Loop until end of file
            Line Input #1, strLineIn
            If EOF(1) Then Exit Do      ' Avoid blank line
            Print #3, strLineIn
        Loop
        Close #1

        'Get your Excel data and write out
        Print #3, Cells(lRow, 1)            ' Change if multi column
        'Write out TemplateFile2.txt
        Do While Not EOF(2)         ' Loop until end of file
            Line Input #2, strLineIn
            If EOF(2) Then Exit Do      ' Avoid blank line
            Print #3, strLineIn
       Loop
       Close #2
       Close #3
    Next lRow
End Sub

答案 1 :(得分:0)

这应该创建包含两个模板文件的文件以及它们之间的excel.txt文件中的一行,如图所示。

文件名来自excel行,不应包含毒药字符。

这是未经测试的:

@echo off
for /f "delims=" %%a in (excelfile.txt) do (
   type "template1.txt" >"%%a.txt"
      >>"%%a.txt" echo(
      >>"%%a.txt" echo(%%a
      >>"%%a.txt" echo(
   type "template2.txt" >>"%%a.txt"
)