Visual Basic for Applications:
Видалення лапок з рядка

Як?

У VBA є кілька підходів до видалення лапок з рядка. Ось простий приклад використання функції Replace, яка шукає конкретний підрядок (у цьому випадку, лапку) в рядку та замінює його іншим підрядком (пустим рядком, якщо виконується видалення).

Sub RemoveQuotesExample()
    Dim originalString As String
    originalString = "'This' is a ""test"" string."
    
    ' Видалити одинарні лапки
    originalString = Replace(originalString, "'", "")
    
    ' Видалити подвійні лапки
    originalString = Replace(originalString, Chr(34), "")
    
    Debug.Print originalString 'Вивід: This is a test string.
End Sub

Зауважте, що для подвійних лапок ми використовуємо Chr(34), тому що подвійна лапка є символом ASCII з номером 34. Це необхідно, оскільки подвійні лапки також використовуються для позначення літеральних рядків у VBA.

Для більш тонких сценаріїв, де лапки можуть бути частиною необхідного форматування (наприклад, всередині слова в лапках), може знадобитись більш складна логіка, можливо, з використанням Regex або розбору символ за символом.

Поглиблений огляд

VBA, будучи основним засобом автоматизації завдань у пакеті Microsoft Office, пропонує багатий набір функцій для маніпулювання рядками, причому Replace є однією з найчастіше використовуваних функцій. Однак ця функція лише частково відображає можливості VBA з точки зору маніпулювання рядками.

Історично, VBA перейняла від своїх попередників акцент на простоті для задач автоматизації офісних завдань, тому проста реалізація функцій на кшталт Replace. Однак, для сучасних програмувальних задач, особливо тих, що передбачають складні маніпуляції з рядками або їх санітацію, VBA може виявити свої обмеження.

У таких випадках програмісти можуть вдатися до комбінування VBA з регулярними виразами (за допомогою об’єкта VBScript_RegExp_55.RegExp) для більшої гнучкості та потужності у розборі та маніпуляції з рядками. Цей підхід, однак, запроваджує додаткову складність і вимагає міцного розуміння шаблонів regex, що може бути не під силу всім користувачам.

Незважаючи на свої обмеження, функція Replace VBA ефективно покриває багато поширених сценаріїв пов’язаних з видаленням лапок з рядків. Вона служить швидким та легким рішенням для більшості потреб маніпулювання рядками без занурення у більш складну територію regex. Для тих, хто досягає меж можливостей Replace та інших базових функцій маніпулювання рядками, вивчення regex у VBA або розгляд мови, спеціалізованої на складних операціях з рядками, можуть стати наступними кроками.