Использование строки с? из содержимого ячейки Excel в визуальной базовой

я использую

Range("$AC" & Right(ActiveCell.Address, 2)).Value 

для захвата содержимого столбца AC в строке выбранной ячейки. Содержимое ячейки – это комментарий, я хочу, чтобы пользователь мог писать, чтобы включить в сообщение, которое я генерирую с помощью моего макроса. Например, на данный момент, если у вас есть «Комментарий к ученику 3.» без кавычек в ячейке, он добавляется в тело письма. Комментарий включен в строку strBody а затем включен в сообщение электронной почты, используя следующие две команды (с целевым адресом электронной почты, хранящимся в strTo ):

 strURL = strTo & "&Body=" & strBody 

а также

 ShellExecute 0&, vbNullString, strURL, vbNullString, vbNullString, vbNormalFocus 

На данный момент проблем нет. ЕСЛИ пользователь использует специальный символ, например ? или " в содержимом ячейки Excel». Используя «вырезает остальную часть строки при использовании " создает ошибку »и даже не генерирует электронное письмо.

Итак, вот вопрос: есть ли способ кодировать захват для форматирования содержимого ячейки, чтобы игнорировать специальный символ? Или есть способ, которым я могу написать пользователю свой комментарий, чтобы ? просто рассматривается как ? , Примечание. Я пробовал \? /? "?" "? '? и даже что-то вроде Microsoft.Visual.Chr(34) .

РЕДАКТИРОВАТЬ:

Ответ @stucharo ниже работал отлично! Благодарю. Для тех, кто просит минимальный код, чтобы посмотреть, что происходит (это все еще для меня загадка, так как я просто Frankinstein'ing этот материал вместе) вот он:

 Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" _ Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _ ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long Sub EmailStudent() strTo = "mailto:[email protected]" strSubject = "Email Subject" strBody1 = Range("'Sheet1'!A1") strBody2 = Range("'Sheet1'!A2") strBody3 = Range("'Sheet1'!A3") strBody = strBody1 & "%0D%0A%0D%0A" & strBody2 & "%0D%0A%0D%0A" & strBody3 strBody = Replace(strBody, "?", "%3F") strURL = strTo & "&subject=" & strSubject & "&Body=" & strBody ShellExecute 0&, vbNullString, strURL, vbNullString, vbNullString, vbNormalFocus End Sub 

Текст в A1 A2 и A3 Sheet1 должен быть включен в тело письма. Вы должны запустить клиент Outlook. Я включил исправление для вопросительных знаков, если вы удалили команду Replace и поставили знак вопроса в A2, любой текст после него, включая текст в A3, больше не будет отображаться в письме.

Первому заголовку после адреса должно предшествовать ? и не должно быть никаких небезопасных персонажей в Интернете. В VBA " символ закончит строку и будет незаконный код вне того, что VBA считает строкой.

Замена ? и " с их шестнадцатеричными эквивалентами в вашей веревке тела должны работать.

Пытаться:

 strBody = Replace(strBody, """", "%22") 'to replace the " strBody = Replace(strBody, "?", "%3F") 'to replace the ? 

перед тем, как передать strBody команде ShellExecute .

Подробнее об использовании протокола mailto: вы можете узнать здесь: https://msdn.microsoft.com/en-us/library/aa767737%28v=vs.85%29.aspx

Interesting Posts

Excel; искать среднее значение с выражением if в диапазоне значений

Подключение к MySQL из Excel VBA

Как суммировать количество строк на основе значения в другой ячейке?

Есть ли способ иметь флажок «Отметить отметку», который, если выбрано, вычеркнет всю строку текста?

Perl (или Python) и Excel есть способ определить типы шрифтов, используемые в многострочном тексте в ячейке?

Получить последнюю дату оплаты счета

Как обрабатывать событие Ctrl + keypress в Excel VSTO?

openpyxl, показывающий '=' вместо формулы

MS Excel – вставить формулу из строки с разделителями табуляции

Excel: как преобразовать текст в числовые форматы для нескольких книг

Исключение при создании документа Excel из ретранслятора в asp.net

Как форматировать валюту в ClosedXML как числовой

Чтение листа Excel с использованием POSS XSSF и SAX (Event API)

Как я могу включить несколько условий в выделение ячеек столбца в VBA?

SQL-запрос работает в SQL Server, сбой в Excel (Microsoft Query)

Давайте будем гением компьютера.