利用vba将access导出成excel

利用vba将access导出成excel,第1张

一、在Access数据库中直接导出

用Access打开校友录的数据库文件,选中包含校友信息的“student”表,然后单击鼠标右键并选择“导出”命令。

在打开的对话框中将“保存类型”改成“Microsoft Excel 97-2003 (*.XLS),然后输入文件名称,单击“导出”按钮,稍后就得到了一个标准的Excel工作簿文件。注意:在Access程序中还可以轻松将数据库表导出为VF的DBF文件、Paradox的数据库文件、文本文件等多种格式以供调用。用Excel打开导出得到的文件,将不需要的列删除,只保留姓名和E-mail地址所在的两列,随后保存,最后将此文件上传给领导审阅即可。

二、用AccessToExcel来帮忙

如果对Access数据库 *** 作不熟悉,没关系,可以使用AccessToExcel这款免费软件来帮忙。AccessToExcel,顾名思义,就是将Access数据库转换为Excel工作簿。安装并运行Access ToExcel,单击窗口左上角“导出Access数据库文件”左边的Access图标,在打开的对话框中选择要转换的MDB文件,打开该数据库文件。提醒:该软件附带提供获取Access数据库密码的功能,但算法不够全面,如果不能获取要打开的数据库密码会d出提示,请在“Access数据库密码”下手动输入。单击右侧“数据库 *** 作”标签下的“获取数据库”按钮,稍后将在“数据表名称列表”下显示该数据库中各表的名称。

从列表中选中要转换的那个表,单击“获取字段列表”按钮,在窗口左下方便列出了表中的各字段,去除不需要的字段前的对勾,然后点击“浏览数据”按钮,可检验是否为最终需要的项目。

切换到“导出数据”标签下,单击“选择导出文件”按钮,输入最终要导出的EXCEL文件名。单击“导出”按钮,在窗口下方会显示导出进度,完成后在d出的对话框中点击“是”立即保存。这样便得到了需要的Excel文件。用Excel打开导出的文件,可发现其中只有选中的字段。和直接导出相比,使用AceeToExcel导出的表前部会增加一个标题,如果不需要可在Excel中将其去掉。

问一下哈,excel 里面有“TO_Char”这个命令吗?如果DEL_DELIVERY是格式为"yyyy/mm/dd hh:mm:ss"字符串,用left(DEL_DELIVERY,10)可以提取出yyyy/mm/dd,我觉得excel读取外部资料后可用的原因是,excel把DEL_DELIVERY处理成格式"yyyy/mm/dd hh:mm:ss",再用to_char(del_delivery,'yyyymmdd')提取出yyyymmdd是没有问题的,而直接从外部读取的话,excel只把del_delivery处理成字符串,没有格式,所以to_char(del_delivery,'yyyymmdd')提取yyyymmdd就会出错,不知道这样理解对不对。:)

1、汉字在前,数字在后面的情形。可以用MID,min, find三个函数来实现提取里面的数字。如图:在B2输入“=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&“0123456789”)),20)”

2 、把单元格里面所有的数字都提出来。可以使用宏。先打开VBA编辑器。工具——宏——visual basic 编辑器

3、在编辑器里点击插入——模块。在模块那里输入如下代码:

Function zzsz(xStr As String) As StringDim i As IntegerFor i = 1 To Len(xStr)If IsNumeric(Mid(xStr, i, 1)) Then zzsz = zzsz &Mid(xStr, i, 1)NextEnd Function

4、回到工作表,在B2单元格那里输入“=zzsz(A2)”。就可以用VBA把A2单元格里所有的数字都提取出来了,如图所示。

Excel怎么只提取表格中的数字

5、指定从第几个数组提取开始。也就是说在不连续的那些数字中,从第几次出现的数组开始提取。同样在模块那里输入如下代码:

Function GetNums(rCell As Range, num As Integer) As StringDim Arr1() As String, Arr2() As StringDim chr As String, Str As StringDim i As Integer, j As IntegerOn Error GoTo line1

Str = rCell.TextFor i = 1 To Len(Str)chr = Mid(Str, i, 1)If (Asc(chr) 《 48 Or Asc(chr) 》 57) ThenStr = Replace(Str, chr, “ ”)End IfNext

Arr1 = Split(Trim(Str))ReDim Arr2(UBound(Arr1))For i = 0 To UBound(Arr1)If Arr1(i) 《》 “” ThenArr2(j) = Arr1(i)j = j + 1End IfNext

GetNums = IIf(num 《= j, Arr2(num - 1), “”)line1:End Function


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9897120.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存