标签: word-vba

Word vba - 如果光标在单元格/书签中 - 运行代码

我有一个模板文档,其中包含几个部分和几个表.问题是,我正在尝试在表格中的单元格中插入一个下拉列表.要使下拉列表起作用,需要保护文档.但是,如果我保护表格所在的整个部分,则整个表格都受到保护.

所以,我想知道是否有一种方法可以执行宏代码,如果用户点击下拉列表?然后代码将保护文档,使控件实际工作,然后选择一个选项,当用户在字段外单击时,文档应该不受保护.

这可能吗?

vba word-vba

4
推荐指数
1
解决办法
4009
查看次数

Word VBA"默默地"检索IP地址

我需要将IP地址拉出到VBA宏中.此代码有效,但命令对话框可以短暂显示,这看起来并不好看.我可以使用修改"静默"吗?

Sub getIP()

Set objShell = CreateObject("WScript.Shell")
Set objExecObject = objShell.Exec("%comspec% /c ipconfig.exe")
Do Until objExecObject.StdOut.AtEndOfStream
    strLine = objExecObject.StdOut.ReadLine()
    strIP = InStr(strLine, "Address")
    If strIP <> 0 Then
        IPArray = Split(strLine, ":")
        strIPAddress = IPArray(1)
    End If
Loop
SynapseForm.LabelIP.Caption = strIPAddress

End Sub
Run Code Online (Sandbox Code Playgroud)

更新,找到一个使用Wscript.Shell写入临时文件的变体,这个"默默地"工作不如下面Remou的方法那么好

    Sub getIPAddress()

Dim IP_Address: IP_Address = GetIP()

If IP_Address = "0.0.0.0" Or IP_Address = "" Then
MsgBox "No IP Address found.", , ""
Else
MsgBox IP_Address
'MsgBox IP_Address, , "IP address"
End If

End Sub …
Run Code Online (Sandbox Code Playgroud)

vba ms-word word-vba

4
推荐指数
1
解决办法
7919
查看次数

我可以在宏运行时显示某些内容吗?

我有一个宏需要大约五秒钟来执行,我正在使用代码,Application.ScreenUpdating = False所以看起来Word在运行时已经锁定.

我在最后使用一个消息框告诉他们它是完整的,但我想在执行过程中显示一个图像告诉用户宏正在运行(主要是因为他们不会担心,但也因为它更好看着).

可能有一种更简单的方法,但我决定创建一个图像,创建一个非常基本的用户表单,并简单地将我的图像设置为其背景.然后,一旦代码开始运行,我就会弹出该用户表单.

我遇到的问题是,除非我关闭它,否则其余代码将不会执行.它只是挂起,直到我做某事.有没有办法让我可以在不停止其余流程的情况下显示用户表单?如果没有,是否有另一种方法可以在宏运行时显示图像?

vba word-vba

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

在VBA中获取图像大小?

在我为其构建一些VBA代码的word文档中,我需要能够在用户窗体上显示图像,并且还要调整用户窗体的大小以适应它呈现的任何图像.

当我在立即盒子中尝试这样的东西时我很困惑(图像文件实际上只有675像素宽):

? LoadPicture("C:\Users\arose\Desktop\Security Control Doc\Images\AC1.bmp").Width
  17859 
Run Code Online (Sandbox Code Playgroud)

最终我发现这是因为VBA使用了除像素之外的某些单位.缇,或类似的东西.但我真的需要以像素为单位的图像大小,所以我四处乱逛,大致发现转换因子是什么,我正在使用它:

Function TwipsToPixels(Twips As Long) As Long

    TwipsToPixels = Twips / 25.477

End Function
Run Code Online (Sandbox Code Playgroud)

这有所帮助,但并不是特别准确.所以我的问题是,有没有人有更优雅和精确的方式来获得VBA中的图像大小?

excel vba image excel-vba word-vba

4
推荐指数
1
解决办法
7635
查看次数

使用合并的单元格复制表格行

我需要插入一组行的多个副本,格式如下所示.

+-------------------------------------------------+
|                       1,1                       |
+-------------------------------------------------+
|         |   2,2   |         |   2,4   |         |
|   2,1   +---------+   2,3   +---------+   2,5   |
|         |   3,2   |         |   3,4   |         |
+-------------------------------------------------+
|                       4,1                       |
+-------------------------------------------------+
|         |   5,2   |         |   5,4   |         |
|   5,1   +---------+   5,3   +---------+   5,5   |
|         |   6,2   |         |   6,4   |         |
+-------------------------------------------------+

