首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >晚装订字带

晚装订字带
EN

Stack Overflow用户
提问于 2020-08-29 16:55:03
回答 2查看 184关注 0票数 0

第一篇文章在这里发表,还在学习VB,所以要温柔一点:)。

我正在努力理解如何延迟将单词Ribbon绑定到.dotm文件。

我有大量的用户使用Office 2010 (32位)在Windows 10 (64位)平台上工作,但在接下来的几个月中,我们将过渡到Office 365 (64位)。

这两个版本都支持使用XML和VB进行带状定制。我想做以下几件事:

  • 创建一个自定义条带
  • 添加各种按钮,以及自定义图像
  • 当单击每个按钮时,它运行宏

.dotm文件将分发给每个用户计算机到一个受信任的位置,以便在每次打开word会话时加载带状文件,并使宏在单击时运行。

我有一个Office 2010的工作原型,但是Office 365中的相同文件由于缺少对Microsoft Office 15 Object library的引用而无法工作。根据我对“后期绑定”而不是“早期绑定”的理解,我可以解决这个问题,因为我不会直接引用Microsoft Office 2015 object library,而且当Word加载时,它将查找计算机具有和使用的任何引用库来初始化该带。

我知道我需要修改代码,将丝带作为一个Object来引用,但是不确定对这个词的特定调用需要是什么(以及如何将所有的东西连接在一起)。纵观各种MSDN库链接没有帮助,它主要只是困惑我进一步。

我已经在下面发布了我的通用代码。如有任何帮助和建议,将不胜感激。

XML文件如下所示

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Onload">
  <ribbon>
    <tabs>
      <tab id="CustomTab1" label="Tab1">
          <group id="Grp1" label="Group1" >
          <button id="Grp1Btn1" size="large" label="Button1" image="Button1Image" onAction="Button1Clicked"/>
          </group>
       </tab>
    </tabs>
  </ribbon>
</customUI>

然后,在Project\Microsoft Word Objects\ThisDocument中,我有加载自定义条带的代码,然后将按钮单击到适当的宏。

代码语言:javascript
复制
Option Explicit  
Public myRibbon as IRibbonUI

'This is the link to the XML file so the custom ribbon loads at startup
Sub Onload(Ribbon as IRibbonUI)   
    Set myRibbon = Ribbon  
End Sub  

'Code for a single button which then runs a macro
Sub Button1Clicked(ByVal control as IRibbonControl)  
    Macro.Button1 
End Sub  
'Each button has its own Sub like this one, just with an different name and link to its macro  

然后,在Project\Modules\Macro下,我有与每个宏关联的所有代码,如下所示:

代码语言:javascript
复制
Sub Button1()
    MsgBox Prompt:="At this point Macro 1 would run, but for this example, all you get is this silly dialog box", Title:="Button 1 Success"
End Sub
EN

回答 2

Stack Overflow用户

发布于 2020-08-30 20:26:28

您不需要使用后期绑定使丝带在O365下工作。Word将自动获取后面的对象库。

您需要测试所有的代码,以确保它是64位兼容,但这是一个不同的问题。

对于O365,对象库(.OLB)将位于C:\Program \Microsoft\root\Office 16下。Office 16库(MSO.dll)应该位于C:\Program \Common\Microsoft\Office 16下面。如果他们不在那里你得找出原因。

系统管理员可以为O365设置一些附加的安全选项,包括禁用宏的使用。您需要检查在安装过程中应用了哪些选项,并确保负责部署的人员理解您需要使用宏。

您还需要确保.dotm存储在指定为启动文件夹的文件夹中。您可以在“文件

此位置必须与可信位置中列出的启动位置相同。默认情况下是C:\Users\UserName\AppData\Roaming\Microsoft\Word\STARTUP.您应该注意,C:\Program \Microsoft\root\Office16\下的启动文件夹不再是受信任的位置(在Office2010下,它是一个隐式受信任的文件夹,无论受信任的文件夹设置如何,位于那里的任何.dotm都会工作)。

票数 0
EN

Stack Overflow用户

发布于 2020-08-31 18:07:17

如果这需要在不同的机器上运行,您可以使用代码在特定的机器上找到启动文件夹。不过,用户需要将该文件夹设置为受信任的位置。下面是一个宏,它将路径放入消息中。

代码语言:javascript
复制
    Sub ShowStartUpPath()
    ' Macro written by Charles Kenyon 2014-02-25
    ' Shows setting for Startup Folder location in Microsoft Word in a message box.
    '
      MsgBox _
        Prompt:="Your StartUp folder location is " & _
          Application.StartupPath & _
          "." & Chr(13) & Chr(10) & Chr(13) & Chr(10) & ".", _
        Buttons:=vbOKOnly, _
        Title:="Current Startup Folder Setting Information"
    '
    End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63649581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档