标签: word-vba

通过自定义按钮运行宏时,VBA错误"参数数量错误或属性分配无效"

我有一个宏,我通过自定义UI编辑器添加的选项卡/组/按钮调用 -

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="tabCustomActions" label="Custom ActionsXXX" insertAfterMso="TabDeveloper">
                <group id="GroupTLA" label="TLA Actions">
                    <button id="buttonFormatTLA" label="Format as TLA" image="TLALogo" size="large" onAction="start_tla" />
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
Run Code Online (Sandbox Code Playgroud)

按钮显示很好,带有我的自定义徽标,但是当我点击按钮时,我得到以下错误 -

VBA错误

通常情况下,此错误后未打开VBA,如果我打开开发人员控制台然后尝试单击按钮,则VBA中的代码不会被指示为问题.

奇怪的是,如果我尝试手动运行宏,它可以正常工作,没有错误.有没有人有任何想法如何解决这个问题?

如果您希望查看它,这是我在Pastebin中的完整代码.谢谢.

tabs vba ribbon word-2007 word-vba

13
推荐指数
1
解决办法
1万
查看次数

限制/锁定书签以进行单词编辑

我有很多带有大量书签的word文档.我使用VBA代码用来自数据库的数据来更改这些书签.

问题是,有时用户需要编辑这些文档,并且他们倾向于意外删除/更改我的书签,这导致VBA代码不再识别书签.

所以基本上,我想知道的是我如何限制用户在word文档中编辑我的书签.

我不需要超级安全的解决方案,只需要足够的保护,以便用户知道"我不应该触摸这部分".

在此先感谢您的回答..

编辑:

我正在不同的论坛上阅读,并遇到了这个,

http://social.msdn.microsoft.com/Forums/office/en-US/f70ca604-bbdb-4b5a-8363-f9e126105e91/writeprotection-of-bookmarks-in-word?forum=vsto

哪种做我想要的.但无法实现/将其转换为VBA代码.有人也可以看到我可以使用它吗?

再次感谢.

编辑:office 2007/2010.

vba bookmarks ms-word restriction word-vba

13
推荐指数
1
解决办法
6507
查看次数

Word VBA - 消除浮动对象表

我有大量的Word文档,有些"损坏"的表.我已经能够自动完成大部分修复过程,但有一个问题仍然存在.

许多表都是浮动对象 - 当我显示隐藏的格式标记时,我会在表格中看到一个锚点.我不能保留这样的文件,我需要把所有内容都内联.

我确实有一段代码"修复"了这一点,但我认为这不是一个好的解决方案.通过将文本换行从"无"(默认 - 我想要的)更改为"周围"并返回"无",这将得到修复.代码是,

Selection.Tables(1).Rows.WrapAroundText = True
Selection.Tables(1).Rows.WrapAroundText = False
Run Code Online (Sandbox Code Playgroud)

我确信有更好的方法可以做到这一点.有谁知道一些有用的东西?谢谢!

vba ms-word word-vba

13
推荐指数
2
解决办法
285
查看次数

如何以编程方式编辑Word文档中的所有超链接?

是否有我可以编写的宏,VBA代码或VBScript来编辑我的Word文档中所有超链接的URL?Word 97-2003或docx格式.

vbscript ms-word word-vba

12
推荐指数
1
解决办法
2万
查看次数

VBA HTTP POST无法正常工作

我正在尝试通过VBA发送HTTP帖子.这是我的代码部分

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.Open "POST", url, False
objHTTP.setRequestHeader "User-Agent", "EPS 1.0"
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.setRequestHeader "content", postString
objHTTP.setRequestHeader "Content-Length", Len(postString)
objHTTP.send
Run Code Online (Sandbox Code Playgroud)

问题是,代码仅在postString小于65535字符时才起作用.如果超过65535字符,则会在下面的行中抛出错误:

错误:参数不正确

objHTTP.setRequestHeader "content", postString
Run Code Online (Sandbox Code Playgroud)

有关于此的任何想法?我是否需要设置任何其他参数才能使其解决?

vba ms-word word-vba

12
推荐指数
1
解决办法
1014
查看次数

使用vba更改字表中特定单元格的颜色和字体

我正在尝试在文档末尾设置一个新表格并将其格式化为我的规范.但backgroundcolor和textcolor似乎不起作用.字体大小也不是我想要的,因为它适用于整个表而不仅仅是一个单元格.

这是我到目前为止:

Dim myRange As Object
Set myRange = ActiveDocument.Content
myRange.Collapse Direction:=wdCollapseEnd
ActiveDocument.Tables.Add Range:=myRange, NumRows:=3, NumColumns:=2
With .Tables(.Tables.Count)
    .Cell(1, 1).Select
    With Selection
        .Shading.Texture = wdTextureNone
        .Shading.ForegroundPatternColor = wdColorWhite
        .Shading.BackgroundPatternColor = wdColorGray25
        .Font.Size = 14
        .Font.Bold = True
        .Text = "Hello World"
    End With
