为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

如何选择 Excel 中的数据列

2010-02-24 5页 doc 40KB 27阅读

用户头像

is_395191

暂无简介

举报
如何选择 Excel 中的数据列如何选择 Excel 中的数据列,然后将数据粘贴到文本文件中? 问: 您好,脚本专家!如何选择 Excel 中的数据列,然后将数据粘贴到文本文件中? -- RR 答: 你好,RR。您知道,如果您与大多数人一样,那么每当听到“脚本专家”这个词,您一定会想到两件事:优雅和技艺高超。尽管我们赢得很高的声望,但脚本专家在内心深处只是一些品位简单的人。当然,我们象任何人一样喜欢鱼子酱(或者说,如果我们中有人真的在狼吞虎咽地吃这东西,我们可能也会这样),但最重要的是我们只想找到解决问题的办法。如果人们发现我们所做的既简单又优雅,...
如何选择 Excel 中的数据列
如何选择 Excel 中的数据列,然后将数据粘贴到文本文件中? 问: 您好,脚本专家!如何选择 Excel 中的数据列,然后将数据粘贴到文本文件中? -- RR 答: 你好,RR。您知道,如果您与大多数人一样,那么每当听到“脚本专家”这个词,您一定会想到两件事:优雅和技艺高超。尽管我们赢得很高的声望,但脚本专家在内心深处只是一些品位简单的人。当然,我们象任何人一样喜欢鱼子酱(或者说,如果我们中有人真的在狼吞虎咽地吃这东西,我们可能也会这样),但最重要的是我们只想找到解决问题的办法。如果人们发现我们所做的既简单又优雅,那就再好不过了。但我们强调实用,而不图外。 我们因何有此一说呢?只因为看起来您的问题应该有既简单又优雅的解决。可是,我们根本不知道既简单又优雅的解决方案会是什么样。但是 - 这样是不可以的!- 脚本专家不能承认关于脚本还有我们不知道的事情。因此,为了掩盖我们内心最深处和最怕曝光的秘密,我们决定提供更像蛮干的方法来完成您要做的事情,只不过我们称之为“手工粗活”,而不是蛮干。如果幸运的话,没有人会比我们更聪明。 换句话说,我们不是装腔作势,我们恭敬地为您奉上这个手工粗制的脚本,并且专门是为您 RR 而构建的: Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Set objWorkbook = objExcel.Workbooks.Open("C:\Scripts\Test.xls") Set objWorksheet = objWorkbook.Worksheets(1) objWorksheet.Activate i = 1 Do While True strValue = objWorksheet.Cells(i,3) If strValue = "" Then Exit Do End If strText = strText & strValue & vbCrLf i = i + 1 Loop objExcel.Quit Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.CreateTextFile("C:\Scripts\ExcelData.txt") objFile.Write strText objFile.Close 当您运行此脚本时会发生两件事情:您将获取在电子表格 Test.xls 列 C 中找到的所有数据,然后将数据保存到名为 ExcelData.txt 的文本文件中。这并非仅仅是复制和粘贴,但最终结果一样,并且没其他人会比这更聪明了。 哦,除非他们读过此专栏。因此,只要不让其他人阅读此专栏,您就胜利在望了。 如果有人正在阅读此专栏,将发现脚本开头是一段令人望而生畏的代码块,该代码块实际上只是创建一个可视的 Excel 实例,打开工作簿 C:\Scripts\Test.xls,然后使 Sheet 1 成为活动工作表: Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True Set objWorkbook = objExcel.Workbooks.Open("C:\Scripts\Test.xls") Set objWorksheet = objWorkbook.Worksheets(1) objWorksheet.Activate 完成这些以后,我们即准备好解决实质的问题。 起初,我们将值 1 赋给计数器变量 i。将使用此变量跟踪电子表格的当前行。我们将值 1 赋给该变量是因为实际电子表格中的数据从第 1 行开始(即,没有标题行)。如果数据从第 3 行开始应该怎么办呢?没问题:只需将值 3 赋给 i。 注意:我们很有必要在此处指出我们假定电子表格中的所有数据是连续的,而这只是在第 3 列中没有空白行的别致说法。如果第 3 列中确实有空白行,则可能需要用 UsedRange 属性确定电子表格中的末尾行,然后用 For Next 循环从第 1 行循环到末尾行。有关 UsedRange 属性的更多信息,请参阅此 Office Space 文章。 接下来是下面的 Do While 循环: Do While True strValue = objWorksheet.Cells(i,3) If strValue = "" Then Exit Do End If strText = strText & strValue & vbCrLf i = i + 1 Loop 我们在这执行的是读取电子表格第 3 列的第 1 行、然后第 2 行,之后是第 3 行等等。我们如何知道何时停止呢?好的,对于每个单元格,我们使用下面这行代码将单元格的值存储在变量 strValue 中: strValue = objWorksheet.Cells(i,3) 如果 strValue 等于空字符串 (“”),我们认为已到达数据的结尾;考虑到这一点,我们使用 Exit Do 命令退出循环。以下三行代码就用来解决这个问题: If strValue = "" Then Exit Do End If 但请稍候,您说:如果单元格的值不等于空字符串怎么办?嗯,在这种情况下,我们将该值和一个回车换行符 (vbCrLf) 添加到字符串 strText 中: strText = strText & strValue & vbCrLf 我们在此只使用 strText 记录我们在电子表格列 C 中找到的数据:每次我们访问新单元格时,我们就将相应数据追加到 strText 的值中。(注意,总是将 strText 的当前值与新值和回车换行符赋给 strText。) 在遍历列 C 中的所有单元格后,我们使用 Quit 方法关闭 Excel。至此我们完成了一半的工作:我们已检索了 Excel 中指定列的所有数据。现在,我们只需将这些数据放到文本文件中。 虽然存在一些很好但有点费解的方法也许能将数据粘贴到文本文件中,但是只将数据作为文本文件保存似乎更容易些。以下代码就用来解决这个问题: Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.CreateTextFile("C:\Scripts\ExcelData.txt") objFile.Write strText objFile.Close 我们在此创建一个名为 C:\Scripts\ExcelData.txt 的新文件,然后用 Write 方法将 strText 的值写入该文件。如果我们想将这些数据添加到已有的文本文件该怎么办呢?没问题;在这种情况下,我们将使用如下代码: Const ForAppending = 8 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile("C:\Scripts\ExcelData.txt", ForAppending, True) objFile.Write strText objFile.Close 注意:有关将数据写入新文本文件或将追加到现有文本文件的更多信息,请参考 Microsoft Windows 2000 脚本指南中的这部分内容。 至此您已实现了您的目的:拥有了脚本专家亲手精心制作的全新脚本,脚本专家是不相信生冷、没有人情味的大量生产的脚本。 当然,除非您使用 Scriptomatic 来大量生成它们。但那是另一回事情。
/
本文档为【如何选择 Excel 中的数据列】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索