SendKeys не захватывает все данные - PullRequest
0 голосов
/ 31 октября 2019

Я использую код VBA, чтобы взять данные из Excel и заполнить PDF с помощью SendKeys. Это работает для 99% всех моих данных, но я замечаю, что в некоторых случаях данные из Excel не полностью переносятся в PDF.

Например, в ячейке D3 у меня есть текст «17.04% / 17.84%» (примечание - это текстовое поле, поэтому за исключением кавычек, именно так и отформатирован текст).

Когда я запускаю этот код:

Application.SendKeys Sheet10.Range("D3").Value, True
Application.Wait Now + 0.00001

В результате получается "17.04", оставляя знаки процента и другую половину текста.

Я знаю, что sendkeys известныбыть проблематичным, так есть ли альтернативный способ передачи данных Excel в PDF?

Если нет, есть ли способ заставить sendkeys перехватить полный текст? Я попытался добавить «Application.Wait Now + 0.00001», но, похоже, это не решает проблему.

1 Ответ

1 голос
/ 31 октября 2019

Вам необходимо экранировать символы, которые имеют особое значение для SendKeys, например %

Попробуйте:

v = Sheet10.Range("D3").Value

Application.SendKeys Replace(v,"%","{%}"), True

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/sendkeys-statement

Знак плюс (+), символ каретки (^), знак процента (%), тильда (~) и скобки () имеют специальные значения для SendKeys. Чтобы указать один из этих символов, заключите его в фигурные скобки ({}). Например, чтобы указать знак плюс, используйте {+}.

...