我在我的VBScript中使用以下函数将字符串复制到剪贴板而不使用外部clip
命令(由于安全策略,该命令不能并且无法安装):
Function CopyToClipboard(sText)
Dim oWord : Set oWord = CreateObject("Word.Application")
With oWord
.Visible = False
.Documents.Add
.Selection.TypeText sText
.Selection.WholeStory
.Selection.Copy
.Quit False
End With
Set oWord = Nothing
End Function
问题是被复制的字符串带有“normal.dot”模板继承的标准格式。
鉴于我有Word 2003,这种格式是Times New Roman,12pt和黑色。因此,当它粘贴到电子邮件或文档中时,格式与现有内容不匹配。
有没有办法删除剪贴板中字符串的格式?
答案 0 :(得分:3)
在玩了一下后,我开发了一个不使用Word对象模型的解决方案,但是将未格式化的文本复制到剪贴板 - 这就是我需要做的事情:
Function CopyToClipboard(sText)
' Create temporary text file to avoid IE clipboard warnings
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
Dim sTemp : sTemp = fso.GetSpecialFolder(2) & "\" & fso.GetTempName
Dim oFile : Set oFile = fso.CreateTextFile(sTemp, True)
oFile.Write "This file can be safely deleted"
oFile.Close
Set oFile = Nothing
' Start Internet Explorer in the local zone
Dim oIE : Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = 0
oIE.Navigate2 sTemp
Do
WScript.Sleep 100
Loop Until oIE.Document.ReadyState = "complete"
' Copy contents to clipboard
oIE.Document.ParentWindow.ClipboardData.SetData "text", sText
' Clean up
fso.DeleteFile sTemp
Set oIE = Nothing
Set fso = Nothing
End Function
此代码使用Internet Explorer访问剪贴板的功能,以便粘贴sText
的内容。您会注意到about:blank
并未用作起始页面,这是因为它会生成以下警告:
为了解决这个问题,我们在本地创建一个临时文件(带有一些副本以表明它是良性的),然后导航到这个文件。因此,Internet Explorer会在"本地Intranet"中处理此页面。区域并允许访问剪贴板而不生成弹出确认。