欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-30 15:41:57
...

一.本地office中通过创建宏实现此需求

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

        ​VBA实现为Excel中自定义名称的单元格添加批注
            
    
    博客分类: java操作word 在线编辑在线office 

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

  1.  
    Sub addComment()
  2.  
     
  3.  
        ActiveSheet.Application.Sheets("Sheet1").Range("myTable1").Select
  4.  
     
  5.  
        ActiveCell.AddComment ("Hello")
  6.  
     
  7.  
        ActiveCell.Comment.Visible = True
  8.  
     
  9.  
    End Sub;

  ​VBA实现为Excel中自定义名称的单元格添加批注
            
    
    博客分类: java操作word 在线编辑在线office 

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

   结果如下

    ​VBA实现为Excel中自定义名称的单元格添加批注
            
    
    博客分类: java操作word 在线编辑在线office 

但是对于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文件

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

3.excel.jsp中代码如下

  1.  
    <%@ page import="com.zhuozhengsoft.pageoffice.PageOfficeCtrl" %>
  2.  
     
  3.  
    <%@ page import="com.zhuozhengsoft.pageoffice.OpenModeType" %>
  4.  
     
  5.  
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  6.  
     
  7.  
    <%
  8.  
     
  9.  
        PageOfficeCtrl poctrl = new PageOfficeCtrl(request);
  10.  
     
  11.  
        poctrl.setServerPage(request.getContextPath()+"/poserver.zz");
  12.  
     
  13.  
        poctrl.setJsFunction_AfterDocumentOpened("afterOpen()");
  14.  
     
  15.  
        poctrl.webOpen("doc/test.xls",OpenModeType.xlsNormalEdit,"zs");
  16.  
     
  17.  
    %>
  18.  
     
  19.  
    <html>
  20.  
     
  21.  
    <head>
  22.  
     
  23.  
        <title>Title</title>
  24.  
     
  25.  
        <script type="text/javascript">
  26.  
     
  27.  
            function afterOpen() {
  28.  
     
  29.  
     
  30.  
     
  31.  
                var sMac = 'Sub addCom() \r\n '
  32.  
     
  33.  
                    + 'ActiveSheet.Application.Sheets("Sheet1").Range("myTable1").Select \r\n '
  34.  
     
  35.  
                    + 'ActiveCell.AddComment ("Hello")\r\n'
  36.  
     
  37.  
                    + 'ActiveCell.Comment.Visible = True\r\n'
  38.  
     
  39.  
                    + 'End Sub';
  40.  
     
  41.  
                document.getElementById("PageOfficeCtrl1").RunMacro("addCom", sMac);
  42.  
     
  43.  
     
  44.  
     
  45.  
            }
  46.  
     
  47.  
        </script>
  48.  
     
  49.  
    </head>
  50.  
     
  51.  
    <body>
  52.  
     
  53.  
    <%=poctrl.getHtmlCode("PageOfficeCtrl1")%>
  54.  
     
  55.  
    </body>
  56.  
     
  57.  
    </html>

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

4.实现效果

    VBA实现为Excel中自定义名称的单元格添加批注
            
    
    博客分类: java操作word 在线编辑在线office 

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

 

如果此篇文章有侵权行为或存在错误之处请联系小编,定在第一时间改正