一.本地office中通过创建宏实现此需求
1.打开一个Excel文件,在需要插入批注的单元格右击-定义名称(myTable1).点击菜单栏-视图-宏-查看宏-输入宏名-创建宏

2.进入VBA编辑界面,将以下代码拷贝-保存-关闭VBA界面

Sub addComment()ActiveSheet.Application.Sheets("Sheet1").Range("myTable1").SelectActiveCell.AddComment ("Hello")ActiveCell.Comment.Visible = TrueEnd Sub;

3.点击菜单栏-视图-宏-查看宏-点击刚才插入的宏名-执行

结果如下

但是对于OA系统来说,很多业务都是需要用户在网页上直接操作的,如果让用户在客户端本地office操作完成再将文件上传至服务器,总会显得我们的系统做的不够智能。

那么需求来了:如何才能实现让用户傻瓜式操作在线打开office文档,并且让程序在打开文档之前做一些事(比如在某一区域设置值,为某一个单元格赋值,设置字体段落格式,添加批注)呢。当你毫无思路时那就证明这个需求用到了你没有涉及过的技术点,这个时候就需要找一些插件来实现了。

我当时发现了一款插件叫做pageoffice很轻松的解决了此需求。当时将他集成到我的系统中跑起来只用了半天的时间。并且后来测试发现他对服务器要求并不苛刻,支持Windows、Linux等主流服务器系统。并且在客户端支持火狐、谷歌、IE、360等主流浏览器。在他们官网http://www.zhuozhengsoft.com/index.html下载程序包后会提供免费的注册码(听说永久正式版也不过两三千,但是我没购买正式版他们官方的技术支持也一直对我提供支持并且没有不耐烦哈哈哈哈)。接下来我为大家展示一下我实现的新建批注的效果。

二、集成pageoffice在线打开文档实现为Excel中自定义名称的单元格添加批注

1.下载官网程序包,根据部署指引将pageoffice集成到自己项目中(具体流程不再赘述,官方指引很详细,实在不行可以去官网联系他们技术支持)

下载地址
      http://www.zhuozhengsoft.com/dowm/
   部署步骤
      http://www.zhuozhengsoft.com/PageOffice/guide/

2.在需要打开文档的链接处通过pobrowser打开文档所在页面

<br><a href="javascript:POBrowser.openWindowModeless('excelcomment/excel.jsp','width=1200px;height=800px;')" style=" color:#0108f6; text-decoration:underline;">excelComment</a>

注意:这里的<head></head>中需要引入pageoffice官方提供的两个js文件

<script type="text/javascript" src="jquery.min.js"></script><script type="text/javascript" src="pageoffice.js" id="po_js_main"></script>

3.excel.jsp中代码如下

<%@ page import="com.zhuozhengsoft.pageoffice.PageOfficeCtrl" %><%@ page import="com.zhuozhengsoft.pageoffice.OpenModeType" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><%PageOfficeCtrl poctrl = new PageOfficeCtrl(request);poctrl.setServerPage(request.getContextPath()+"/poserver.zz");poctrl.setJsFunction_AfterDocumentOpened("afterOpen()");poctrl.webOpen("doc/test.xls",OpenModeType.xlsNormalEdit,"zs");
%><html><head><title>Title</title><script type="text/javascript">function afterOpen() {var sMac = 'Sub addCom() \r\n '+ 'ActiveSheet.Application.Sheets("Sheet1").Range("myTable1").Select \r\n '+ 'ActiveCell.AddComment ("Hello")\r\n'+ 'ActiveCell.Comment.Visible = True\r\n'+ 'End Sub';document.getElementById("PageOfficeCtrl1").RunMacro("addCom", sMac);}</script></head><body><%=poctrl.getHtmlCode("PageOfficeCtrl1")%></body></html>

这样就会通过poctrl.webopen方法打开doc/test.xls文档,并且为文档中名为myTable1的单元格插入批注"hello"

4.实现效果

三.除Java之外,pageoffice也对ASP.NET和PHP提供支持,相关程序员同学可以自行去官网了解,再此不再赘述.

http://www.zhuozhengsoft.com/dowm/

这是官网的下载试用程序包的地址

转载于:https://my.oschina.net/u/3507515/blog/3019765

