我试图获取路径,该路径由上下文菜单“复制路径”的Win7功能复制 该路径总是带有引号的剪贴板。 我在Word中制作了一个Makro,在其中删除了标记。然后,我尝试在VBS中执行此操作,但此操作无效。 在我的测试中,我发现如果执行此代码,引号之间的任何文本集都不会放回剪贴板。 (简体)
Dim string
' Get clipboard text
Set objHTML = CreateObject("htmlfile")
String= objHTML.ParentWindow.ClipboardData.GetData("text")
String = Left(String,2)
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /c echo " & String & " | clip", 0, TRUE
在文本不带引号的情况下有效-仅剩2个字符。在剪贴板中的标记中放置文本,将整个字符串放回剪贴板中。有什么已知的原因吗?
答案 0 :(得分:0)
Left
Function的定义如下:
语法
Left(string, length)
从a的左侧返回指定数量的字符 字符串。
您需要编写自己的函数以从双引号中去除字符串:
VBScript :
option explicit
Function Dequote( sString )
If Left( sString, 1 ) = """" And Right( sString, 1 ) = """" Then
Dequote = Mid( sString, 2, Len( sString) - 2)
Else
Dequote = sString
End If
End Function
Dim String, objHTML, WshShell
' Get clipboard text
Set objHTML = CreateObject( "htmlfile")
String = objHTML.ParentWindow.ClipboardData.GetData( "text")
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /c echo(" & Dequote( String) & "|clip", 0, TRUE
Wscript.Echo String, Dequote( String) ' debugging output
VBA (单行if
语法,未验证):
Private Function Dequote(S As String) As String
If Left(S, 1) = """" And Right(S, 1) = """" Then Dequote = Mid(S, 2, Len(S) - 2) Else Dequote = S
End Function