我正在将文档存储库从HTML转换为一系列单独的Word文档。我遇到的挑战之一是HTML具有从文档中的单词和短语链接的javascript弹出窗口。这些弹出窗口为查看文件的顾问提供定义。例如,单击“危险警告”会弹出一个小弹出窗口,提供危险警告的文本。
<a href="javascript:void(0);" id="a4" style="font-weight: bold;"
onmouseover="if (parseInt(navigator.appVersion) >= 4 &&
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 box和this 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来说是可行的吗?
答案 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