Excel 使用VBScript从TXT格式文件填充现有XLSX
我需要从六个TXT格式文件中填充一个现有的XLSX格式文件 在XLSX格式文件中,有预定义列的名称 TXT格式文件用管道符号分隔 我需要跳过每个TXT文件的前两行 我尝试了这段代码,得到的错误是: VBscript错误输入超过文件结尾Excel 使用VBScript从TXT格式文件填充现有XLSX,excel,vbscript,Excel,Vbscript,我需要从六个TXT格式文件中填充一个现有的XLSX格式文件 在XLSX格式文件中,有预定义列的名称 TXT格式文件用管道符号分隔 我需要跳过每个TXT文件的前两行 我尝试了这段代码,得到的错误是: VBscript错误输入超过文件结尾 ArrE=数组(“D1”、“D2”、“D3”、“D4”、“D5”、“D6”) 对于I=0至UBound(ArrE) 设置objTextFile=objFSO.OpenTextFile(“C:\”&ArrE(I)和“\u A3.txt”,用于读取) objTextF
ArrE=数组(“D1”、“D2”、“D3”、“D4”、“D5”、“D6”)
对于I=0至UBound(ArrE)
设置objTextFile=objFSO.OpenTextFile(“C:\”&ArrE(I)和“\u A3.txt”,用于读取)
objTextFile.ReadAll
lineCount=objTextFile.Line
objTextFile.Close
设置objTextFile2=objFSO.OpenTextFile(“C:\”&ArrE(I)和“\u A3.txt”,用于读取)
i=0
当我数数的时候
objTextFile2.ReadLine
i=i+1
温德
设置objExcel=CreateObject(“Excel.Application”)
objExcel.Application.Visible=True
设置objWorkbook=objExcel.Workbooks.Open(“C:\PAB\u A3\u def\u REV01.xlsx”)
设置objWorksheet=objWorkbook.worksheet(1)
j=1
直到objTextFile2.AtEndOfStream
line=objTextFile2.ReadLine
objWorksheet.Cells(1,j).Value=行
j=j+1
环
下一个
更新#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
ArrE=数组(“D1”、“D2”、“D3”、“D4”、“D5”、“D6”)
对于I=0至UBound(ArrE)
设置objTextFile=objFSO.OpenTextFile(“C:\”&ArrE(I)和“\u A3.txt”,用于读取)
objTextFile.ReadAll
lineCount=objTextFile.Line
objTextFile.Close
设置objTextFile2=objFSO.OpenTextFile(“C:\”&ArrE(I)和“\u A3.txt”,用于读取)
i=0
而我
该解决方案基于在目标xlsx文件中如何安排数据的假设。请根据您的要求修改
假设:
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
使用临时数据测试脚本。如有问题,请随时联系。文件的最后一行是否以CrLf结尾?(使用适当的编辑器,如notepad2或npp进行检查)将TXT作为普通工作簿打开,删除前2行,然后复制/粘贴。我不明白为什么要在
objTextFile2
的行中重复两次。第二个循环可能会失败,因为指针已经到达蒸汽末端。当我初始化为0时,请尝试将我更改为时的行
。@AhmedAU非常感谢您的帮助,请参阅我第一个问题中的更新#01。现在我在脚本上没有错误,但是XLSX文件是空的。excel文件是空的,因为objTextFile2
的第二次迭代不起作用,因为指针在第一次迭代中已经到达了文件的末尾(我认为第一次循环什么也没做)。发布一个关于如何在目标Xlsx文件中安排数据的假设答案。
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