VBS Копировать текст в буфер обмена без кавычек - PullRequest
0 голосов
/ 26 февраля 2019

Я пытался получить путь, скопированный Win7-функцией контекстного меню «Копировать путь», этот путь всегда приходит в буфер обмена с кавычками.Я сделал макро в Word, где я сбросил отметки.Затем я попытался сделать это в 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 символа.Поместите текст в метки в буфере обмена, вся строка вернется в буфер обмена.какая-либо причина известна?

1 Ответ

0 голосов
/ 26 февраля 2019

Функция Left определяется следующим образом:

Синтаксис

Left(string, length)

Возвращает указанное количество символов с левой стороныstring.

Вам нужно написать собственную функцию для удаления строки из двойных кавычек:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...