Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 删除Word中表格单元格中标记内容控件后面的所有文本_Vb.net_Vba_Ms Word - Fatal编程技术网

Vb.net 删除Word中表格单元格中标记内容控件后面的所有文本

Vb.net 删除Word中表格单元格中标记内容控件后面的所有文本,vb.net,vba,ms-word,Vb.net,Vba,Ms Word,无法确定如何使用Word对象模型API完成此任务。代码在Microsoft Word加载项中运行,该加载项主要使用VB.Net编写 以下是有关任务的概要: 给定对表格单元格的引用: 1查找标记的内容控件(它将是该控件的单个实例) 2删除该控件之后的所有文本和新行 3确保在内容控件和单元格末尾之间保留(插入)一行新行 编辑: Sub Macro2() Dim endOfCell As Integer Dim count As Integer Selection.EndOf Unit:

无法确定如何使用Word对象模型API完成此任务。代码在Microsoft Word加载项中运行,该加载项主要使用VB.Net编写

以下是有关任务的概要:

给定对表格单元格的引用:

1查找标记的内容控件(它将是该控件的单个实例)

2删除该控件之后的所有文本和新行

3确保在内容控件和单元格末尾之间保留(插入)一行新行

编辑:

Sub Macro2()
  Dim endOfCell As Integer
  Dim count As Integer

  Selection.EndOf Unit:=wdCell
  endOfCell = Selection.range.End
  Do While (Selection.Information(wdInContentControl) = False)
    Selection.MoveLeft Unit:=wdCharacter
    count = count + 1
  Loop

  Selection.MoveRight Unit:=wdCharacter
  count = count - 1
  Selection.MoveRight Unit:=wdCharacter, count:=count, Extend:=wdExtend
  Selection.Delete Unit:=wdCharacter, count:=1
End Sub
但不幸的是,当集成到VB.Net MS Word加载项解决方案中时,此代码不起作用

这是我最后(希望)的代码

以下是辅助函数的定义:

Private Function SelectionInsideContentControl(selection As Word.Selection) As Boolean


Dim controls As Word.ContentControls =   selection.Document.SelectContentControlsByTag(STR_IMergeField & "CrossComplaintPartyOneType")

    dim count as Integer = controls.Count

    if count = 0 Then
        Return False
    End If
    Dim control as Word.ContentControl = controls(count)
    If selection.InRange(control.Range) Then
        Return True
    Else 
        Return False
    End If
End Function

StackOverflow不是一个代码编写服务:请向我们展示您已经尝试过的内容,并详细说明它是如何不起作用的/在什么时候您被卡住了。由于您对该网站相对较新,您可能还想花点时间阅读帮助中心中的指南,了解问题中的预期内容。@Cindymister。我可能可以在10-15分钟内在OpenXMLSDK或XSLT中完成这项任务。但到目前为止,我还没有找到一种使用对象模型API编写代码的方法。我试图操纵范围,但遇到“无法编辑范围”、“无法删除范围”错误。这就是为什么我把这个问题贴在这里。我重复一遍:请告诉我们你试过什么。并指示触发错误的行。我最好的猜测是:你的范围包括细胞末端标记。@Cindymister。我刚刚发布了5天前插入的代码。再一次,我没想到会有人为我写代码。我在寻找关于采取的方法的建议。你是说这段代码符合你的要求?如果是,请不要忘记单击左侧的复选标记将其标记为。我注意到没有包括SelectionSideContentControl函数。如果你能把这一点包括在内,它将帮助其他可能有类似问题的人。点击代码下方的“编辑”,将其添加到“答案”中。谢谢。我刚刚添加了helper函数定义。
Private Function SelectionInsideContentControl(selection As Word.Selection) As Boolean


Dim controls As Word.ContentControls =   selection.Document.SelectContentControlsByTag(STR_IMergeField & "CrossComplaintPartyOneType")

    dim count as Integer = controls.Count

    if count = 0 Then
        Return False
    End If
    Dim control as Word.ContentControl = controls(count)
    If selection.InRange(control.Range) Then
        Return True
    Else 
        Return False
    End If
End Function