Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
Excel VBA剪贴板-从和复制到_Excel_Vba_String_Clipboard - Fatal编程技术网

Excel VBA剪贴板-从和复制到

Excel VBA剪贴板-从和复制到,excel,vba,string,clipboard,Excel,Vba,String,Clipboard,我在使用VBA剪贴板时遇到很多问题,我需要帮助。 我有两个代码(在其他用户的帮助下,非常感谢!): #1使用当前范围生成特定文本字符串并将其放入剪贴板… #从剪贴板复制2次,删除一些不需要的字符,并将修改后的字符串放回剪贴板。 问题是这些代码在公司的一些机器中起作用。它们都已选中Microsoft Forms 2.0对象库我读过关于使用HTML方法的文章,但我想不出来。 代码如下: 阿丰索 您可以尝试使用forMSForms.DataObject 该代码应适用于所有机器,无论它们是否具有适当的

我在使用VBA剪贴板时遇到很多问题,我需要帮助。
我有两个代码(在其他用户的帮助下,非常感谢!):
#1使用当前范围生成特定文本字符串并将其放入剪贴板…
#从剪贴板复制2次,删除一些不需要的字符,并将修改后的字符串放回剪贴板。
问题是这些代码在公司的一些机器中起作用。它们都已选中Microsoft Forms 2.0对象库我读过关于使用HTML方法的文章,但我想不出来。

代码如下:

阿丰索

您可以尝试使用for
MSForms.DataObject

该代码应适用于所有机器,无论它们是否具有适当的参考

Sub y_chave_danfe()
Dim DataObj作为对象
像绳子一样的暗条纹
暗丹菲如弦
设置DataObj=CreateObject(_
“新:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}”)
关于错误转到错误处理程序
DataObj.GetFromClipboard
chave=DataObj.GetText
danfe=替换(替换(替换(替换(chave,“,”),“/”,“),“-”,“,”,“,”),“,”,”,“,”,”)
使用DataObj
塞特克斯丹夫先生
.PutInClipboard
以
错误处理程序:
出口接头
端接头

以下是我编写的两个程序,可用于与剪贴板交互

函数FromClipboard()作为字符串
'返回当前用户剪贴板中的所有文本
将CB作为对象
设置CB=CreateObject(“新:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}”)
CB.GetFromClipboard
FromClipboard=CB.GetText
端函数
子输入剪贴板(ByVal文本作为变体)
'文本是64位支持的变体类型,但内容应为字符串
CreateObject(“htmlfile”).parentWindow.clipboardData.setData“文本”,文本
端接头
下面是一个如何使用它的示例

子测试()
"变化之前,
来自剪贴板的MsgBox
“更改文本
“测试”
"变后,
来自剪贴板的MsgBox
端接头

该地址
1C3B4210-F441-11CE-B9EA-00AA006B1A69
适用于Windows,但不适用于Mac,如果您想在Mac上使用该地址,您需要为其找到正确的地址,然后在其中添加if/Else。

感谢您的回复,但它无法正常工作。在我的机器里是这样的,其他机器则不是。我更改了您显示的代码,它返回了两个未知符号(在两个代码上)。它怎么不起作用?错误?意外结果?两个代码都应该返回一些东西(#1是一个名称和数字,#2只是一个长数字),但它们什么也不粘贴,我在“单词”上测试了粘贴,结果显示有两个框(?)如果您使用原始代码进行测试工作?原始代码返回相同的情况,在我的工作站上,它做得很好,在其他工作站上,他们什么也不退(或那些盒子)。非常感谢你的贡献。这种方法在我的同事工作站上奏效了。谢谢。
#1
Sub x_copiar_nome_arquivo()

    Dim DataObj As New MSForms.DataObject
    Dim arquivo As String

    On Error GoTo ErrorHandler
    With Selection.Rows(1).EntireRow
        arquivo = .Range("G1").Value & " - " & Format(.Range("E1").Value, "#000000000")
    End With
    With DataObj
        .SetText arquivo
        .PutInClipboard
    End With

ErrorHandler:
Exit Sub

End Sub
#2
Sub y_chave_danfe()


        Dim DataObj As New MSForms.DataObject
        Dim chave As String
        Dim danfe As String

        On Error GoTo ErrorHandler
        DataObj.GetFromClipboard
        chave = DataObj.GetText
        danfe = Replace(Replace(Replace(Replace(Replace(chave, " ", ""), "/", ""), "-", ""), ".", ""), "_", "")
        With DataObj
                .SetText danfe
                .PutInClipboard
        End With

ErrorHandler:
Exit Sub

End Sub