【问题标题】:Copy unformatted plain text to the clipboard using VBScript使用 VBScript 将未格式化的纯文本复制到剪贴板
【发布时间】:2014-02-03 19:40:32
【问题描述】:

我在我的 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 和黑色。因此,当它被粘贴到电子邮件或文档中时,格式与现有内容不匹配。

有什么办法可以去掉剪贴板中字符串的格式?

【问题讨论】:

    标签: vbscript ms-word clipboard


    【解决方案1】:

    玩了一会儿之后,我开发了一个不使用 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”区域,并允许访问剪贴板而不生成弹出式确认。

    【讨论】:

    • 请注意,此功能不再适用于 Windows 10。
    猜你喜欢
    • 2014-01-24
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    相关资源
    最近更新 更多