找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15953|回复: 1

[问题求助] 【已解决】VBS如何合并多个文本至Excel(xls)的各个sheet中?

[复制链接]
发表于 2014-8-28 22:30:34 | 显示全部楼层 |阅读模式
本帖最后由 elec 于 2014-8-29 08:12 编辑

假设当前有三个文本 aa.txt  bb.txt  cc.txt,文本的行数不定
将3文本合并至同一个Excel中:
将aa.txt的所有数据放在Excel的sheet1的第一列中,并把sheet1命名为aa
将bb.txt的所有数据放在Excel的sheet2的第一列中,并把sheet2命名为bb
将cc.txt的所有数据放在Excel的sheet3的第一列中,并把sheet3命名为cc
...

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-8-29 00:19:15 | 显示全部楼层
沙发~
  1. On Error Resume Next
  2. arrTxtFile = Array("aa.txt", "bb.txt", "cc.txt")
  3. txt2excel arrTxtFile

  4. Function txt2excel(ByVal arrTxtFile)

  5.         ' 创建 Excel 对象
  6.         Set objExcel = CreateObject("Excel.Application")
  7.         If Not Err.Number = 0 Then
  8.                 Msgbox "错误:无法创建 Excel 对象,你可能没有安装 Excel 。"
  9.                 Exit Function
  10.         End If

  11.         If Not objExcel.application.version >= 12.0 Then
  12.                 Msgbox "警告:请使用 Office 2007 以上版本。"
  13.         End If

  14.         ' 隐藏运行,屏蔽提示
  15.         objExcel.Visible = False
  16.         objExcel.DisplayAlerts = False

  17.         ' 添加工作表
  18.         Set objWorkBook = objExcel.Workbooks.Add
  19.         ' Delete objWorkbook.Sheet(1-2)
  20.         Do While objWorkBook.Worksheets.Count > 1
  21.                 objWorkBook.Worksheets(objWorkBook.Worksheets.Count).Delete
  22.         Loop
  23.         objWorkBook.Worksheets(objWorkBook.Worksheets.Count).Name = "TempTable"
  24.         For i = UBound(arrTxtFile) To 0 STEP -1
  25.                 objWorkBook.Worksheets.Add.Name = i+1
  26.         Next
  27.        
  28.         ' 向工作表写入 txt 文件内容
  29.         For i = 0 To UBound(arrTxtFile)
  30.                 AddRow2Sheet objWorkBook.Worksheets(i+1), arrTxtFile(i)
  31.         Next

  32.         '''' Delete Sheet 3
  33.     If objWorkBook.Worksheets.Count > 1 Then objWorkBook.Worksheets("TempTable").Delete
  34.        
  35.         ' 显示 Excel
  36.         objExcel.Visible = True
  37.         set objExcel = NoThing
  38.        
  39. End Function


  40. ' 向工作表写入 txt 文件内容
  41. Function AddRow2Sheet(ByRef objWorkSheet, ByVal FilePath)
  42.         Dim fso, objTxt, strLine
  43.         Set fso = CreateObject("Scripting.Filesystemobject")
  44.         If Not fso.FileExists(FilePath) Then Exit Function
  45.         ' 打开 Txt 文件,写入 Excel Sheet
  46.         Set objTxt = fso.OpenTextFile(FilePath, 1)
  47.         nLeft = 1 :  nTop = 1
  48.         nRow = 0  :  nCol = 0
  49.         Do Until objTxt.AtEndOfStream
  50.                 objWorkSheet.Rows(nTop + nRow).Insert
  51.                 objWorkSheet.Cells(nTop + nRow, nLeft + nCol).Value = objTxt.ReadLine
  52.                 nRow = nRow + 1
  53.         Loop
  54.         ' Sheet:重命名、名称冲突处理
  55.         bReName = True
  56.         strSheetName = Left(fso.GetFileName(FilePath), _
  57.                                                 Len(fso.GetFileName(FilePath)) - Len(fso.GetExtensionName(FilePath)) - 1)
  58.         For Each objWorkSheet2 In objWorkSheet.Application.ActiveWorkBook.WorkSheets
  59.                 If objWorkSheet2.Name = strSheetName Then bReName = False
  60.         Next
  61.         If bReName Then objWorkSheet.Name = strSheetName
  62.         objTxt.Close
  63. End Function
复制代码

评分

参与人数 1技术 +1 收起 理由
elec + 1 非常感谢~

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 16:57 , Processed in 0.028582 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表