如何使用VBA在Word中创建工具提示对话框?

时间:2013-11-18 17:15:20

标签: vba ms-word word-vba

我正在将文档存储库从HTML转换为一系列单独的Word文档。我遇到的挑战之一是HTML具有从文档中的单词和短语链接的javascript弹出窗口。这些弹出窗口为查看文件的顾问提供定义。例如,单击“危险警告”会弹出一个小弹出窗口,提供危险警告的文本​​。

<a href="javascript:void(0);" id="a4" style="font-weight: bold;" 
   onmouseover="if (parseInt(navigator.appVersion) >= 4 &amp;&amp; 
                    typeof(BSPSPopupOnMouseOver) == 'function') 
                    BSPSPopupOnMouseOver(event);" 
   class="BSSCPopup" onclick="BSSCPopup('required_hazard_warning.htm');return false;">
   Hazard Warning</a> 

当我将这些文档转换为Word时,我想保留超链接,但不是链接到javascript函数或网站,而是让该可点击链接启动一个VBA脚本,该脚本会弹出一个填充了文本的对话框。 required_hazard_warning.htm。

我见过this link about inserting text into a dialog boxthis link about a java solution for displaying variable tooltips on hover。我正在寻找一种两者混搭的东西。

我的想法是我有一个VBA函数显示一个消息框和一个“ok”按钮来关闭它,超链接在点击时发送文件名参数....

sub showDefinitionDialog(filename)
Dim message as String
message = getContents(filename)   <-- or whatever the proper syntax is
MessageBox.Show(message)
end sub

...其中filename是由超链接生成或嵌入和读取的变量。那有意义吗?这对VBA来说是可行的吗?

1 个答案:

答案 0 :(得分:1)

如果您正在寻找使用VBA而不是我认为您需要使用标签或文本框,那么您可以获得onClick事件。如果您正在寻找更具原生性的窗口,那么您也可以创建自己的表单并将其显示为“工具提示”

点击处理程序将是

Private Sub Label1_Click()
    Call showDefinitionDialog(<path to file>)
End Sub



'your method to display dialog
Public Sub showDefinitionDialog(filename)
    Dim message As String
    Dim wDoc As Document
    'open the document and do not show it 
    Set wDoc = ThisDocument.Application.Documents.Open(filename, , True, , , , , , , , , False)
    'get all the text in the document
    message = wDoc.Content.Text   
    'close the document
    wDoc.Close
    'release the object
    Set wDoc = Nothing
    'show the message
    MsgBox message
End Sub

根据评论进行更新

'我们要说标签的名称是Label1,所有文件都在同一目录中

Private Sub Label1_Click()
    Dim sPath as String
    sPath = Label1.Caption & ".docx"
    Call showDefinitionDialog(sPath)
End Sub