当前位置: 首页 > 知识库问答 >
问题:

Microsoft Word:选择并转到InlineShape

隆选
2023-03-14

Word文档中的宏遍历所有图形(内联形状)并更新链接和值。此刻,文档在“请稍候”表单对话框后面冻结了整个过程。理想情况下,我会让代码在整个文档中移动,以向用户显示事情实际上正在发生。

如何在下面的循环中选择并转到当前的内联形状?

Private Sub UpdateFields()

PleaseWait.bar.Width = 0
PleaseWait.Show

' This routine sets the new path for external links, pointing them to the current folder.
Dim Rng As Range, Fld As Field, Shp As Shape, iShp As InlineShape, i As Long

Dim no_of_steps As Integer
Dim single_step_width As Integer
no_of_steps = 0

With ThisDocument
  
    ' Create progress bar
    ' a) Count total number of steps
    For Each Rng In .StoryRanges
        For Each iShp In Rng.InlineShapes
            no_of_steps = no_of_steps + 1
        Next iShp
    Next Rng

    ' b) Divide full width of progress frame by number of steps
    single_step_width = PleaseWait.frame.Width \ no_of_steps


    ' Go through all story ranges in the document.
    For Each Rng In .StoryRanges
        ' Go through the inlineshapes in the story range.
        For Each iShp In Rng.InlineShapes
        
            With iShp
                ' Skip over inlineshapes that don't have links to external files.
                If Not .LinkFormat Is Nothing Then
                    With .LinkFormat
                        ' Skip links already set to current folder
                        If Not .SourceFullName = ThisDocument.Path & "\datagrunnlag.xlsm" Then
                            
                            ' Replace the link to the external file
                            .SourceFullName = ThisDocument.Path & "\datagrunnlag.xlsm"
                            On Error Resume Next
                            .AutoUpdate = False
                            .Update
                            On Error GoTo 0
                        End If
                        
                    End With
                End If
                
                ' Update progress bar with completed step
                PleaseWait.bar.Width = PleaseWait.bar.Width + single_step_width
                DoEvents
                
                End With
        Next iShp
    Next Rng

End With
End Sub

编辑05.12.2020:添加了子屏幕中的所有代码。屏幕更新=False和True由单独的子屏幕为宏输入和宏输出设置。

共有1个答案

拓拔弘化
2023-03-14

那真的是个坏主意。使用选择对象只会进一步减慢操作速度,并让用户诅咒你。

因为您似乎已经有了一个进度指示器,所以您正在尽一切努力让用户了解情况。

任何涉及滚动文档的操作都会使代码运行得更慢,因此您所能做的就是确保代码在尽可能短的时间内完成。这包括避免使用选择对象和关闭屏幕更新。

 类似资料:
  • 我使用JFoenix库来创建组合框。 “boxLeague。getSelectionModel()。选择EditeProperty()。addListener((可观察、旧值、新值)- }

  • 我在代码中实现旋转器时遇到了问题。不太清楚它是怎么工作的。但是这里有一个我想做的简单的想法。(例如:点击旋转器,你有两个选项“第2页”和“第3页”。所以,如果你点击“第2页”,它会转到有新内容的第2页。有什么方法可以做到这一点吗?? 我也有图像按钮去下一页和返回。只想实现一个旋转框,这样你就可以更快地导航到不同的页面。 } 05-22 01:32:40.058:E/SpannableStringB

  • 本文向大家介绍js选择并转移导航菜单示例代码,包括了js选择并转移导航菜单示例代码的使用技巧和注意事项,需要的朋友参考一下 实现html界面 实现菜单导航 下面是源码分析 1. window.onload = initForm; window.onunload = function() {}; 在窗口加载时,调用initForm()函数。下一行需要解释一下,因为它是处理某些浏览器的古怪行为的变通方

  • 我有一个用户批次表。我只想选择,直到我的总金额达到一定金额。 考虑以下查询: 查询结果为: 我想在表格上做一个选择,直到余额总数为6。然后只返回id 1,2: 余额总计为1的另一个示例。那么应该只返回ids 1: 余额合计为11的示例。应该只返回ids,3,4: 所以,在那之后,我需要用FORUPDATE ex锁定这些行: 我尝试了窗口功能,但它不允许锁定(更新)。感谢任何帮助。

  • 问题内容: 我在selenium测试中有以下xpath语句: 它达到了我想要的,但是我的测试在IE6中非常缓慢。有人知道我将如何做与CSS选择器相同的选择器吗?我想我了解如何执行上述操作,但text()=“ IPODate”部分除外。 以下是我要从中选择的表格示例: ....很多很多行 …还有很多行… 在此示例中,只有一行具有IPODate单元。 问题答案: CSS定位器用于其中包含文本IPODa

  • 问题内容: 我试图在单独的mixin文件中包含常规样式/技巧,可以在需要时将其应用于任何项目。其中一些样式需要多个元素才能协同工作。 例如: 实际上,mixin可以工作,但是生成的css可以将mixin与主代码分开,即使它们的选择器相同。当我开始添加更多此类文件时,它的缺点是丑陋的CSS和较大的文件大小。 无论如何,我可以做到这一点,以便可以合并相同的选择器吗?像这样: 问题答案: 不能。Sass