datawindow和powerpoint的关联?

Mudeen 2003-07-24 05:00:09
单位要求做一个人事管理的东东

要求 将每一个人的详细信息存储到一张ppt中
这不是难事
但是还要求有一张总的名单表,要求能够从这张表连接到每张ppt上
这总的名单表也是ppt的

因该怎么做
可以实现吗?
...全文
49 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mudeen 2003-07-28
  • 打赏
  • 举报
回复
楼上的
这个只是将数据窗口的内容存到ppt中,关键是如何作超连接。
紫炎圣骑 2003-07-25
  • 打赏
  • 举报
回复
关注学习.....


Mudeen 2003-07-25
  • 打赏
  • 举报
回复
up
aty283 2003-07-25
  • 打赏
  • 举报
回复
VBA(Visual Basic for Application)是所有Office工具都支持的语言,OLE对象可以使用所有这些VBA命令来实现所需的功能,这样在PB程序中就可以通过OLE对象对PowerPoint进行控制了。如何将VBA语法转换成PB中的语法呢?看完下面的例子相信你就会明白了。

  VBA语法:

    Sub Macro1()

   Selection.TypeParagraph

   Selection.TypeText Text:="录入的内容"

   Selection.Font.Bold = wdToggle

  End Sub

  相应的PB语法:

  ole_object.Selection.TypeParagraph()

  ole_object.Selection.TypeText("录入的内容")

  ole_object.Selection.Font.Bold = 9999998

  VBA中许多常量,PB是没有定义的,所以必须写上具体的数值,它可以在宏程序中加上一个消息框来显示,例如我们想得到wdToggle的具体值,可以在宏程序中加上:“MsgBox wdToggle”执行该宏到该句时,就可以显示具体值了。


  图1 PB程序界面

  现在将具体描述如何将一个数据窗口中的所有数据写入一张幻灯片中:

  1.定义并创建一个OLE对象

  constant integer ppLayoutBlank = 12

  OLEObject ole_object

  ole_object = CREATE OLEObject

  2.连接OLE对象到PowerPoint

  IF ole_object.ConnectToNewObject("PowerPoint.Application") <> 0 THEN

   MessageBox('OLE错误','OLE无法连接!')

   return

  END IF

  ole_object.Visible = True


  图2 在PowerPoint中生成的幻灯片

  3.新建一个PowerPoint应用,并添加一张幻灯片

  ole_object.Presentations.Add()

  ole_object.ActivePresentation.

  Slides.Add(1,ppLayoutBlank)

  4.在第一张幻灯片上插入一张表格

  long ll_colnum,ll_rownum

  //得到数据窗口数据的列数与行数(行数应该是数据行数 + 1)

  ll_colnum = Long(dw_1.object.datawindow.column.count)

  ll_rownum = dw_1.rowcount() + 1

  ole_object.ActivePresentation.Slides(1).Shapes.AddTable(ll_rownum,ll_colnum,5,40,700,300)

  5.读取数据窗口中的所有数据,输出到PowerPoint相应表格中

  long i,j

  string ls_value

  //读取数据窗口的表头各列

  string ls_colname

  for i = 1 to ll_colnum

   //得到标题头的名字

   ls_colname = dw_1.describe('#' + string(i) + ".name") + "_t"

   ls_value = dw_1.describe(ls_colname + ".text") ole_object.ActivePresentation.Slides(1).Shapes(1).Table.Cell(1,i).Shape.TextFrame.TextRange.Text = ls_value

  next

  //读取所有数据到PowerPoint的相应表格中

  dw_1.setredraw(false)

  for i = 2 to ll_rownum

   for j = 1 to ll_colnum

   dw_1.scrolltorow(i - 1)

   dw_1.setcolumn(j)

   ls_value = dw_1.gettext() ole_object.ActivePresentation.Slides(1).Shapes(1).Table.Cell(i,j).Shape.TextFrame.TextRange.Text = ls_value

   next

  next

  dw_1.setredraw(true)

  6.保存新建的PowerPoint演示为sample.ppt

  ole_object.ActivePresentation.SaveAs("C:\My Documents\sample.ppt")

  7.断开OLE连接

  Ole_Object.DisConnectObject()

  Destroy Ole_Object

  以上程序在Windows 98、PB 6.5、PowerPoint 2000环境下调试通过,本文例程可以在摆渡人工作室的下载特区中找到。

611

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