我正在尝试从MS Word文档的单元格中获取内容,并使用VBA将其复制到带有宏的Excel文档中。
我正在使用此功能来实现它:
Cells(insertRow, 1) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
但是这只会带来空格的文本,而不考虑行跳转(回车)。
我也试过使用这两个:
Cells(insertRow, 1) = WorksheetFunction.Clean(.cell(iRow, iCol).Range)
和
Cells(insertRow, 1) = WorksheetFunction.Clean(.cell(iRow, iCol))
结果相同。
这将是主要任务。我还想知道是否可以将此symbol from MS word更改为类似于excel的内容。
答案 0 :(得分:0)
您可以尝试在MS word文件的每一行末尾添加一个符号,以便恢复行跳转。例如,如果以分号结束行,可以让Excel查找分号,当它找到分号时,跳过一行。
要删除您可以考虑运行此代码的空格:
newString = Replace(strString, " ", "")
可能还有其他方法可以实现您想要做的事情,但这感觉就像最简单的方式。 希望这有帮助!
答案 1 :(得分:0)
我花了很长时间才弄清楚如何做到这一点,因为这是我第一次使用Visual Basic和VBA编程,但这就是我解决它的方法:
我遇到的第一个问题是我有一些垃圾字符我不得不摆脱,我尝试使用
WorksheetFunction.Clean(MyString)
问题是这会删除导入的非打印字符(ASCII代码0-31),其中包括ascii代码13(行跳转或回车)。
即使没有使用WorksheetFunction.clean行跳转也没有被excel正确解释,我用这个解决了
Dim str as String
Dim clearer As String
str=.cell(iRow, iCol).Range.Text 'Get non treated content from word table cell
clearer = Replace(str, Chr(13), vbNewLine)
既然我没有自动清理所有东西,我必须手动完成,但我不知道Ascii代码的奇怪字符。
我这样找他们
Dim Counter As Integer
MsgBox ("Word " + str)
For Counter = 1 To Len(str)
MsgBox ("Letter is " + Mid(str, Counter, 1) + "And Ascii code is" +
CStr(AscW(Mid(str, Counter, 1))))
Next
一旦我知道他们的代码,手动清理的过程对于其他角色是相同的。其中一些代表line_jump而另一些代表垃圾,所以我以不同的方式对待它们
clearer = Replace(str, Chr(13), vbNewLine) 'Replace line jumps from word to excel
clearer = Replace(clearer, Chr(11), vbNewLine) 'Replace line jumps from word
to excel
clearer = Replace(clearer, Chr(7), "") 'Remover char
这样,我可以按照自己的意愿清理导入的文本。希望这可以在将来帮助某人。