• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
使用VB实现Excel自动获取外部数据
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
使用VB实现Excel自动获取外部数据
软件发布 使用VB实现Excel自动获取外部数据
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 编程技术 >> VB & VB.NET教程 >> 使用VB实现Excel自动获取外部数据

使用VB实现Excel自动获取外部数据

添加时间: 2006-2-17 3:09:52  作者: VB教程  阅读次数:312   来源: http://www.d9soft.com

          Excel面始之初带有表格处理类软件中功能最强的宏语言,通过单击“工具”菜单中的“宏”,选择宏名来调用宏过程。随后发展至Visual Basic for Application专用版,可制作按钮、复选框、单选钮等控件,赋控件以宏名,单击控件运行宏,事件驱动方式就Click(单击)一种。新近推出的Office97套件中的Excel97,在“工具”菜单中选择“宏”后,就会发现增加了“Visual Basic编辑器”功能。运用这个新增功能,就完全与Visual Basic编程无异了。在菜单栏上单击鼠标右键,选择弹出式菜单中的“控件工具箱”,在“控件工具箱”工具条上,单击待添加的控件按钮,在工作表中将控件拖曳到所需位置和大小,单击鼠标右键选中“属性”设置控件属性后,双击控件就会出现Visual Basic编辑器。选择该控件的一个事件如Click或Change,编写程序。在工作表中操作该控件,如鼠标单击、键入字符等,则触发相应事件,执行相应程序。

  笔者在Excel97平台,采用Visual Basic应用程序版开发了一套“通用报表分析系统”。该系统用于拥有众多子公司的母公司的每月财务报表合并汇总。所有子公司的统计报表如资产负债表、损益表是由FoxBase编制的财务软件生成的dbf文件,取名为ATV001xx.dbf----xx月份资产负债表,ATV002xx.dbf----xx月份损益表等。一个子公司的所有dbf文件放在一个单独的目录中,如C:\T\palm1,C:\T\palm2等。母公司每月份生成的汇总报表为TTTyymm.xls(yy----年份,mm----月份),它有“资产负债表”、“损益表”等若干工作表组成。每张工作表是由所有子公司相应的dbf文件的相应项目的数据相加而成。只要将dbf文件逐一转化到TTTyymm.xls中去,很容易利用Excel的公式设置功能生成母公司的每张汇总报表。

  这套系统的关键在于如何将所有dbf文件转换到同一个Excel工作簿中。直接通过“文件”菜单中的“打开”项, 选择文件类型为dBase文件(*.dbf), 可将dbf文件转换到Excel工作簿中,但这工作簿只存转换而来的一张工作表,其他表都自动关闭了。另外,通过“工具”菜单中的“向导”,选择“文件转换”后, 只是将一系列dbf文件转换为一系列xls文件而已。于是采用建立ODBC数据源获取外部数据的办法, 将dbf文件逐一转换到一个Excel工作簿内, 且用Visual Basic for Application将转换过程自动化。只要按一下图1中的“生成报表”按钮, 就能完成所有dbf 文件的转换, 且利用Excel公式自动计算功能完成所有报表的汇总计算。按“显示报表”按钮,选择表名,可以浏览报表数据。

  具体的方法是:

  一、 建立ODBC数据源

  (1) 打开“数据”菜单, 选择“获取外部数据”, 然后单击“新建查询”;

  (2) 在“选择数据源”对话框中, 双击“<新数据源>”;

  (3) 出现“创建新数据源”对话框,输入数据源名称, 选择驱动程序如Microsoft dBase Driver(*.dbf), 单击“连接”;

  (4) 在“ODBC dBase安装”对话框中, 单击“使用当前工作目录”前的复选框, 去掉缺省( , 单击“选定目录(s)”, 选择子公司存放dbf文件的目录如C:\T\palm1, 连按“确定”;

  (5) 当出现Microsoft Quary对话框时, 单击“关闭”, 退出。不要理会出现的警示信息,因为此时只需建立数据源, 并不需要用Microsoft Query查询数据;

  (6) 重复上述步骤, 在(4)中改换另一家子公司的目录, 就为另一家子公司建立一个数据源。必须建立所有子公司的数据源。
二、手动获取外部数据

  (1) 单击“数据”,选取“获取外部数据”,单击“新建查询”;

  (2) 出现“选取数据源”对话框,点中“使用查询向导创建/ 编辑查询”前的复选框,然后双击数据源名,如palm1;

  (3) 在“查询向导——选择列”对话框中选择一个查询表名,单击 > 键,“查询中用到的列”框内会出现表中所有列名,单击“下一步”;

  (4) 出现“查询向导——过滤数据”,单击“下一步”;

  (5) 出现“查询向导——排序顺序”,单击“下一步”;

  (6) 出现“查询向导——完成”,点中“将数据返回Microsoft Excel”前的单选钮,单击“完成”;

  (7) 出现“将外部数据返回到Excel”对话框,选中“新建工作表”,按“确定”;

  (8) 在建立查询的工作簿内新建工作表,并放入转换好的数据。这样就将一个 dbf 文件转换好了。

  (9)重复上述过程,所有子公司的dbf文件转换到同一个工作簿中。

  三、 使用VB实现Excel自动获取外部数据

  (1) 进行手动获取外部数据(1)步骤前,单击“工具”菜单中的“宏”,选择“录制新宏”,在“宏名”的编辑框中键入宏名dbftoxls,按“确定”键;

  (2) 完成手动获取外部数据(1)-(8)步骤;

  (3) 单击“工具”菜单中的“宏”,选择“停止录制”。这样就将获取外部数据的过程记录为宏。

  (4) 编辑dbftoxls宏,加以修改,使它作为Visual Basic模块表中的一个子程序,并设置调用参数。
提供的程序如下:

`设置初值
Const apppath = "c:\my documents\palmxls\"
Const modulefile = apppath + "module.xls"
Const staticspre = "TTT"
Const dbfpre = "ATV00"

`调用dbftoxls的模块
Private Sub Cmdgeneratetable_Click()
 Dim staticsfile As String
 Dim s1 As String
 Dim s2 As String
 Dim s3 As String
 Dim idyes As Integer
 Dim dbfstring As String

On Error GoTo errhandler1
 idyes = 6
 s1 = txtyear.Text
 s1 = Mid(s1, 3, 2)
 s2 = txtmonth.Text
 If Len(s2) = 1 Then
  s2 = "0" + s2
 End If
 staticsfile = apppath + staticspre + s1 + s2 + ".xls"
 If FileLen(staticsfile) > 0 Then
  choice = MsgBox("该年月报表已存在,是否重新生成?", vbYesNo +        vbExclamation + vbDefaultButton1, "")
  If choice = idyes Then
   Workbooks.Open FileName:=staticsfile
   For i = 0 To companynum - 1
    For j = 0 To tablenum - 1
     dbfstring = dbfpre + Trim(Str$(j + 1)) + s2
     sqlstring = sqlstringfunc(dbfstring, fieldlist(),
           tablefieldnum(j))
     Call dbftoxls(s(i, j), sqlstring)
    Next j
   Next i
   ActiveWorkbook.Save
   ActiveWorkbook.Close
  End If
 End If
Exit Sub

errhandler1:
 Select Case Err
  Case 53
   Workbooks.Open FileName:=modulefile
   s3 = s1 + "年" + s2 + "月"
    Sheets("资产负债表").Range("e4").FormulaR1C1 = "注释:" + s3
    ActiveWorkbook.SaveAs FileName:=staticsfile, FileFormat _
    :=xlNormal, Password:="", WriteResPassword:="",   
    ReadOnlyRecommended:= _
    False, CreateBackup:=False
   For i = 0 To companynum - 1
    For j = 0 To tablenum - 1
     dbfstring = dbfpre + Trim(Str$(j + 1)) + s2
     sqlstring = sqlstringfunc(dbfstring, fieldlist(),
           tablefieldnum(j))
     Call dbftoxls(s(i, j), sqlstring)
    Next j
   Next i
   ActiveWorkbook.Save
   ActiveWorkbook.Close
 End Select
End Sub

 `dbftoxls子程序
Sub dbftoxls(activesheetname, sqlstring)
 Sheets(activesheetname).Activate
 Cells.Select
 Selection.Clear
 Range("a1").Select
 With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
    "ODBC;CollatingSequence=ASCII;DBQ=C:\T\palm1;DefaultDir=
    C:\T\palm1;Deleted=1;
    Driver={Microsoft dBase Driver (*.dbf)};
    DriverId=533;FIL"), Array( "=dBase III;
    ImplicitCommitSync=Yes;
    MaxBufferSize=512;
    MaxScanRows= 8;
    PageTimeout=600;
    SafeTransactions=0;
    Statistics=0;
    Threads=3;Use" ), Array("rCommitSync=Yes;")),   
    Destination:=Range("A1"))
   .Sql = Array( sqlstring)
   .FieldNames = True
   .RefreshStyle = xlInsertDeleteCells
   .RowNumbers = False
   .FillAdjacentFormulas = False
   .RefreshOnFileOpen = False
   .HasAutoFormat = True
   .BackgroundQuery = True
   .TablesOnlyFromHTML = True
   .Refresh BackgroundQuery:=False
   .SavePassword = True
   .SaveData = True
 End With
End Sub

 

上下文章:

 

上一篇文章: 创建ActiveX接口移植Excel工作表 下一篇文章: 用VB控制EXCEL生成报表

相关文章:

  • 飞速在线看视频 傲盾加速帮你实现速度感受
  • 艾瑞数据显示:暴风影音市场优势明显
  • 用端口碰撞技术实现服务器远程管理
  • 使用搜狗音乐盒下载歌曲,快带飚的体验
  • 教你如何使用Procmail 过滤mail病毒

相关软件:

  • 哑巴鼠标自动点击器 V2.3
  • 全国计算机等级考试模拟软件(2006年全年使用)二级Visual Basic V9.0
  • Accent Excel Password Recovery V2.31
  • 勤哲Excel服务器 2005 V6.0 企业版客户端
  • 勤哲Excel服务器 2005 V6.0 企业版服务器端
  • 三维数据成像3D Surfer 2.0

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • C++程序设计之四书五经
  • VB入门教程之四
  • VB入门教程之三
  • VB入门教程之二
  • VB入门教程之一
  • 压缩被DBGIRD控件正在使用的MDB数...
  • 谈谈VB的数据库编程方式
  • 在VB中用DAO实现数据库编程
  • Data控件使用有密码的Access数据库
  • 用DAO或ADO正确访问Access 2000

VB & VB.NET教程阅读排行

  • VB入门教程之一
  • VB入门教程之二
  • VB入门教程之三
  • VB入门教程之四
  • 如何编写高质量的VB代码
  • 初学者必知:VB10个小编程
  • VB访问SQL Server数据库技术全揭密
  • 怎样在VB中控制Word?
  • 用DAO或ADO正确访问Access 2000
  • VB中列表框的使用技巧说明

编程技术阅读总排行

  • VB入门教程之一
  • Java连接数据库实例
  • 第二章 PowerBuilder 入门之创建新...
  • VC++之List Box/Check List Box控...
  • 第一章 什么是PowerBuilder
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有