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



我需要从六个TXT 格式文件中填充现有的XLSX 格式文件

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

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

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

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

VB脚本错误输入超过文件末尾

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. 每行的数据将使用分隔符 | 拆分,并分布在从 1 开始的列中

修改的问题:

  1. 目标文件只能打开一次。所以打开语句移出了循环
  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

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

最新更新