我正在将更长的表格文本导入Unity程序。我需要在每行中显示一个较长文本的单词。 谢谢
答案 0 :(得分:0)
在Word中处理大块文本的问题是,仅可以使用255个字符或更少的查找文本字符串执行“查找和替换”之类的操作,而不会引起错误。导入文本并将其分配给字符串变量后,可以使用Len()确定字符串的长度,然后使用Left()Mid()和Right()将较大的字符串分解为较短的250个字符的块每。这是我为查找和替换情况编写的一些代码:
With Selection.Find
y = Len(Selection.Text)
Select Case y
Case Is <= 250
x = 1
.Text = stFound
.Execute Replace:=wdReplaceAll
Case Is <= 500
Dim stFound2 As String
x = 2
z = Len(stFound) - 250
stFound1 = Left(stFound, 250)
stFound2 = Right(stFound, z)
Case Is <= 750
Dim stFound2 As String
Dim stFound3 As String
x = 3
stFound1 = Left(stFound, 250)
stFound2 = Mid(stFound, 251, 249)
stFound3 = Right(stFound, Len(stFound) - 500)
End Select
End With
然后我使用For Next循环在每个字符串上运行“查找和替换”。
在您的情况下,重要的是不要将单词中间的字符串打散。为此,您可以使用InStr()函数在字符串中查找空格的位置,然后根据空格的位置拆分文本。我不会尝试在原始文本上使用Split()函数,这取决于您可能遇到下标超出范围错误的字符串的大小。
一旦文本分解成可用的块,请使用Split()函数将每个单词发送到数组,然后运行以下代码将每个单词放在自己的行或段落中:
Dim stTxt as String
dim stWord as String
dim stArr() as String
dim x as long
stTxt = 'One of your text strings
stArr() = Split(stTxt)
For x = LBound(stArr()) to UBound(stArr())
stWord = stArr(x) & "^p"
Selection.Typetext stWord
Next
答案 1 :(得分:0)
经过更多研究,我确定文本字符串的255个字符限制仅影响某些功能,而不影响全部功能。因此,我使用了一个17,335个字符(包括空格)的Word文档,并在其上运行Split()以创建一个数组。没有错误,结果数组的UBound为2690。
因此,下一个问题是将哪种文本导入到Word中,大小如何。它只是一个由空格分隔的单词列表还是另一个定界符?它是否包含标点符号?如果它只是一个用空格或其他定界符(例如逗号或分号)分隔的单词列表,则Split()函数会将单词排序到一个Array中,至少17,000个字符。对于较大的文本块,将需要更多测试。如果文本包含标点符号,则您必须对文本进行处理以删除不需要的标点符号,只要“查找”字符串<= 255个字符,就可以使用通配符查找和替换来完成。但是,如果您只有单词和空格或其他定界符,那么使用Split()将每个单词分成一个数组元素就可以了,然后像上一个示例的后半部分一样运行代码:
For x = LBound(stArr()) to UBound(stArr())
stWord = stArr(x) & "^p"
Selection.Typetext stWord
Next