Как отправить в форму Google из VBScript (а не из макроса VBA)? - PullRequest
0 голосов
/ 21 января 2020

Я последовал ответу Питера здесь , чтобы создать макрос VBA, который отправляет данные в форму Google, создавая URL-адрес и отправляя его через объект http. Я бы хотел выполнить sh без необходимости открывать Excel, поэтому я конвертирую код VBA в VBS и извлекаю данные из текстового документа. У меня есть работающая версия VBA, но я не могу получить верную версию VBS, и мне нужна помощь. Я все еще новичок в VBS.

Когда я использую код Питера, как написано, этот блок выдает мне ошибку: «Компонент ActiveX не может создать объект: 'MSScriptControl.ScriptControl'

Set http = CreateObject("MSXML2.XMLHTTP")
Set ScriptEngine = CreateObject("MSScriptControl.ScriptControl")
ScriptEngine.Language = "JScript"
ScriptEngine.AddCode "function encode(str) {return encodeURIComponent(str);}"

Когда я удаляю все, кроме строки "Set http = CreateObject (" MSXML2.XMLHTTP "), код работает нормально, но данные попадают в подключенный Google Sheet в одну ячейку, где каждая запись разделяется запятой, вместо каждой записи в отдельной ячейке, как обычно. Я думаю, что это как-то связано с форматированием URL-адреса при его отправке из VBScript, а не с макросом VBA.

Чтобы макрос VBA работал, мне пришлось проверить Microsoft XML. V3.0 в Справочном меню VBA, которое, как мне кажется, позволило работать с частью кода ScriptEngine, но я не знаю, что эквивалентно добавлению ссылки в VBS или даже требуется ли это.

Вот как я изменил код Питера для VBS:

Dim ScriptEngine
Dim http
Dim myURL
Dim strLine
Dim exportLine
Set http = CreateObject("MSXML2.ServerXMLHTTP")

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDataFile = objFSO.OpenTextFile("data_file.csv", ForReading)

strLine = objDataFile.ReadLine
exportLine = Split(strLine,",")

myURL = "https://docs.google.com/forms/d/e/ . . . . /formResponse?" & _
        "entry.xxxxxxxxx=" + exportLine(0) + _
        "&entry.yyyyyyyyy=" + exportLine(1) + _
        "&entry.zzzzzzzzz=" + exportLine(2).Text
http.Open "GET", myURL, False
http.setRequestHeader "User-Agent", "Google Chrome 70.03538.102 (compatible; MSIE _ 
6.0; Windows NT 5.0)"
http.send
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...