我要投稿
  • 您当前的位置:365bet官方 -> 技术教程 -> 办公软件教程 -> 教程内容
  • [ 收藏本页教程 ]
  • 在Word中调用Excel中的数据方法

    教程作者:佚名    教程来源:不详   教程栏目:办公软件教程    收藏本页

    Word的“邮件合并”功能可以让众多数据自动按照自己的要求插入到文档中。但假如又有另外一个要求:在同一个A4页面中要打印多项数
    据,这个时候“邮件合并”功能就不能满足了,因为合并功能不能在一页中设置多项数据(譬如完整的一个信封--包括收件人地址、收件人姓
    名、寄件人地址等就被视为一页,而不能在同一页中打印两份信封。)

      要从Excel中引用数据,首先要知道的是其中数据单元格的表示方法。主要有两种方式,即A1和R1C1引用样式。前者是软件默认的方式,即第一个字母表示表格中的列数,第二个数字表示行数,例如A1就表示A列第一个单元格。而在R1C1引用样式中,Excel使用“R”加行数字和“C”加列数字来指示单元格的位置。例如,R1C1即指该单元格位于第1行第1列。

      在Word中调用Excel数据,有两种方式,一种是OLE(对象的链接和嵌入)和DDE(动态数据交换)。这里我们要讲的是后面一种。DDE是一个协议,它允许两个应用程序通过一个DDE“通道”连续自动地进行数据交换。要控制两个应用程序之间的DDE会话,需要建立一个通道,选定一个主题,请求并传送数据,然后关闭通道。

      现在,我们有名称为“1.xls”的Excel数据表,要将其中的数据以个人为单位在Word中打印出来。通过在Word中创建一个名称为“获取数据”的宏,使用DDE方法即可调用出“1.xls”中的数据。

    下面就来看看具体的代码:

    Sub 获取数据()
    Dim i As Integer  '代表行号
    Dim j As Integer  '代表列号
    Dim r As String
    Dim c As String
      For i = 2 To 4
        For j = 1 To 3
          chan = DDEInitiate(app:="Excel", topic:="system")  '打开一个DDE通道
          DDEExecute channel:=chan, Command:="[open(" & Chr(34) & "d:.xls" & Chr(34) & ")]"
          '在一个应用程序中执行打开.xls文件命令,需要指出的是,系统要求所需文件必须放在D盘。
          DDETerminate channel:=chan  '关闭DDE通道
          chan = DDEInitiate(app:="Excel", topic:="1.xls")  '打开一个DDE通道
          dse = "r" + CStr(i) + "c" + CStr(j)  '确定单元格位置
          b = "教育硕士姓名:"
          e = "准考证号:"
          f = "地址:"
          If j = 1 Then
            a = b + Space(3) + DDERequest(channel:=chan, Item:=dse)
            '需要显示的文字加上三个空格以及按指定单元格获取到的数据,下同
          End If
          If j = 2 Then
            a = e + Space(3) + DDERequest(channel:=chan, Item:=dse)
          End If
          If j = 3 Then
            a = f + Space(3) + DDERequest(channel:=chan, Item:=dse)
          End If
          ' 通过判断列号选择显示的文字
          Selection.InsertAfter (a)  '在鼠标停留位置插入获得数据
          With Selection.Font  '对前面显示的数据进行字体设置
            .NameFarEast = "宋体"
            .Name = "宋体"
            .Size = 14
            .Bold = True
          End With
        Next j
      Next i
      DDETerminateAll  '关闭所有以及打开的DDE通道
    End Sub

      这是一个使用DDE的简单例子,在WIN2K+Word2003环境下调试通过。

    我要投稿   -   广告合作   -   关于本站   -   友情连接   -   网站地图   -   联系我们   -   版权声明   -   设为首页   -   加入收藏   -   网站留言
    Copyright © 2009 - 20012 www.www.ct131.com All Rights Reserved.365bet官方 版权所有