在案例A中,我需要在第4行之前插入第1-3行的多个副本.

在案例B中,我需要在表格末尾插入4-6行的多个副本.

table.rows(n)方法不起作用,并给出以下错误:

运行时错误'5991':

无法访问此集合中的各个行,因为该表具有垂直合并的单元格

但是,可以从用户界面执行此操作,因此必须可以!

runtime-error ms-word word-vba

4
推荐指数
1
解决办法
3073
查看次数

copy-paste tables from word to excel

I have a word document which is updated periodically. I can go into that Word document, select the contents of an entire table and copy, then go into an Excel spreadsheet and paste it. It's screwed up; however, I fix it as follows:

    sht.Cells.UnMerge
    sht.Cells.ColumnWidth = 14
    sht.Cells.RowHeight = 14
    sht.Cells.Font.Size = 10
Run Code Online (Sandbox Code Playgroud)

This manual copy-paste works regardless of whether the table is has merged fields. Then I can start to manipulate it manually: parsing, checking, computations, etc.

I can …

excel vba ms-word copy-paste word-vba

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

如何使用VBA清除Office剪贴板

您如何使用VBA清除Microsoft Office剪贴板,特别是Word VBA?

我正在将大量数据复制到剪贴板中,并且不希望在剪贴板中保留过多的数据.

vba word-vba

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

如何检查剪贴板中是否没有文本?

如果我尝试从一个空的剪贴板粘贴,则会出现错误。我想在粘贴之前检查剪贴板中是否没有文本,以便避免这种情况。如何做到这一点?我知道可以通过错误处理来完成,但是我更喜欢避免错误的方法。

编辑-根据请求,添加创建错误和错误消息的代码:

导致问题的代码:

Sub PasteFromEmptyClipBoard()

    Selection.Paste

End Sub
Run Code Online (Sandbox Code Playgroud)

我收到的错误消息:

在此处输入图片说明

“运行时错误'4605',此方法或属性不可用,因为剪贴板为空或无效。”

clipboard vba word-vba

4
推荐指数
1
解决办法
7484
查看次数

下一循环的清除/空变量

我有一个情况,我需要clear变量,lastWord以便msgbox下一步显示任何内容loop.

下面的代码只是一个例子.

Sub clear_lastWord_Variable()

    Dim wordArr() As String
    Dim lastword As String
    Do
        selection.Find.ClearFormatting
        selection.Find.Font.Bold = True
        With selection.Find
            .Forward = True
            .Wrap = wdFindStop
        End With
        selection.Find.Execute

        If selection.Find.Found Then

            wordArr = Split(selection, " ")

            For i = LBound(wordArr) To UBound(wordArr) Step 1
                lastword = wordArr(i)

            Next i

            MsgBox lastword

            ' here should be something to clear lastword
        Else
            Exit Do
        End If
    Loop

End Sub
Run Code Online (Sandbox Code Playgroud)

vba ms-word word-2007 word-vba

4
推荐指数
2
解决办法
6万
查看次数

Word VBA SaveAs错误:不兼容的文件类型和文件扩展名

我正在尝试进行保存 - 与Word 2016中的以下代码一样:

Dim doc As Word.Document
Dim fpFile as string

Set doc = ActiveDocument
fpFile = doc.Path & "\" & doc.Name

doc.SaveAs Filename:=Left(fpFile, Len(fpFile) - 4) & "docx", FileFormat:=wdFormatDocument 
Run Code Online (Sandbox Code Playgroud)

使用Left和Len函数的My Filename参数求值为:

C:\ Users\My Name\Documents\My Company\My Client\test folder\HeaderTemplate.docx

这对我来说很好,但我收到错误6294:SaveAs行上的'不兼容的文件类型和文件扩展名'.

我已经尝试将Filename首先放入一个字符串变量,我尝试了SaveAs2方法,两者都有相同的结果.我想保存为标准的非宏启用的docx文件.

有任何想法吗?

谢谢.

vba ms-word word-vba

4
推荐指数
1
解决办法
4352
查看次数