PageOffice常用功能之-使用RunMacro运行Office的宏

PageOffice使用 RunMacro 方法在在线打开的PageOffice文档中执行已录制的宏指令或者新编写的宏指令(VBA代码)。PageOffice可以运行文档中无返回值和有返回值的宏指令。

document.getElementById("PageOfficeCtrl1").RunMacro( MacroName, MacroScript );
参数描述
MacroName字符串类型,表示宏指令名称。
MacroScript字符串类型,表示要执行的宏指令代码,可选。

注: ① 缺省该参数时,在客户端调用时,会根据宏指令名称执行打开的文档中已录制或存在的宏指令;如果传递该参数,就直接执行该参数中的宏指令。这里的宏指令指的是完整的VBA函数字符串,必须包含函数的开始和结束,并且函数的名字要和MacroName参数指定的函数名字完全相同。
②当参数MacroScript中有多句宏指令代码时,请把每句代码单独放一行(VBA的要求),注意回车换行。

示例:

  1. 执行无返回值宏命令,弹出消息框。

演示效果请参考Samples4示例的高级功能:
二、12、执行文档中的宏命令(以Word为例)(专业版、企业版)。

在页面上放一个TextBox控件,将其“TextMode”属性设置为“MultiLine”;再放一个普通的按钮“Button”,给其添加一个“onclick”事件,命名为“RunMacro”。在TextBox中输入宏命令后,点击按钮执行Js函数RunMacro(),弹出消息框
如,在TextBox中输入代码如下(注意:每句代码占一行):

 Function 宏1()
   MsgBox "消息框"
 End Function

点击按钮执行的JS代码如下:

<script type="text/JavaScript">
 function RunMacro(){
    var poObj = document.getElementById("PageOfficeCtrl1");
    poObj.RunMacro( "宏1", document.getElementById("TextBox1").value);
 }
</script>
  1. 执行有返回值宏命令,弹出消息框。

演示效果请参考Samples4示例的高级功能:
二、44、执行文档中有返回值的宏命令(以Word为例)

<script type="text/JavaScript">
 function RunMacro2(){
   var sMac = "Function myFunc1() \r\n myFunc1 = "123" \r\n End Function";
   var value=document.getElementById("PageOfficeCtrl1").RunMacro("myFunc1", sMac);
   document.getElementById("PageOfficeCtrl1").Alert(value);
  }
 </script>	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
摘要:当用户需要对报表需要重新编辑的时候,用Excel或者Word生成报表就会比XML或者HTML的方式更加合理。但是由于Word的组件在使用时候要导入很多类,如果直接加在工程中会使其看上去很乱,所以封装到DLL中是个不错的主意。本文在前人经验指导下对一些常用的操作做了简单的封装,功能由从DLL中导出类CWordOperate提供。 关键字:Word2003,MFC扩展DLL,报表,CWordOperate 一、 鉴于www.vckbase.com中已经有文章对vc使用word生成报表方式做详细的论述,这里不准备对此赘述。仅仅介绍封装类CWordOperate中的函数和DLL的使用。#include "msword.h"class AFX_EXT_CLASS CWordOperate {public: CWordOperate(); virtual ~CWordOperate(); BOOL CreateWordApp(BOOL bShow); // 创建一个word应用程序 void DeleteApp(); // 用后,删除 void ShowApp(BOOL bShow); // 显示,或者隐藏 void QuitApp(); // 关闭外部打开的word应用程序 BOOL NewDoc(CString tpName); // 根据模板创建文档 void SaveDoc(CString Filename); // 保存文档到文件路径 void TypeText(CString Text); // 在当前位置输入文字 void SetTextAlign(int val); // 设置文字对齐方式 void SetTextColor(COLORREF cr); // 设置文本颜色 void AddPic(CString FileName); // 在当前位置插入图片文件 void RunMacro(CString macroName); // 运行一个 void AddTable(int nRow, int nCol); // 加一个几行几列的表格 void AddTable(int nRow, int nCol, int autoFit); // 加一个几行几列的表格,列宽度自动 void SelectTable(int i); // 选择当前文档中的第i个表格 void MoveToTableNext(int iTable); // 把选择区指向表格后面 void SetCellText(int iTable, int iRow, int iCol, CString text); // 设置第i个表格中的某行某列的文字 void SetTableTextVAlign(int iTable, int val); // 置第i个表格中文字对齐方式 void SetColWidth(int iTable, int iCol, float width); // 设置列宽度 void SetRowHeight(int iTable, int iRow, float height); // 设置行高度 // 合并两个单元格之间的区域 void MergeCell(int iTable, int cell1Row, int cell1Col, int cell2Row, int cell2Col, CString text); // 设置单元格文本颜色 void SetCellTextColor(int iTable, int iRow, int iCol, COLORREF cr); // 设置单元格背景颜色 void SetCellColor(int iTable, int iRow, int iCol, COLORREF crCell); // 设置单元格边框的四周风格, void SetCellBorderStyle(int iTale, int iRow, int iCol, int sTop, int sLeft, int sBottom, int sRight); // 设置两个单元格之间的区域,边框的四周风格, void SetCellsBorderStyle(int iTable, int iRow1, int iCol1, int iRow2, int iCol2,int sTop, int sLeft, int sBottom, int sRight); // 设置两个单元格之间的区域,背景颜色 void SetCellsColor(int iTable, int iRow1, int iCol1, int iRow2, int iCol2, COLORREF crCell); CString ToString(); protected: _Application app; // 应用程序 Selection sel; // 用来存放获得的选择范围 _Document saveDoc; // 当前活动文档 COleVariant vTrue; // 常量TRUE COleVariant vFalse; COleVariant vOpt;};二、使用DLL中导出类的方法:#include "WordOperate.h"#pragma comment(lib, "wordDll.lib")在类中定义成员: CWordOperate wordFile;使用示例:// 创建文件 CString str;COLORREF crCell = RGB(240, 240, 240);char buffer[255];wordFile.CreateWordApp(TRUE);GetCurrentDirectory(254, buffer);strcat(buffer, "\\tp.doc");wordFile.NewDoc(buffer); // 表格使用wordFile.AddTable(8, 11);wordFile.SelectTable(1);wordFile.MergeCell(iTable, 1, 6, 1, 8, "频域数据");crCell = RGB(255, 0, 0);wordFile.SetCellColor(iTable, 3, 2, crCell);wordFile.MoveToTableNext(1);// 写文字wordFile.TypeText("二. 分析图:\r\n");// 插入图片GetCurrentDirectory(254, buffer);strcat(buffer, "\\chart.jpg");wordFile.AddPic(buffer);// 保存文件,删除对象GetCurrentDirectory(254, buffer);strcat(buffer, "\\测试报表.doc");wordFile.SaveDoc(buffer);wordFile.DeleteApp();// 也可以在删除对象前先关闭程序wordFile.QuitApp();三、使用压缩包的测试程序,按钮二能提供的效果如下图:图一 Word报表效果屏幕截图四、说明:开发环境为:vc6 + sp6 + xp_sdkWord版本:2003企业版压缩包说明:wordDll为库的代码,TestDll为使用示例,.txt是格式化段落的附加:如果想知道函数中使用的值应该为多少,可以在Word操作的时候录制,然后使用单步调试的方式得到想要的值。注:本着开源的精神,把这个使用过的类和大家分享,希望大家有用,如果有错误的地方,希望指正,谢谢
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值