使用Excel的VBA开发的Excel文档,在Excel中运行时需要开启Excel的宏功能,否则此文档的VBA自动化功能将被完全屏蔽,文档的功能无法实现。
因此,在打开这些Excel程序文件之前,您需要先对您的Excel宏安全性进行设置(设置永久有效,在同一台电脑上无需再次设置)
在Excel2003版本中,可以依以下步骤操作:
1,在Excel的菜单栏上依次单击“工具”——“宏”——“安全性”,打开下图所示的“安全性”对话框,
2,在“安全级”选项卡中将宏的安全级别设置为“中”或“低”。其中推荐使用“中”级,这样的设置并不会降低您的安全性,您仍然对任意一个宏文件都拥有主动选择是否运行的'权力。
在宏的安全性级别设置成功后,再次打开Excel程序文件时,会出现下图所示信息框,此时点击“启用宏”按钮即可使本程序正常运行:
在Excel2007/2010版本中,可以依以下步骤操作:
1,依次单击Excel的Office按钮(2010版本为“文件”按钮)——“Excel选项”,打开下图所示的“Excel选项”选项卡,在左侧列表中选择“信任中心”,在右侧出现的窗口中点击“信任中心设置”按钮,
2,打开“信任中心”选项卡,在左侧选择“宏设置”,在右侧出现的窗口中选择“禁用所有宏,并发出通知”选项,单击确定完成。
在宏的安全性级别设置成功后,再次打开Excel程序文件时,在信息栏(编辑栏上方)会出现下图所示的警告信息,此时点击其中的“选项”按钮打开Office安全选项对话框,在其中选择“启用此内容”选项并确定即可使本程序正常运行。
首先想些数据excel文件简单办应该考虑CSVRuby支持比较且用excel直接打前提excel没特别复杂表结构式渲染等
例:
Ruby代码
outfile = File.open('csvout', 'wb')
CSV::Writer.generate(outfile) do |csv|
csv <<['c1', nil, '', '"', "\r\n", 'c2']
...
end
outfile.close
其般用考虑spreadsheet像楼提供连接所说例适合读取复杂适合参考用复杂建议看面说明
excel文件
想excel文件首先像写文件先加载spreadsheet类库指定编码接着创建Workbook
Ruby代码
book = Spreadsheet::Workbook.new
workbook基础创建Worksheet表单
Ruby代码
sheet1 = book.create_worksheet
用式创建表单:
Ruby代码
sheet2 = book.create_worksheet :name =>'My Second Worksheet'
sheet1.name = 'My First Worksheet'
我采用式加载数据表单Worksheet#[]=,
Worksheet#update_row, 或者直接给指定单元格复制
Ruby代码
sheet1.row(0).concat %w{Name Country Acknowlegement}
sheet1[1,0] = 'Japan'
row = sheet1.row(1)
row.push 'Creator of Ruby'
row.unshift 'Yukihiro Matsumoto'
sheet1.row(2).replace [ 'Daniel J. Berger', 'U.S.A.',
'Author of original code for Spreadsheet::Excel' ]
sheet1.row(3).push 'Charles Lowe', 'Author of the ruby-ole Library'
sheet1.row(3).insert 1, 'Unknown'
sheet1.update_row 4, 'Hannes Wyss', 'Switzerland', 'Author'
于格式处理:
Ruby代码
sheet1.row(0).height = 18
format = Spreadsheet::Format.new :color =>:blue,
:weight =>:bold,
:size =>18
sheet1.row(0).default_format = format
bold = Spreadsheet::Format.new :weight =>:bold
4.times do |x| sheet1.row(x + 1).set_format(0, bold) end
保存excel文件
Ruby代码
book.write '/path/to/output/excel-file.xls'
windows平台考虑WIN23OLE,处理windows转换强
Ruby代码
require 'win23ole'
application = WIN32OLE.new('Excel.Application')
worksheet
=application.Workbooks.Open(excelFileName).Worksheets(workSheetName)
worksheet.Activate
contLoop = true # Dummy counter for the loop
while contLoop do
colVal = worksheet.Cells(row, column).Value
if (colVal) then
# 字段非空则表示行值
# 处理读取
do processing ....
else
# 表明结束
# End the loop
contLoop = false
end
# go to the next Row
row += 1
end
# we are done
application.Workbooks.Close
excel宏的制作方法如下:第一步,录制新宏
选择“工具-宏-录制新宏”,在对话框中,为你将要做的宏设定一个快捷键。确定之后,可以看到一个小的工具栏,上面有个“停”字。从现在开始,你的每一步操作都会被记录下来,直到单击“停”字下面的按钮,结束宏录制过程。替换默认宏名主要是便于分别这些宏。宏名最多可为255个字符,并且必须以字母开始。其中可用的字符包括:字母、数字和下划线。宏名中不允许出现空格。通常用下划线代表空格。
第二步,执行宏
录制完一个宏后之后就可以执行它了,只要,就会重复刚才的一系列操作。
当执行一个宏时,EXCEL按照宏语句执行的情况就像VBA代码在对EXCEL进行“遥控”。但VBA的“遥控”不仅能使操作变得简便,还能使你获得一些使用EXCEL标准命令所无法实现的功能。
要执行刚才录制的宏,可以按以下步骤进行:
1)选择任何一个单元格。
2)选择“工具”—“宏”—“宏”,显示“宏”对话框。
3)选择自己录制的宏名,选择“执行”。
或者是直接按下按初始设定的快捷键,也可以执行宏。
查看录制的代码
选择“工具”—“宏”—“宏”,显示“宏”对话框。
单击列表中的自己定义的宏名,选择“编辑”按钮。
此时,会打开VBA的编辑器窗口(VBE),在这里我们可以看到VBA的语句。
编辑录制的宏
需要编辑宏是因为以下三个方面的原因。一:在录制中出错而不得不修改。二:录制的宏中有多余的语句需要删除,提高宏的运行速度。三:希望增加宏的功能。比如:加入判断或循环等无法录制的语句。
录制宏的局限性
希望自动化的许多EXCEL过程大多都可以用录制宏来完成.但是宏记录器存在以下局限性.通过宏记录器无法完成的工作有:
1)录制的宏无判断或循环能力。2)人机交互能力差,即用户无法进行输入,计算机无法给出提示。3)无法显示EXCEL对话框。4)无法显示自定义窗体。