2009-06-23 1 views
1

Я не уверен, что у меня есть правильные условия выше, но то, что я пытаюсь сделать, это вызвать функцию Javascript, передающую в нее параметры из файла Excel , поэтому функция запустится и перечислит элементы в следующем текстовом поле, что позволит мне выбрать правильную запись в этом текстовом поле, а затем выберет последнее поле.Как передать переменные параметры в Javascript-функцию с помощью Excel VBA

Вот код, который у меня есть, это работает, если я не ставлю переменную в него: Call .Document.parentWindow.execScript("FillVendorNames('MyText')", "javascript") Если я кладу в любой переменной вместо «MYTEXT», я получаю ошибку во время выполнения: Call .Document.parentWindow.execScript("FillVendorNames(cCode)", "javascript") Call .Document.parentWindow.execScript("FillVendorNames(.document.all.ComCode)", "javascript") Переменные объявляются ранее в коде, и я могу проверить, правильно ли эти значения используются в окне непосредственных данных, и все они правильные, но я все еще получаю ошибку времени выполнения.

То, что я пытаюсь сделать, это использовать существующую функцию, которая автоматически открывает раскрывающийся список на основе опции, выбранной в исходном раскрывающемся списке. Если я выбираю MyText в первом раскрывающемся списке, то FillVendorNames дает список поставщиков в следующем раскрывающемся списке, позволяя мне выбрать его. Затем я могу выбрать следующий вариант в следующей функции и выбрать третий вариант, но все это основано на первой функции, создающей второй выпадающий список. Первый список автозагружается на странице, но второй нет, поэтому я не могу выбрать его. Может ли кто-нибудь помочь, пожалуйста? Спасибо.

+0

Я думаю, нам понадобится немного больше информации о том, что вы пытаетесь сделать. Какую переменную вы передаете в FillVendorNames? Где находится файл Excel? Я никогда не видел Javascript, выполненный из VBA. Как настроена ваша система? – CoderDennis

+0

Привет, Деннис, На странице много кода, я не хочу раскрывать слишком много работы, чтобы сказать, что я не должен. Файл Excel находится в разделе «Мои документы». Переменные, которые я передаю FillVendorNames, берутся из файла excel с помощью Cells (X, 2), чтобы выбрать соответствующий varialbe для отправки. Не знаете, на какую установку вы ссылаетесь? (бит новичка на этом материале). Функция выполняет то же самое, что и при вводе «Mytext», используя только текст, но если я пытаюсь использовать переменную, она не работает. – DOS

+0

ОК, я думаю, когда вижу Javascript, я думаю, что вы работаете с веб-страницей. Это так? Что делает функция Javascript? Отображается ли выпадающий список на веб-странице? – CoderDennis

ответ

1

Возможны два вопроса:

  • VBA не заменяет имена переменных с их значениями в строках

Пример:

Dim x as String 
x = "Hello world!" 

Msgbox x 
// shows "Hello world!" 

Msgbox "x" 
// shows "x" 
  • Call никогда не требуется (потому что вы вместо этого можно просто опустить скобки) и может вызвать проблемы

Пример:

Call Msgbox("x") 
// is almost exactly the same as 
Msgbox "x" 

Просто используйте:

With foo 
    // do stuff 
    .Document.parentWindow.execScript "FillVendorNames(" & cCode & ")", "javascript" 
    // do more stuff 
End With 
+0

Спасибо Barrowc. Я использовал последний пример, который у вас есть, и он отлично работает. Спасибо за помощь – DOS