我有一個包含大量 html 代碼片段的記錄的 Access 表。我想創建一個表單控制元件來編輯檢索到的一段 html 代碼。我知道文本框控制元件可以用于這項作業。
但我希望文本框控制元件能夠像在 VSCode 中一樣為 html 標記著色,以減少編輯作業的痛苦。對此似乎沒有任何控制。
我可以做些什么來在 Access 表單中創建這樣一個原始的 IDE 框?謝謝!
uj5u.com熱心網友回復:
我為 Microsoft Access TextBoxes 制作了一個小的 HTML 語法熒光筆,其Text Format屬性設定為Rich Text(盡管名稱為 Rich Text,但它有效地使用 HTML 標記來格式化文本)。還建議將 設定為Enter Key Behavior以New Line in Field獲得更好的編輯體驗。
我的代碼使用DLL 中的RegExp物件。Microsoft VBScript Regular Expressions 5.5因此,您必須在 VBA 編輯器中設定對它的參考。
Changed為您的 TextBox創建一個文本處理程式。我的 TextBox 被命名Text1,因此 Sub 被命名Text1_Change。將其替換為<your textbox name>_Change:
Private Sub Text1_Change()
Dim r As New RegExp
Dim colMatches As MatchCollection
Dim objMatch As Match
Dim oldPos As Long, oldLen As Long, i As Long, pos As Long, l2 As Long
Dim s As String, s1 As String, s2 As String, s3 As String, special As String
Dim specialOffset As Long
s = Replace(PlainText(Text1.Text), " ", " ")
With r
.Pattern = "<[?!]?[^>/] /?>|</\w >"
.IgnoreCase = True
.Global = True
.Multiline = False
Set colMatches = .Execute(s)
End With
oldPos = Text1.SelStart
oldLen = Text1.SelLength
For i = colMatches.Count - 1 To 0 Step -1
Set objMatch = colMatches(i)
special = Mid$(objMatch.Value, 2, 1)
specialOffset = IIf(special = "/" Or special = "?" Or special = "!", 1, 0)
If specialOffset = 0 Then
special = ""
End If
s1 = Left$(s, objMatch.FirstIndex) & "<font color=blue><" & special & "</font><font color=brown>"
s2 = EscapeHtml(Mid$(objMatch.Value, 2 specialOffset))
l2 = IIf(Mid$(s2, Len(s2) - 4, 1) = "/", 5, 4)
pos = InStr(s2, " ")
If pos > 0 Then
s2 = Left$(s2, pos 5) & "</font><font color=red>" & Mid$(s2, pos 6, Len(s2) - pos - l2 - 5) & "</font><font color=blue>" & Right$(s2, l2)
Else
s2 = Left$(s2, Len(s2) - l2) & "</font><font color=blue>" & Right$(s2, l2)
End If
s3 = "</font>" & Mid$(s, objMatch.FirstIndex objMatch.Length 1)
s = s1 & s2 & s3
Next
s = Replace(s, vbCrLf, "<br />")
Text1.Text = s
Text1.SelStart = oldPos
Text1.SelLength = oldLen
End Sub
Private Function EscapeHtml(ByVal s As String) As String
EscapeHtml = Replace(Replace(s, "<", "<"), ">", ">")
End Function
不要忘記助手 Function EscapeHtml。
結果如下所示:

不完美,但歡迎您改進它。
您可以像這樣檢索普通的無格式文本(PlainText是內置函式)
s = PlainText(Text1.Text)
uj5u.com熱心網友回復:
我制作了一個帶有 webbrowser 控制元件的表單和一個彼此相鄰的大文本框,系結到一個帶有文本欄位中 html 的表格。該表單在文本欄位中加載 html 文本,您可以在其中對其進行編輯并將其加載到瀏覽器中以顯示結果。您還可以設定 EditOn = true 并且可以在瀏覽器本身中更改 html,如果要保存在瀏覽器中所做的更改,則必須撰寫代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/519619.html