VBA实现为Excel中自定义名称的单元格添加批注相关推荐

  1. 如何在EXCEL中查找多个单元格中的多个关键字,多个单元格满足多个条件的行的绿色在线工具

    Excel查找,偶尔有情况遇到要在Excel中查找多个单元格的多个关键字(或包含或相等),或多个单元格或列满足多个的条件的行,Excel本身的支撑没有那么灵活.本身我们又对代码不熟悉,有一个方便性的工 ...

  2. Excel中如何批量合并单元格

    Excel中如何批量合并单元格 方法/步骤 1.1 如图所示是我们的演示数据与预期达到的效果. 1.首先,选中数据. 2.依次点击[数据]-[分类汇总] 3.弹出如下对话框,将[分类字段]设置为&qu ...

  3. 如何在 Excel 中对齐或旋转单元格中的文本?

    欢迎观看 Microsoft Excel 教程,小编带大家学习 Microsoft Excel的使用技巧,了解如何在 Excel 中对齐或旋转单元格中的文本. 在 Excel 中,对齐或旋转单元格的文 ...

  4. html拆分单元格成两列,在excel中怎样把一个单元格拆分成两个单元格

    excel表格中如何拆分带括号的单元格比如说我有一个表格单元格内容是 :张三李四(000001) 如何将括号内的选中需要拆分的单元格,Ctrl +F把单元格里面的括号或者书名号换成逗号,然后在数据选项 ...

  5. java 单元格拆分合并_java – 在Excel中查找合并的单元格,拆分单元格并将其写入新的电子表格中?...

    我得到了一个分配,我需要拆分电子表格的数据并将其写入新的电子表格.条件是,给定电子表格可能有多个合并单元格数,我需要找到那些合并单元格并在新的SpreadSheet中写入这些数据. 即,必须在另一个电 ...

  6. poi 合并单元格添加边框_如何在Excel中的文本和单元格边框之间添加空间

    poi 合并单元格添加边框 Adding a bit of extra padding to your cell boundaries can make it easier for you to re ...

  7. Office EXCEL 中如何让一个单元格的数据链接到另一个工作表的数据

    比如我在Sheet2中定义了几个数据,这些都是简单的数字,而在Sheet1中让要被绑定的单元格等于Sheet2的对应单元格地址(比如Sheet2!B1,Sheet2!B2之类的) 然后就可以一改全改了 ...

  8. EXCEL中对1个单元格中多个数字求和

    如A1=3779.3759.3769.3781.3750,A2对A1中4个数字求和怎么求!请高手赐教! 方法一:在B1中输入公式=SUM(MID(A1,{1,6,11,16,21},4)*1) 方法二 ...

  9. 如何在 Excel 中查找合并的单元格(并删除它们)

    使用数字格式更改 Excel 中的日期格式 在 Excel 中从日期中删除时间的最简单方法是更改​​数字格式. 这不会从时间戳中删除时间--它只是阻止它在您的单元格中显示.如果您在计算中使用这些单元格 ...

最新文章

  1. JavaScript初学者编程题(8)
  2. 从LSTM到GRU基于门控的循环神经网络总结
  3. 用python解算法谜题_编程的乐趣 用Python解算法谜题
  4. 物理、线性、虚拟、逻辑、有效地址
  5. .Net Core3.1下使用Swagger搭建web api项目
  6. 从单租户IaaS到多租户PaaS——金融级别大数据平台MaxCompute的多租户隔离实践
  7. jQuery无任何标示获取td在表格中的行数和列数
  8. NOI 08 石头剪刀布
  9. 2013再见,2014你好!
  10. 推荐系统实战--movieslens数据集实现UserCF算法
  11. 10、共射放大电路的设计
  12. 万年历(hao123)代码
  13. 百年铁树要开花,贾跃亭要还钱了?
  14. Excel2021单元格怎么做下拉菜单
  15. DirectX12(D3D12)基础教程(十三)——D2D、DWrite On D3D12与文字输出
  16. 如何使用阿里云服务器搭建个人简历网站
  17. vue返回首页后如何清空路由
  18. C语言中 *x++ (*x)++ ++*x *++x的区别
  19. JAVA 实现《角色扮演侦探》游戏
  20. CentOS 6.x 配置iptables

热门文章

  1. python读取批量txt文件
  2. ABBYY FineReader 15如何比较文档?
  3. VMOS+小黄鸟无root抓包(解决抓包无网络问题)(附工具)
  4. 喾哲~ (八月最佳)
  5. 附下载 | 图解密评联委会《商用密码应用安全性评估FAQ(第二版)》
  6. 音视频开发-SRS 4.0流媒体服务器系列
  7. meta20 无法安装 google play_【黑科技】安卓手机安装Google Play
  8. linux nodejs 采集器,前端工程师通过nodejs链接linux,并上传代码进行半自动化更新,省去ssh+ftp的链接工具-前端黑科技-SegmentFault思否...
  9. 华为云弹性文件服务 SFS
  10. 通达OA工作流-流程设计