将多行文本框的内容放入Word文档后文本行前面的小框
little boxes in front of text lines after putting contents of multiline textbox in Word document
我有一个带有多行文本框的用户表单。 EnterKeyBehavior = True。我 运行 宏,表格打开,我键入几行文本,在每行后按 Enter。该文本框的值被放入一个变量中,该变量稍后通过占位符文本 <> 的 Find/replace 放入 word 文档中。
文本已放入文档中,多行文本框条目中的第一行看起来不错,但每隔一行都以一个小空框开头(一些 Ascii/unicode 我不知道的字符)。见图。
我试图通过在 vbCr、vbLf、vbCrLf、Char(10)、Char(11)、Char(13) 上进行替换来替换那个小白框,这是我在其他帖子中找到的解决方案,但其中 none 对我有用。解决方法是什么?
这就是我现在在表单中的内容,我正在尝试清理该文本框的内容,然后再将值传递给我随后放入 word 文档的变量。
Private Sub cmdCompInfoOK_Click()
txtCompanyInfo.Text = Replace(txtCompanyInfo.Text, Chr(11), "")
slkCompanyInfo = frmLtrAddress.txtCompanyInfo
Me.Hide
End Sub
多行字段称为 txtCompanyInfo。
slkCompanyInfo 是我想从文本框中放置值的变量,我在调用用户窗体的主模块中将其声明为 Public。
将以下代码放入常规模块中,它将创建一个包含输入字符串中所有字符信息的字符串。
Function DumpString(s As String, Optional specialCharsOnly As Boolean = False) As String
' Write all chars of String as ASCII-Value, concatenated as string
Dim i As Long
For i = 1 To Len(s)
Dim x As String
Dim a As Long, dumpMe As Boolean, c As String
a = AscW(Mid(s, i, 1))
dumpMe = Not specialCharsOnly Or a < 32 Or a > 128
If a = 13 Then
c = "<CR>"
ElseIf a = 10 Then
c = "<LF>"
ElseIf a = 9 Then
c = "<TAB>"
ElseIf a = 0 Then
c = "<NUL>"
Else
c = Mid(s, i, 1)
End If
x = a & "(" & c & ")"
If dumpMe Then
DumpString = DumpString & IIf(DumpString = "", "", ",") & x
End If
Next i
End Function
在你的事件例程中,放置一个像
这样的语句
Debug.Print DumpString(slkCompanyInfo)
如果您输入的字符串太长,您可以将第二个参数设置为True
,在这种情况下所有常规字符都会被跳过。
我有一个带有多行文本框的用户表单。 EnterKeyBehavior = True。我 运行 宏,表格打开,我键入几行文本,在每行后按 Enter。该文本框的值被放入一个变量中,该变量稍后通过占位符文本 <> 的 Find/replace 放入 word 文档中。
文本已放入文档中,多行文本框条目中的第一行看起来不错,但每隔一行都以一个小空框开头(一些 Ascii/unicode 我不知道的字符)。见图。
我试图通过在 vbCr、vbLf、vbCrLf、Char(10)、Char(11)、Char(13) 上进行替换来替换那个小白框,这是我在其他帖子中找到的解决方案,但其中 none 对我有用。解决方法是什么?
这就是我现在在表单中的内容,我正在尝试清理该文本框的内容,然后再将值传递给我随后放入 word 文档的变量。
Private Sub cmdCompInfoOK_Click()
txtCompanyInfo.Text = Replace(txtCompanyInfo.Text, Chr(11), "")
slkCompanyInfo = frmLtrAddress.txtCompanyInfo
Me.Hide
End Sub
多行字段称为 txtCompanyInfo。 slkCompanyInfo 是我想从文本框中放置值的变量,我在调用用户窗体的主模块中将其声明为 Public。
将以下代码放入常规模块中,它将创建一个包含输入字符串中所有字符信息的字符串。
Function DumpString(s As String, Optional specialCharsOnly As Boolean = False) As String
' Write all chars of String as ASCII-Value, concatenated as string
Dim i As Long
For i = 1 To Len(s)
Dim x As String
Dim a As Long, dumpMe As Boolean, c As String
a = AscW(Mid(s, i, 1))
dumpMe = Not specialCharsOnly Or a < 32 Or a > 128
If a = 13 Then
c = "<CR>"
ElseIf a = 10 Then
c = "<LF>"
ElseIf a = 9 Then
c = "<TAB>"
ElseIf a = 0 Then
c = "<NUL>"
Else
c = Mid(s, i, 1)
End If
x = a & "(" & c & ")"
If dumpMe Then
DumpString = DumpString & IIf(DumpString = "", "", ",") & x
End If
Next i
End Function
在你的事件例程中,放置一个像
这样的语句Debug.Print DumpString(slkCompanyInfo)
如果您输入的字符串太长,您可以将第二个参数设置为True
,在这种情况下所有常规字符都会被跳过。