如果样式不在样式列表中,我无法得到否定答案
If Styles("FirstLine").BuiltIn = False Then
Application.ActiveDocument.Styles.Add(Name:="FirstLine", Type:=wdStyleTypeParagraph)
Application.ActiveDocument.Styles("FirstLine").AutomaticallyUpdate = False
With Application.ActiveDocument.Styles("FirstLine").Frame
.TextWrap = True
.HorizontalPosition = wdFrameRight
.HorizontalDistanceFromText = 4
.LockAnchor = False
End With
End If
他回答了答案:
System.Runtime.InteropServices.COMException:'请求的成员 该集合不存在。'
如何得到否定答案?
答案 0 :(得分:0)
这是VB.NET和VBA中的解决方案,用于在添加样式之前检查Word中是否存在样式。
Public Sub AddNewStyle(ByVal styleName As String)
Try
'---------------------------------------------------------------------------------------------------
' Purpose: Create a new style in Microsoft Word
' Example: AddNewStyle("YourNewStyleNameHere")
' AddNewStyle("Medium Grid 3 - Accent 4") 'a default style from Microsoft Word 2016
'---------------------------------------------------------------------------------------------------
Dim MyDocument As Word.Document = Globals.ThisAddIn.Application.ActiveDocument
Dim styleExist As Boolean = False
Dim style As Word.Style
For Each style In Globals.ThisAddIn.Application.ActiveDocument.Styles
If styleName = style.NameLocal Then
styleExist = True
Exit For
End If
Next style
If Not styleExist Then
Dim MyStyle As Word.Style = MyDocument.Styles.Add(styleName, Word.WdStyleType.wdStyleTypeParagraph)
MyDocument.Styles(styleName).AutomaticallyUpdate = False
With MyDocument.Styles(styleName).Frame
.TextWrap = True
.HorizontalPosition = Word.WdFramePosition.wdFrameRight
.HorizontalDistanceFromText = 4
.LockAnchor = False
End With
End If
Catch ex As Exception
MsgBox("Contact your system administrator." + Environment.NewLine + "Description: " + ex.ToString(), vbOK + vbExclamation, "Unexpected Error")
End Try
End Sub
Public Sub AddNewStyle(ByVal styleName As String)
'---------------------------------------------------------------------------------------------------
' Purpose: Create a new style in Microsoft Word
' Example: AddNewStyle "YourNewStyleNameHere"
' AddNewStyle "Medium Grid 3 - Accent 4" 'a default style from Microsoft Word 2016
'---------------------------------------------------------------------------------------------------
Dim MyStyle As Word.Style
Dim msg As String
On Error Resume Next
Set MyStyle = ActiveDocument.Styles(styleName)
On Error GoTo ErrTrap
If Not MyStyle Is Nothing Then
Set MyStyle = Application.ActiveDocument.Styles.Add(styleName, wdStyleTypeParagraph)
Application.ActiveDocument.Styles(styleName).AutomaticallyUpdate = False
With Application.ActiveDocument.Styles(styleName).Frame
.TextWrap = True
.HorizontalPosition = wdFrameRight
.HorizontalDistanceFromText = 4
.LockAnchor = False
End With
End If
ExitProcedure:
On Error Resume Next
Set MyStyle = Nothing
Exit Sub
ErrTrap:
Select Case Err.Number
Case Is <> 0
msg = "Contact your system administrator."
msg = msg & vbCrLf & "Procedure: AddNewStyle"
msg = msg & IIf(Line = 0, "", vbCrLf & "Error Line: " & Erl)
msg = msg & vbCrLf & "Error #: " & Err.Number
msg = msg & vbCrLf & "Error Description: " & Err.Description
MsgBox msg, vbCritical, "Unexpected Error"
Resume ExitProcedure
Case Else
Resume ExitProcedure
End Select
End Sub