使用 VBScript 从 TXT 格式文件填充现有的 XLSX

Populate an existing XLSX from TXT format file using VBScript

我需要从六个 TXT 格式文件.

中填充一个现有的 XLSX 格式文件

XLSX 格式文件 上有预定义列的名称。

TXT格式文件竖线分隔| 符号.

我需要跳过每个 TXT 文件的前两行。

我试过这段代码,得到的错误是:

VBscript error input past end of file

 ArrE = Array("D1", "D2", "D3", "D4", "D5", "D6")

 For I = 0 To UBound(ArrE)

   Set objTextFile = objFSO.OpenTextFile("C:\" & ArrE(I) & "_A3.txt", ForReading)

   objTextFile.ReadAll
   lineCount = objTextFile.Line
   objTextFile.Close

   Set objTextFile2 = objFSO.OpenTextFile("C:\" & ArrE(I) & "_A3.txt", ForReading)

   i = 0
   while i < lineCount
     objTextFile2.ReadLine
     i = i+1
   wend

   Set objExcel = CreateObject("Excel.Application")
   objExcel.Application.Visible = True
   Set objWorkbook = objExcel.Workbooks.Open("C:\PAB_A3_def_REV01.xlsx")
   Set objWorksheet = objWorkbook.Worksheets(1)

   j = 1
   Do Until objTextFile2.AtEndOfStream
     line = objTextFile2.ReadLine
     objWorksheet.Cells(1, j).Value =  line
     j=j+1
   Loop  

 Next

更新#01

ArrE = Array("D1", "D2", "D3", "D4", "D5", "D6")

 For I = 0 To UBound(ArrE)

   Set objTextFile = objFSO.OpenTextFile("C:\" & ArrE(I) & "_A3.txt", ForReading)

   objTextFile.ReadAll
   lineCount = objTextFile.Line
   objTextFile.Close

   Set objTextFile2 = objFSO.OpenTextFile("C:\" & ArrE(I) & "_A3.txt", ForReading)

   i = 0
   while i < lineCount -1
     objTextFile2.ReadLine
     i = i+1
   wend

   Set objExcel = CreateObject("Excel.Application")
   objExcel.Application.Visible = True
   Set objWorkbook = objExcel.Workbooks.Open("C:\PAB_A3_def_REV01.xlsx")
   Set objWorksheet = objWorkbook.Worksheets(1)

   j = 1
   Do Until objTextFile2.AtEndOfStream
     line = objTextFile2.ReadLine
     objWorksheet.Cells(1, j).Value =  line
     j=j+1
   Loop  

 Next

解决方案基于假设数据在目标 xlsx 文件中的排列方式。请根据您的要求修改它。

假设:

  1. 代码是 运行 来自 vbscript (vbs) 文件。
  2. 每个文件的第3行到最后一行的数据在目标文件中按行排列,下一个文本文件的数据放在最后一行的下面
  3. 每一行的数据要用分隔符|分隔并分布在从 1
  4. 开始的列中

问题修改:

  1. 目标文件只能打开一次。所以open语句移出了Loop
  2. 发现不需要多次迭代/读取。所以单次迭代用于收集数据,从第 3 行开始。

修改后的代码:

Set objFSO = CreateObject("Scripting.FileSystemObject")
ArrE = Array("D1", "D2", "D3", "D4", "D5", "D6")
Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Visible = True
Set objWorkbook = objExcel.Workbooks.Open("C:\PAB_A3_def_REV01.xlsx")
Set objWorksheet = objWorkbook.Worksheets(1)
Rw = 0
 For i = 0 To UBound(ArrE)
   Set objTextFile = objFSO.OpenTextFile("C:\" & ArrE(i) & "_A3.txt", 1) 'ForReading)
   j = 1
   Do Until objTextFile.AtEndOfStream
     Line = objTextFile.ReadLine
        If j > 2 Then        
        arr = Split(Line, "|")

              If UBound(arr) >= 0 Then
              Rw = Rw + 1
              End if

            For col = 0 To UBound(arr)
            objWorksheet.Cells(Rw, col + 1).Value = arr(col)
            Next 
        End If
     j = j + 1
   Loop
 objTextFile.close
 Next

使用临时数据测试脚本。有问题随时联系。