中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » vbs对excel操作遇到一问题.不知如何解决.!
作者:
标题: vbs对excel操作遇到一问题.不知如何解决.! 上一主题 | 下一主题
piziliu2004
中级用户

过度热情


积分 321
发帖 139
注册 2006-3-21
状态 离线
『楼 主』:  vbs对excel操作遇到一问题.不知如何解决.!

我这里有一目录c:\excel 下有100个文件名不同但数据格式相同的表.
我想把100个excel表里面的第三列复制到一个新的excel test.xls中.
附件result01.xls是100个其中的一个范例.

谢谢.!

附件 1: result01.zip (2006-8-18 15:37, 8.86 K, 下载附件所需积分 1 点 ,下载次数: 7)
2006-8-18 15:37
查看资料  发送邮件  发短消息 网志  OICQ (16750931)  编辑帖子  回复  引用回复
piziliu2004
中级用户

过度热情


积分 321
发帖 139
注册 2006-3-21
状态 离线
『第 2 楼』:  

在网上查相关信息,好象是说用VBS缺少一些库函数支持不能实现, 好象的用VB,VBA才行..! 是真的么? 难道VBS的应用就这么狭小?

2006-8-18 17:04
查看资料  发送邮件  发短消息 网志  OICQ (16750931)  编辑帖子  回复  引用回复
electronixtar
铂金会员





积分 7493
发帖 2672
注册 2005-9-2
状态 离线
『第 3 楼』:  

hmm,只知道调用的是 Excel.Application 对象




C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
2006-8-18 17:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 4 楼』:  



  Quote:
『第 2 楼』:  

在网上查相关信息,好象是说用VBS缺少一些库函数支持不能实现, 好象的用VB,VBA才行..! 是真的么? 难道VBS的应用就这么狭小?

vbs本身其实并没有什么太强大的功能,脚本嘛,主要的用途还是用来自动完成需要重复或监管的工作,至于那么多的功能,其实都是依靠系统以及应用程序提供的支持。所以你实现不了某个功能不能说VBS不行,应该说你的系统或者应用程序没有相应的功能。
关于用VBS操作Excel,如楼上所述,需要调用Excel.Application 对象,下面是摘自《The Portable Script Center》中的一篇《Read an Excel Spreadsheet》,你可以参考一下:
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open _
    ("C:\Scripts\New_users.xls")

intRow = 2

Do Until objExcel.Cells(intRow,1).Value = ""
    Wscript.Echo "CN: " & objExcel.Cells(intRow, 1).Value
    Wscript.Echo "sAMAccountName: " & objExcel.Cells(intRow, 2).Value
    Wscript.Echo "GivenName: " & objExcel.Cells(intRow, 3).Value
    Wscript.Echo "LastName: " & objExcel.Cells(intRow, 4).Value
    intRow = intRow + 1
Loop

objExcel.Quit
       
另外我印象中利用ADODB.Connection对象也是可以读取excel的,不过由于没有接触过excel,一直没有尝试过,你可以自行搜索一下。

2006-8-18 22:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
piziliu2004
中级用户

过度热情


积分 321
发帖 139
注册 2006-3-21
状态 离线
『第 5 楼』:  

谢谢各位!!!.Excel.Application之前也有所了解.! 只是在网上没找到Excel.Application
库的更多用法.! 如新建一个excel,或新建一个worksheet.判断一列结尾符(考虑到一列可能中间有空格。情况的判断。),等。!。
呵呵。! 算了我还是用vb去实现把。
对了问一下electronixtar    ”hmm“是什么网络术语?呵呵。

2006-8-20 09:52
查看资料  发送邮件  发短消息 网志  OICQ (16750931)  编辑帖子  回复  引用回复
mobo
初级用户





积分 73
发帖 30
注册 2006-9-18
状态 离线
『第 6 楼』:  VBS可以对XLS文件进行读写,本文只有读取表头示范

'''XLS文件表头检查VBS脚本,请修改为你所需处:
''' ---------------MOBO[墨伯]原创 2006-09-23
'''取自本人代表作:成绩统计分析软件-一步到位[提升版],COM加载项,文件形式:dll
Dim Hstr: Dim XLS

Main

'''获取当前文件夹:---------------------------------------
Sub Main()

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("检查当前文件夹下所有XLS表头格式.vbs")
    HERE = objFSO.GetParentFolderName(objFile)

Const FILE_NAME = 0
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(HERE)

'''遍历当前文件下所有文件:-----------------------------------
For Each strFileName In objFolder.Items
    XLS = objFolder.GetDetailsOf(strFileName, FILE_NAME)
    If Right(XLS, 4) = ".xls" Then
       getHead HERE & "\" & XLS
    End If
Next

'''调用过程---产生网页:
link Hstr

End Sub

'''获取电子表格之表头:
Sub getHead(path)
Set XLApp = CreateObject("Excel.Application")
Set xlBook = XLApp.Workbooks.Open(path)

   endi = xlBook.Sheets(1).UsedRange.Columns.Count
   path = Replace(path, " ", "%20")
   lnkstr = "<a href=" & path & ">"
   Hstr = Hstr & lnkstr & XLS & "" & "</a><br>"
   For i = 1 To endi
      Hstr = Hstr & xlBook.Sheets(1).Cells(1, i) & "  "
   Next
   Hstr = Hstr & "<br>" & "<br>"

    XLApp.Quit
Set XLApp = Nothing
End Sub

'''产生网页,显示结果:
Sub link(ahref)
Set objExplorer = WScript.CreateObject("InternetExplorer.Application")
objExplorer.Navigate "about:blank"
objExplorer.Toolbar = 1
objExplorer.StatusBar = 1
objExplorer.Width = 640
objExplorer.Height = 480
objExplorer.Left = i * 10
objExplorer.Top = i * 15
objExplorer.Visible = 1
objExplorer.Document.Body.InnerHTML = ahref  
End Sub

2006-9-24 09:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: