Проверьте имя стиля или получите имя стиля VSTO Word VB.NET
Я написал следующий код в Word VBA, и он работает.
Dim para As Paragraph
Dim nextPara As Paragraph
For Each para In ActiveDocument.Paragraphs
If para.Style = CMB1.Value Then
Set nextPara = para.Next
If nextPara.Style = CMB2.Value Then
If Not nextPara Is Nothing Then
para.Style = CMB3.Value
nextPara.Style = CMB4.Value
End If
End If
End If
Next
Я преобразовал этот код в VSTO VB.NET:
Dim para As Word.Paragraph
Dim nextPara As Word.Paragraph
For Each para In activeDoc.Paragraphs
If para.Style = cmbStyle1.SelectedItem.ToString Then
nextPara = para.Next
If nextPara.Style = cmbStyle2.SelectedItem.ToString Then
If Not nextPara Is Nothing Then
para.Style = cmbStyle3.SelectedItem.ToString
nextPara.Style = cmbStyle4.SelectedItem.ToString
End If
End If
End If
Next
Но когда я запускаю, в следующей строке выдает ошибку.
Если Para.Style = cmbStyle1.SelectedItem.ToString Тогда
Что я должен делать?
2 ответа
Работа с Word PIA может иногда отличаться от VBA. Не много, когда вы работаете с VB.NET, но иногда немного...
Чтобы получить имя стиля, вам сначала понадобится объект Style. Например
Dim para As Word.Paragraph = Globals.ThisAddIn.Application.Selection.Range.Paragraphs(1)
Dim styl As Word.Style = para.Range.Style
System.Diagnostics.Debug.Print(styl.NameLocal)
Таким образом, ваш код должен быть похож на следующий код. Обратите внимание, что нет необходимости создавать объект Style, чтобы назначать стиль для Range. Только при получении свойств стиля.
Dim para As Word.Paragraph
Dim nextPara As Word.Paragraph
Dim paraStyle as Word.Style
Dim paraStyleNext as Word.Style
For Each para In activeDoc.Paragraphs
paraStyle = para.Style
If paraStyle.NameLocal = cmbStyle1.SelectedItem.ToString Then
nextPara = para.Next
paraStyleNext = nextPara.Style
If paraStyleNext.NameLocal = cmbStyle2.SelectedItem.ToString Then
If Not nextPara Is Nothing Then
para.Style = cmbStyle3.SelectedItem.ToString
nextPara.Style = cmbStyle4.SelectedItem.ToString
End If
End If
End If
Next
Paragraph.Style
Свойство в Word - это вариант WdBuiltinStyle
тип. Вам придется ссылаться на строку Paragraph.Style.NameLocal
,
Пример:
If para.Style.NameLocal = cmbStyle1.SelectedItem.ToString Then
Обязательно включите перехват ошибок во всех ваших процедурах. Вот пример для.NET