以下代码来自“Word Hacks:Tips”
Sub MakeAutoXRef()
Dim sel As Selection
Dim rng As range
Dim para As Paragraph
Dim doc As Document
Dim sBookmarkName As String
Dim sSelectionText As String
Dim lSelectedParaIndex As Long
Set sel = Selection
Set doc = sel.Document
If sel.range.Paragraphs.Count <> 1 Then Exit Sub
lSelectedParaIndex = GetParagraphIndex(sel.range.Paragraphs.First)
sel.MoveStartWhile cset:=(Chr$(32) & Chr$(13)), Count:=sel.Characters.Count
sel.MoveEndWhile cset:=(Chr$(32) & Chr$(13)), Count:=-sel.Characters.Count
sSelectionText = sel.text
For Each para In doc.Paragraphs
Set rng = para.range
rng.MoveStartWhile cset:=(Chr$(32) & Chr$(13)), _
Count:=rng.Characters.Count
rng.MoveEndWhile cset:=(Chr$(32) & Chr$(13)), _
Count:=-rng.Characters.Count
If rng.text = sSelectionText Then
If Not GetParagraphIndex(para) = lSelectedParaIndex Then
sBookmarkName = GetOrSetXRefBookmark(para)
If Len(sBookmarkName) = 0 Then
MsgBox "Couldn't get or set bookmark"
Exit Sub
End If
sel.InsertCrossReference _
referencekind:=wdContentText, _
referenceItem:=doc.Bookmarks(sBookmarkName), _
referencetype:=wdRefTypeBookmark, _
insertashyperlink:=True
Exit Sub
Else
MsgBox "Can't self reference!"
End If
End If
Next para
End Sub
Function RemoveInvalidBookmarkCharsFromString(ByVal str As String) As String
Dim i As Integer
For i = 33 To 255
Select Case i
Case 33 To 47, 58 To 64, 91 To 96, 123 To 255
str = Replace(str, Chr(i), vbNullString)
End Select
Next i
RemoveInvalidBookmarkCharsFromString = str
End Function
Function ConvertStringRefBookmarkName(ByVal str As String) As String
str = RemoveInvalidBookmarkCharsFromString(str)
str = Replace(str, Chr$(32), "_")
str = "_" & str
str = "XREF" & CStr(Int(90000 * Rnd + 10000)) & str
ConvertStringRefBookmarkName = str
End Function
Function GetParagraphIndex(para As Paragraph) As Long
GetParagraphIndex = _
para.range.Document.range(0, para.range.End).Paragraphs.Count
End Function
Function GetOrSetXRefBookmark(para As Paragraph) As String
Dim i As Integer
Dim rng As range
Dim sBookmarkName As String
If para.range.Bookmarks.Count <> 0 Then
For i = 1 To para.range.Bookmarks.Count
If InStr(1, para.range.Bookmarks(i).name, "XREF") Then
GetOrSetXRefBookmark = para.range.Bookmarks(i).name
Exit Function
End If
Next i
End If
Set rng = para.range
rng.MoveEnd unit:=wdCharacter, Count:=-1
sBookmarkName = ConvertStringRefBookmarkName(rng.text)
para.range.Document.Bookmarks.Add _
name:=sBookmarkName, _
range:=rng
GetOrSetXRefBookmark = sBookmarkName
End Function
所以,我希望我明白你的意思。老实说,使用insertCrossReference
方法有点复杂,因为它有一个缺点——当设置为时,它会将捕获引用的标题的整个“名称”放入选定范围。换句话说:如果你的标题是“图1.2”。“1月销售结果”,您希望“图1.2”与标题链接,它会将您的“图1.2”替换为较长的原始标题。因此,您提出的基本思想保留了段落引用。但是,我做了一些尝试,并提出以下建议:a)将以下代码放入模块,而不是MakeAutoXRef
子例程:
Sub findToReference()
Dim whatTo As Range
Set whatTo = Selection.Range
Dim whatToTxt As String
whatToTxt = whatTo.text
Dim sBookmarkName As String
Dim rngDoc As Range
Set rngDoc = ActiveDocument.Content
With rngDoc.find
.text = whatTo
.Style = "Headings 1" 'place name of style here, like 'Headings 1' or something
.Execute
End With
If rngDoc.find.Found = True Then
'rngDoc.Select 'selection what was fount
'found text to bookmark
sBookmarkName = GetOrSetXRefBookmark(rngDoc)
'copy from previous
If Len(sBookmarkName) = 0 Then
MsgBox "Couldn't get or set bookmark"
Exit Sub
End If
whatTo.InsertCrossReference _
referencetype:=wdRefTypeBookmark, _
referencekind:=wdContentText, _
referenceItem:=rngDoc.Bookmarks(sBookmarkName), _
insertashyperlink:=True
Else
MsgBox "No headers matching selection found!"
End If
End Sub
一些评论:我建议使用find
功能查找您选择的文本,并检查样式名称是否引用标题。因此,您必须将标题1更改为适当的样式名称。另一点是,第一次出现将匹配并设置对所选文本的引用。
此外,您需要更改一个函数。将原来的GetOrSetXRefBookmark
函数替换为下面的函数。
Function GetOrSetXRefBookmark(paraRng As Range) As String
Dim i As Integer
Dim rng As Range
Dim sBookmarkName As String
sBookmarkName = ConvertStringRefBookmarkName(paraRng.text)
paraRng.Bookmarks.Add _
Name:=sBookmarkName, _
Range:=paraRng
GetOrSetXRefBookmark = sBookmarkName
End Function
它适用于Word 2010。提出的想法的一个缺点是情况,即每个交叉引用
创建新的书签。但我唯一的想法是从原始代码中摆脱“段落匹配和全名复制”。所以,我希望你明白我的意思,这将是有帮助的。
在尝试了“php artisan存储:链接”等解决方案后,图像仍然无法在前端(vuejs)中显示。 图像本身存储在“storage/public/app/xxx.png”中 vuejs中的代码是。 我试图通过浏览器访问图像”http://127.0.0.1:80/api/storage/xxx.png,但导致“未找到” 任何线索都将不胜感激。
问题内容: 嗨,我的数据库中有一个图像表。这些与细节一起存储为Blob,例如图像类型和名称。 我在显示图像时遇到问题,我得到的只是一个带有红色十字的白框。码: 谢谢 问题答案: 好吧,这是一个简短的答案。 检查您的Blob类型是否至少为MEDIUMBLOB,它能够存储高达16M的数据
我有代码允许我输入带有纬度和经度的位置名称,然后地图用标记显示位置。 我遇到的问题是,我希望地图显示所有位置,每个位置都有自己的标记。 下面是我用来获取地图上显示的一个位置的代码 非常感谢您的帮助 我没有错误只是显示了一个位置,我已添加到Firebasedatabase
因此,我有一段html,其中包括一个mat表单字段,该字段有一个mat select和一个mat选项。这些mat选项是从服务器生成的,它们有一个图像,当选择一个选项时,我需要在mat select中显示该图像(每个选项都有自己的图像) 每次选择新选项时,我都要在mat select中显示选项标签和图像。 我读过mat select触发器,但对我来说没有任何效果。
Foundation 图标 Foundation 提供了 283 图标,你可以使用 CSS 来渲染她们:修改大小和颜色。 图标创建语法格式如下: <i></i> 语法中 name 部分为图标指定的名称。 要使用图标,你可以将图片的样式文件放置在页面头部 <head> 部分: <link rel="stylesheet" href="http://static.runoob.com/assets/
问题内容: 我像这样设置静态文件的文件夹 在模板中,我使用img标签显示存储在/ tmp中的图像: 在firebug中,我看到404错误而不是图像。请告诉我我做错了什么? 提前致谢。 问题答案: 我不确定你正在使用什么配置项目。你在哪里找到它? 实际上,类构造函数有两个参数来控制静态文件的配置: static_folder:默认为“静态”。这是你必须在URL中使用的前缀才能访问静态文件。 stat