Lotus notes 将剪贴板中的内容粘贴到新节内的rtfield中

Lotus notes 将剪贴板中的内容粘贴到新节内的rtfield中,lotus-notes,lotusscript,Lotus Notes,Lotusscript,我有一个大问题=) 我将电子邮件的正文内容复制到剪贴板,并需要将此内容粘贴到richtextfield中 我现在的问题是,要将剪贴板中的内容粘贴到分区中 因此,我必须在用户所在的当前Richtextfield中创建一个分区,并将剪贴板中的内容粘贴到该分区中 我用不同的方法试过,但都不管用。 也许有一种使用RTNavigator或ranges的解决方案,但我不知道 有人能给我一个可能的解决方案吗 提前谢谢 Dim s As New NotesSession Dim db As NotesDatab

我有一个大问题=) 我将电子邮件的正文内容复制到剪贴板,并需要将此内容粘贴到richtextfield中

我现在的问题是,要将剪贴板中的内容粘贴到分区中

因此,我必须在用户所在的当前Richtextfield中创建一个分区,并将剪贴板中的内容粘贴到该分区中

我用不同的方法试过,但都不管用。 也许有一种使用RTNavigator或ranges的解决方案,但我不知道

有人能给我一个可能的解决方案吗

提前谢谢

Dim s As New NotesSession
Dim db As NotesDatabase
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim currField As String
Dim rtitem As NotesRichTextItem
Dim style As NotesRichTextStyle
Dim color As NotesColorObject

Set uidoc = ws.Currentdocument
Set db = s.Currentdatabase
Dim DummyDoc As NotesDocument
Dim DummyRT As NotesRichTextItem

currField = uidoc.Currentfield

'Create DummyDoc
Set DummyDoc = db.CreateDocument 
Call DummyDoc.Createrichtextitem("dummy")
Set DummyRT = DummyDoc.Createrichtextitem("DummyRT")
Call DummyDoc.Save(True,True)

'Open DummyDoc in workspace
Dim dummyUIDoc As NotesUIDocument
Set dummyUIDoc = ws.Editdocument(True, DummyDoc,True)

'Paste copied content
Call dummyUIDoc.Gotofield("dummy")
Call dummyUIDoc.Paste()
Call dummyUIDoc.Refresh(True,False,True)
Call dummyUIDoc.Save()
Call dummyUIDoc.Close(True)

'Create Section
Dim secUIDoc As NotesUIDocument

Set style = s.CreateRichTextStyle
Set color = s.CreateColorObject

Call DummyRT.BeginSection("", style, color, True)
Call DummyRT.EndSection

Call DummyDoc.Save(True, False, False)
Set secUIDoc = ws.EditDocument(True, DummyDoc)
Call DummyDoc.Remove(True)

Call secUIDoc.Gotofield("DummyRT")
Call secUIDoc.Selectall()
Call secUIDoc.Copy()
Call secUIDoc.Close(true)

'Paste generated content
Call uidoc.Gotofield(currField) 
Call uidoc.Paste()  

Dim range As NotesRichTextRange 
Dim count As Integer 
Dim nav As NotesRichTextNavigator

Set rtitem = uidoc.Document.Getfirstitem(currField)

Set range = rtitem.CreateRange 
Set nav = rtitem.CreateNavigator
Call nav.FindFirstString("#PH#") 
Call range.SetBegin(nav) 
Call range.SetEnd(nav) 
Call range.Remove 
Call uidoc.Paste()
第二次尝试

Dim s As New NotesSession
Dim db As NotesDatabase
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim currField As String
Dim rtitem As NotesRichTextItem
Dim style As NotesRichTextStyle
Dim color As NotesColorObject

Set uidoc = ws.Currentdocument
Set db = s.Currentdatabase
Dim DummyDoc As NotesDocument
Dim DummyRT As NotesRichTextItem

currField = uidoc.Currentfield

'Insert Section
Set DummyRT = uidoc.Document.Getfirstitem(currField)
Call DummyRT.Beginsection("",style,color,true)
Call DummyRT.Appendtext("Test")
Call DummyRT.Endsection()
Call uidoc.Reload()

Call uidoc.Gotofield(currField)

Call uidoc.Paste()

BreakingPar具有访问windows剪贴板的代码:

您似乎对使用RTNavigators有一些疑问,我认为这是解决问题的方法。希望它能对您有所帮助,我提供了一个使用RTNavigators添加表的按钮。我没有使用过分区,但我认为这可能会有所帮助

干杯, 布莱恩


或者,如果您知道原始字段的名称,可以使用下面的代码将RT字段从一个文档复制到另一个文档。“NewLink”是我的源字段的名称

干杯, 布莱恩


请向我们展示您尝试的方法的代码,并告诉我们在尝试这些方法时发生了什么。您能告诉我Call uidoc.Refresh(True)[刷新RT字段]和Call.uidoc.Refresh(True,True,True)的3个参数选项之间的区别吗?notes文档只引用了一个参数,这一行有一些代码错误。你的帖子是我找到的为数不多的推荐信之一-/我认为OP中的三个参数uidoc.Refresh是一个错误。我不知道有一个正确的3参数uidoc.Refresh
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim firstDoc As NotesDocument
Dim tableDoc As New NotesDocument(db)
Set uidoc = ws.CurrentDocument
Dim univID As String
Set firstDoc = uidoc.Document
univID = firstDoc.UniversalID
Call uidoc.Close    
Msgbox univID
Dim tableItem As NotesRichTextItem  
Call tableDoc.ReplaceItemValue("Form","Table Holder")   
Dim body As New NotesRichTextItem(tableDoc,"BuiltTable")
rowCount% = 4
columnCount% = 4
        'Order the table
Call body.AppendTable(rowCount%,columnCount%)
Dim rtnav As NotesRichTextNavigator
Set rtnav = body.CreateNavigator
Call rtnav.FindFirstElement(RTELEM_TYPE_TABLECELL)

For iRow% = 1 To rowCount% Step 1
    For iColumn% = 1 To columnCount% Step 1
        Call body.BeginInsert(rtnav)
        Call body.AppendText("Row " & iRow% & ", Column " & iColumn%)
        Call body.EndInsert
        Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
    Next
Next
Call tableDoc.Save(True, False) 
Set tableItem = tableDoc.GetFirstItem("BuiltTable")
'Call tableItem.CopyItemToDocument(doc,"TableTarget")
Call tableItem.CopyItemToDocument(firstDoc, "TableTarget")
Call firstDoc.Save(True,False)
Call ws.ViewRefresh
Call ws.EditDocument(True,firstDoc,False)
End Sub
Dim thisDoc As NotesDocument
Dim thisRT As Variant
Dim newRT As Variant
Dim newDoc As NotesDocument
Set uiws = New NotesUIWorkspace
Set sess = New NotesSession
Set db = sess.CurrentDatabase
Set thisuidoc = uiws.CurrentDocument
Set thisDoc = thisuidoc.Document    
Set thisRT = thisDoc.GetFirstItem("NewLink")
Set newDoc = db.CreateDocument
newDoc.Form = "RT"
Call newDoc.Save(True,False)    
Set newRT =  New NotesRichTextItem(newdoc,"newRTfield")
Call thisuidoc.Close
Call newRT.AppendRTItem(thisRT)
Call newdoc.Save(True,False)    
Set newuidoc = uiws.EditDocument(True, newDoc)