我正在尝试将Word文档中的表格中的文本导入excel。我需要从阅读的文本中删除上标。从excel文档中删除上标很简单,但是在将上标字符写入excel文档时,我需要删除它们。原因是单词文档包含许多相同的字符串,但是随机添加了上标数字或商标符号,因此我的电子表格无法将这些字符串识别为相同的字符串。
我的代码很长,但是相关的位在这里
Dim myDoc As Word.Document
Dim i As Integer
Dim iTable As Integer 'table number index
Dim iRow As Long 'row index in Excel
Dim iCol As Integer 'column index in Excel
Dim j as integer, i as integer, c as integer
With myDoc.Tables(1) ‘the table I want to read in strings from
j=3
For iRow = 1 To .Rows.Count
Cells(i, j) = WorksheetFunction.Clean(.Cell(iRow, 1).Range.Text) ‘i is set elsewhere in code
For c = 1 To Len(Cells(i, j))
If Cells(i, j).Characters(c, 1).Font.Superscript = True Then
MsgBox “superscript found”
End If
Next c
j = j + 1
Next iRow
End With
但这是行不通的,因为它永远不会提醒我任何上标(我可以稍后稍后再尝试删除它们,以确保它能找到它们)。如果我对其进行更改,以便在找到不是上标的字符时提醒我,那么它将正常工作。奇怪的是,当我检查它写到电子表格的内容时,很多字符都是上标,所以它们就在那里。
任何帮助将不胜感激!
欢呼
答案 0 :(得分:0)
您的代码非常适合在Excel单元格中查找上标。这意味着,如果范围内有任何上标字符,它将找到它们。
问题出在这一行:
Cells(i, j) = WorksheetFunction.Clean(.Cell(iRow, 1).Range.Text)
,其中完整引用为myDoc.Tables(1).Cell(iRow, 1).Range.Text
,其中myDoc
是Word文档。
通过引用Range的.Text
属性,您只能获得一个String
值作为回报。这种类型永远无法保留上/下标,字体大小等元数据。因此,实际上,该信息在过程中丢失,并且永远不会到达Excel工作表! (这就是为什么您找不到它的原因。)
不幸的是,我不知道Word对象模型,所以我也无法告诉您如何传输此元数据。希望有这方面经验的人能对此有所了解。
或者,看看some search results on SO。也许那里有一些帮助。