End With
Run Code Online (Sandbox Code Playgroud)

我希望表格的第一行没有边框,灰色背景上的字体为14,粗体,白色文字.

vba ms-word word-vba

12
推荐指数
1
解决办法
3万
查看次数

VBA调试打印产生意外和看似随机的输出

任何人都可以对此有所了解.在MS Word VBA中,我有一个简单的Sub,它产生了意想不到的结果.[编辑:此问题已在MS Word的几个不同安装上重现,但到目前为止只有Win10]

Repro环境:

  • Win10,Word 2010(32位)PC
  • Win10,Word 2010(32位)VM-Azure
  • Win10,Word 2016(32位)PC
  • Win10,Word 2010(64位)VM-Azure
  • Win10,Word 2016 365 @VincentG
  • Win10,Word 2007(32位)@Ambie
  • Win10(64),Word XP @ThunderFrame
  • Win10(64),Excel XP @ThunderFrame
  • Win8.1(64),Word 2013 @miroxlav(Win10以外的第一个版本)
  • Win8.1(64),Office 2016(32)@GSerg
  • Win10(64),Word 2007(x86)@PartricK
  • Win10(64),Excel 2007(x86)@PartricK

但没有责备:

  • Win7(64),Word 2007(32位)VM Azure
  • Win7(64),Word 2010(32?)@ JohnKoleman
  • Win7(64),Word 2007(32)@Slai
  • Win7(64),Word 2003(32)@GSerg
  • WinXP(32),Word 2010(32)@GSerg
  • Win7(64),Office 2010(32)

重现步骤:打开新的Word文档打开IDE(Alt + F11)输入此代码

Option Explicit

Sub test()
Dim i As Integer
For i = 1 To 100
Debug.Print vbCr
Next
End Sub
Run Code Online (Sandbox Code Playgroud)

运行测试Sub.

每次循环运行时我的输出都会有所不同:

]Œ[p^"î;{Ñ[

]Œ[p^"î;{Ñ[

\ÒZžUÖè;qÑZ
Run Code Online (Sandbox Code Playgroud)

要么

ÿÿ

þþ@øø”¶(3

ÿÿ …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba word-vba

12
推荐指数
1
解决办法
494
查看次数

Word Automation:无需通过剪贴板即可编写RTF文本

我试图存储在变量中的一些RTF字符串替换Word(2003/2007)中的当前选择.

这是当前的代码:

Clipboard.SetText(strRTFString, TextDataFormat.Rtf)
oWord.ActiveDocument.ActiveWindow.Selection.PasteAndFormat(0)
Run Code Online (Sandbox Code Playgroud)

有没有办法在不通过剪贴板的情况下做同样的事情.或者有没有办法将剪贴板数据推送到安全的地方并在之后恢复?

automation ms-word word-vba

11
推荐指数
1
解决办法
6167
查看次数

如何可靠地获取Word文档中的页数?

我正在使用自动化对Word文档进行大量更改,然后运行VBA宏,其中包括检查文档不超过一定数量的页面.

我正在使用ActiveDocument.Information(wdNumberOfPagesInDocument)获取页数,但此方法返回的结果不正确.我认为这是因为Word尚未更新文档的分页以反映我所做的更改.

ActiveDocument.ComputeStatistics(wdStatisticPages) 也遇到同样的问题.

我试着坚持打电话ActiveDocument.Repaginate,但这没什么区别.

我确实有一些运气,在文档的末尾添加一个段落,然后再次删除它 - 但该黑客似乎不再有效(我最近从Word 2003迁移到Word 2010).

有什么方法可以强制Word 实际重新组合,和/或等到重新分页完成后?

vba ms-word word-vba word-2010

11
推荐指数
3
解决办法
2万
查看次数

如何创建允许上面插入的MS-Word-Form-Region?

我想在Microsoft Word中创建一个非常动态的表单,并允许用户添加多个区域.相关数据包含按日期排序的事件.如果插入新事件,则必须显示在区域列表的顶部.

据我所知,您只能在最后一个区域下插入新区域.是否有可能更改此问题,或者我是否必须使用Word-Macros实现一个片段才能启用它?

编辑(履历 - 示例):

  • 小学 - 19xx - 19xx(我将此行称为'地区')
  • 学院 - 19xx - 19xx
  • '__' - 日期1 - 日期2(+)

所以这是按升序排序的.错误!如果我按下+ -Button,则在下面插入一个新区域.我希望实现这样的目标:

  • '__' - 日期1 - 日期2(+)
  • 学院 - 19xx - 19xx
  • 小学 - 19xx - 19xx

自动在上方插入新区域.

forms vba ms-word ms-office word-vba

11
推荐指数
1
解决办法
242
查看次数