我有两个代码(在其他用户的帮助下):
#1 使用当前范围制作特定文本字符串并将其放入剪贴板。
#2 从剪贴板复制,删除一些不需要的字符并将修改后的字符串放回剪贴板。
这些代码在公司的一些机器上不起作用。
所有人都检查了 Microsoft Forms 2.0 对象库。
我读过有关使用 HTML 方法的文章,但我不明白。
代码如下:
#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
答案 0 :(得分:1)
这是我编写的两个程序,您可以使用它们与剪贴板进行交互。
Function FromClipboard() As String
'Returns all text currently in the user's clipboard
Dim CB As Object
Set CB = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
CB.GetFromClipboard
FromClipboard = CB.GetText
End Function
Sub IntoClipboard(ByVal Text As Variant)
'Text is a Variant type for 64-Bit Support, but the content should be a String
CreateObject("htmlfile").parentWindow.clipboardData.setData "text", Text
End Sub
这是一个如何使用它的例子
Sub test()
'Before changes
MsgBox FromClipboard
'changing the text
IntoClipboard "Testing"
'After changes
MsgBox FromClipboard
End Sub
该地址 1C3B4210-F441-11CE-B9EA-00AA006B1A69
在 Windows 上有效,但在 Mac 上无效,如果您希望它在 Mac 上有效,您需要为它们找到正确的地址,然后在其中放置一个 If/Else。
答案 1 :(得分:0)
阿方索
您可以尝试将 late binding 用于 MSForms.DataObject
。
无论是否有适当的参考,此代码都应适用于所有机器。
Sub y_chave_danfe()
Dim DataObj As Object
Dim chave As String
Dim danfe As String
Set DataObj = CreateObject( _
"new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
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