#excel #vba
#excel #vba
Вопрос:
Я извлекаю данные из таблицы в документе Word. Данные дополняются странным символом «» (похоже на бюллетень). Чтобы удалить это, я использовал приведенные ниже шаблоны регулярных выражений.
For i = 1 To tablecount
t_rows = ObjDoc.Tables(i).Rows.Count
t_cols = ObjDoc.Tables(i).Columns.Count
For j = 1 To t_cols
t_content = ObjDoc.Tables(i).Cell(1, j)
MsgBox (t_content)
t_header = format(t_content)
MsgBox (t_header)
count = 0
if t_header = "ID"
count = count 1
Next
Next
Function format()
Set objexp = New RegExp
objexp.Pattern = "[^a-zA-Z0-9s]" '(I want the spaces to be retained hence this pattern)
objexp.Global = True
objexp.IgnoreCase = True
format = objexp.Replace(x, "")
End Function
В первом msgbox указано значение данных:
Второе сообщение (после выполнения действий внутри формата функции) выдает:
После выполнения действия с регулярным выражением я вижу дополнительный перевод строки / пробелы (хотя и не уверен), и, следовательно, мое условие if не выполняется.
Как я могу получить вывод в виде «ID».
Комментарии:
1. Это похоже на код VBA. Если это так, пожалуйста, измените тег. vb.net и VBA — это два разных языка.
2. я не могу вставить странный символ в вопрос.. это похоже на маркеры в документе Word.
3. Я также добавил скриншот моего вывода для большей наглядности
Ответ №1:
Если я правильно понимаю вашу проблему, вы видите конец маркеров ячеек. Вы можете удалить это следующим образом…
t_header = Left(t_content, Len(t_content) - 2)
Комментарии:
1. Спасибо. Теперь это работает. Просто из любопытства, почему 2 вычитается из общей длины вместо 1, пожалуйста?
2. Маркер конца ячейки состоит из символа звонка, chr (7), и возврата каретки, chr (13), поэтому именно эти последние 2 символа нуждаются в удалении.