在 table 中的选定行上方插入一行
Insert a row above a selected row in a table
我知道,我看过这个link:
但是,不幸的是,即使它可能是微不足道的,我也不知道该怎么做。
这是我想要做的:1)在 Table(第一部分运行良好)的末尾添加行(来自 docSource)或 2)添加行(来自 docSource)所选行上方(在 docTarget 上选择的行)(第二部分努力寻找正确的方法)。
Dim docTarget As Document
Dim docSource As Document
Set docTarget = ActiveDocument
Set docSource = Documents.Open(strFileName)
IF SOMETHING THEN
'1) Working code
Dim myRange As Object
Set myRange = docTarget.Content
myRange.Collapse Direction:=wdCollapseEnd
myRange.FormattedText = docSource.Tables(2).Range.FormattedText
ELSE
'2) Can't figure it out
Dim myRange2 As Object
Set myRange2 = docTarget.Content
myRange2.Select 'What? - the row I already highlighted -
Selection.InsertRowsBelow
myRange2.FormattedText = docSource.Tables(2).Range.FormattedText
ENDIF
docSource.Close (0)
Set docSource = Nothing
Set docTarget = Nothing
有关信息,我来自 docSource 或 docTarget 的表格有 3 列,没有合并单元格。
我欢迎任何想法或提示。
谢谢。
我想我找到了答案,感谢 Timothy Rylatt 的耐心等待。但如果您有任何积极的批评或改进(更好的编码),请不要犹豫发表评论。
首先,在打开我的用户表单之前,我得到了这个:
mySelectedRow = Selection.Information(wdEndOfRangeRowNumber)
mySlectedRow 声明为 Public
其次,在用户表单中,我得到了这个:
Private Sub btnOK_Click()
Dim strFileName As String
strFileName = ActiveDocument.Path & "\something\" & cboFileOption.Text
' Open selected item as docSource and assign docTarget to this document
Dim docTarget As Document
Dim docSource As Document
Set docTarget = ActiveDocument
Set docSource = Documents.Open(strFileName)
' Fill docTarget with the content of docSource
Dim myRange As Object
Set myRange = docTarget.Content
If Me.optEndTable.Value = True Then
myRange.Collapse Direction:=wdCollapseEnd
myRange.FormattedText = docSource.Tables(2).Range.FormattedText
Else
docSource.Tables(2).Range.FormattedText.Copy
docTarget.Content.Tables(1).Rows(mySelectedRow).Select
Selection.Rows(Selection.Rows.Count).Range.Paste
End If
' Close selected item (docSource) without saving
docSource.Close (0)
Set docSource = Nothing
Set docTarget = Nothing
' End
Me.Hide
End Sub
希望有道理。
谢谢
我知道,我看过这个link:
这是我想要做的:1)在 Table(第一部分运行良好)的末尾添加行(来自 docSource)或 2)添加行(来自 docSource)所选行上方(在 docTarget 上选择的行)(第二部分努力寻找正确的方法)。
Dim docTarget As Document
Dim docSource As Document
Set docTarget = ActiveDocument
Set docSource = Documents.Open(strFileName)
IF SOMETHING THEN
'1) Working code
Dim myRange As Object
Set myRange = docTarget.Content
myRange.Collapse Direction:=wdCollapseEnd
myRange.FormattedText = docSource.Tables(2).Range.FormattedText
ELSE
'2) Can't figure it out
Dim myRange2 As Object
Set myRange2 = docTarget.Content
myRange2.Select 'What? - the row I already highlighted -
Selection.InsertRowsBelow
myRange2.FormattedText = docSource.Tables(2).Range.FormattedText
ENDIF
docSource.Close (0)
Set docSource = Nothing
Set docTarget = Nothing
有关信息,我来自 docSource 或 docTarget 的表格有 3 列,没有合并单元格。
我欢迎任何想法或提示。
谢谢。
我想我找到了答案,感谢 Timothy Rylatt 的耐心等待。但如果您有任何积极的批评或改进(更好的编码),请不要犹豫发表评论。
首先,在打开我的用户表单之前,我得到了这个:
mySelectedRow = Selection.Information(wdEndOfRangeRowNumber)
mySlectedRow 声明为 Public
其次,在用户表单中,我得到了这个:
Private Sub btnOK_Click()
Dim strFileName As String
strFileName = ActiveDocument.Path & "\something\" & cboFileOption.Text
' Open selected item as docSource and assign docTarget to this document
Dim docTarget As Document
Dim docSource As Document
Set docTarget = ActiveDocument
Set docSource = Documents.Open(strFileName)
' Fill docTarget with the content of docSource
Dim myRange As Object
Set myRange = docTarget.Content
If Me.optEndTable.Value = True Then
myRange.Collapse Direction:=wdCollapseEnd
myRange.FormattedText = docSource.Tables(2).Range.FormattedText
Else
docSource.Tables(2).Range.FormattedText.Copy
docTarget.Content.Tables(1).Rows(mySelectedRow).Select
Selection.Rows(Selection.Rows.Count).Range.Paste
End If
' Close selected item (docSource) without saving
docSource.Close (0)
Set docSource = Nothing
Set docTarget = Nothing
' End
Me.Hide
End Sub
希望有道理。 谢谢