Excel vba замена кавычек

Zakir

5 / 5 / 0

Регистрация: 02.02.2013

Сообщений: 51

1

14.01.2014, 20:15. Показов 13207. Ответов 3

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Добрый день. Буду признателен за помощь. Проблема такая: обрабатываю excel файл, и необходимо двойные кавычки («) заменить на символ «_». На форуме подобную ветку находил, но разобраться не смог. Вот часть моего кода:

Visual Basic
1
Cells(i, 3) = Replace(Cells(i, 3), "Chr(34)", "_")



0



Апострофф

Заблокирован

14.01.2014, 20:18

2

Visual Basic
1
Cells(i, 3) = Replace(Cells(i, 3), Chr(34), "_")

или

Visual Basic
1
Cells(i, 3) = Replace(Cells(i, 3), """", "_")

?



1



997 / 408 / 165

Регистрация: 08.02.2013

Сообщений: 695

14.01.2014, 20:19

3

Убери кавычки из «Chr(34)», просто Chr(34) — это не строка, а функция возвращающая символ кавычек.
П.С. Почему бы не пользоваться функциями поиска и замены в excel?



1



5 / 5 / 0

Регистрация: 02.02.2013

Сообщений: 51

14.01.2014, 22:28

 [ТС]

4

Апострофф, rRczZZ, Премного благодарен. Почему не через функцию экселя?Решил написать макрос, так как нужно сделать замену символов, артикулов и т.д.



0



 

Добрый день!  
Написал код, который д/заменять в выделенных ячейках кавычки excel на наши. Он почему-то заменяет только первое вхождение.  
Где ошибка?  
С уважением,

 

Четвертый аргумент функции ПОДСТАВИТЬ — не номер символа, а номер вхождения, т.е. не j, а i:  
v = Application.WorksheetFunction.Substitute(v, av, o, i)  

  Но так тоже не работает до конца, лень разбираться почему. Проще так:  
Mid(v, j) = o

 

i это порядковый номер кавычки в тексте  
j — позиция этой кавычки

 

Так и я о том же.  
Попробуйте — добавил логики на случай непарных кавычек:  

  Sub kavyc1()  
Dim j&, cell As Range, v$, lr As Boolean ‘False — левая кавычка, True — правая  
For Each cell In Selection  
   v = cell.Value  
   j = InStr(v, «»»»)  
   lr = False ‘первая кавычка — левая  
   Do Until j = 0  
       If j = Len(v) Then  
           lr = True ‘кавычка в конце строки — правая  
       ElseIf j > 1 Then  
           If Mid$(v, j — 1, 1) = » » Then lr = False ‘после пробела левая кавычка  
           If Mid$(v, j + 1, 1) = » » Then lr = True ‘перед пробелом правая кавычка  
       End If  
       Mid$(v, j) = IIf(lr, «»», ««») ‘IIf(lr, Chr$(187), Chr$(171))  
       lr = Not lr  
       j = InStr(j, v, «»»»)  
   Loop  
   cell.Value = v  
Next cell  
End Sub

 

оказывается, Mid можно и так использовать  
Sub kavyc()  
Dim i&, j&  
Dim o, z, v, av  
o = Chr(171)  
z = Chr(187)  
av = Chr(34)  
Dim r As Range  
Dim cell  
Set r = Selection  

  For Each cell In r  
v = cell.Value  
sss = Application.WorksheetFunction.Trim(v)  
sss = Application.WorksheetFunction.Substitute(v, av, «»)  
If Len(sss) < Len(v) Then  
j = 0  
For i = 1 To Len(v) — Len(sss)  
j = InStr(j + 1, v, av)  
If j = 1 Then  
Mid(v, j, 1) = o  
Else  
If Mid(v, j — 1, 1) = » » Or Mid(v, j — 2, 1) = » » Then  
Mid(v, j, 1) = o  
Else  
Mid(v, j, 1) = z  
End If  
End If  
Next i  
cell.Value = v  
End If  
Next cell  
End Sub

 

Владимир

Пользователь

Сообщений: 8196
Регистрация: 21.12.2012

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(C4;»»»»;»«»;1);»»»»;»»»;1);»»»»;»«»;1);»»»»;»»»;1)  

  —  
Можно ли использовать функцию =ПОВТОР для повтора функций, т.е не только для текста и ссылок на ячейки? В данном случае было бы:  

  =ПОВТОР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(C4;»»»»;»«»;1);»»»»;»»»;1);(ДЛСТР(C4)-ДЛСТР(ПОДСТАВИТЬ(C4;»»»»;»»)))/2)  

  ..но, не получается.

«..Сладку ягоду рвали вместе, горьку ягоду я одна.»

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

=ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(» «&C4;» «&СИМВОЛ(34);» «&СИМВОЛ(171));СИМВОЛ(34);СИМВОЛ(187));2;ДЛСТР(C4))

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Владимир

Пользователь

Сообщений: 8196
Регистрация: 21.12.2012

{quote}{login=ikki}{date=18.05.2011 08:04}{thema=}{post}=ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(» «&C4;» «&СИМВОЛ(34);» «&СИМВОЛ(171));СИМВОЛ(34);СИМВОЛ(187));2;ДЛСТР(C4)){/post}{/quote}  

  ..ПСТР можно опустить.

«..Сладку ягоду рвали вместе, горьку ягоду я одна.»

 

webley

Пользователь

Сообщений: 1991
Регистрация: 01.01.1970

Вариант UDF  
Function test(Ren)  
   Dim n, j  
   n = 1  
   test = Ren  
   For j = 1 To Len(test)  
       If Asc(Mid(test, j, 1)) = 34 Then  
           test = Replace(Left(test, j), Chr(34), Chr(IIf(n = 1, 171, 187))) & Right(test, Len(test) — j)  
           n = -1 * n  
       End If  
   Next j  
End Function

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

конечно, надо понимать, что в моей формуле открывающей считается кавычка, либо стоящая первой в ячейке, либо та, перед которой находится пробел. все остальные кавычки считаются закрывающими.  

  соответствующая UDF:  

  Function ff(s As String) As String  
 With Application.WorksheetFunction  
   ff = Mid(.Substitute(.Substitute(» » & s, » » & Chr(34), » » & Chr(171)), Chr(34), Chr(187)), 2, Len(s))  
 End With  
End Function

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

{quote}{login=Владимир}{date=18.05.2011 08:14}{thema=Re: }{post}  
..ПСТР можно опустить.{/post}{/quote}  

  так пробел же останется :)  
но можно ПРАВСИМВ(…, ДЛСТР(C4))

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Владимир

Пользователь

Сообщений: 8196
Регистрация: 21.12.2012

#12

18.05.2011 08:31:05

Прошу прощения, пробел не заметил..

«..Сладку ягоду рвали вместе, горьку ягоду я одна.»

Содержание

  1. VBA Excel. Кавычки в коде — двойные и ёлочки
  2. Двойные кавычки
  3. Кавычки «ёлочки»
  4. Неправильная замена двойных кавычек вместо двойных угловых кавычек VBA Word
  5. 2 ответа
  6. Кавычки в строковых выражениях
  7. Включить одинарные кавычки
  8. Включить двойные кавычки
  9. Включение переменной, представляющей кавычки
  10. Поддержка и обратная связь
  11. Как вы используете «(двойные кавычки) в формуле в OpenOffice VBA? Например, с помощью Replace()
  12. 1 ответ
  13. VBA Excel. Работа с текстом (функции)
  14. Функции для работы с текстом
  15. Ключевые слова для работы с текстом
  16. Примеры
  17. Вывод прямых парных кавычек

VBA Excel. Кавычки в коде — двойные и ёлочки

Двойные кавычки и кавычки «ёлочки» в коде VBA Excel. Коды символов кавычек и ввод кавычек «ёлочек» в редакторе VBA Excel с клавиатуры. Примеры.

Двойные кавычки

Двойные прямые кавычки ( «Весна» ) обычно называют просто «двойные кавычки» или «прямые кавычки», так как в текстах они встречаются намного чаще одинарных прямых кавычек ( ‘Весна’ ).

В VBA Excel прямые кавычки являются специальными символами, обозначающими текст:

Переменной x присваивается строка (текст): Магазин Весна открыт .

Если мы хотим отобразить эту строку со словом «Весна» в двойных кавычках, необходимо слово в прямых кавычках экранировать еще одной парой двойных кавычек ( «»Весна»» ) или использовать функцию Chr, возвращающую символ по его числовому коду. Числовой код прямых кавычек — 34.

Пример добавления двойных прямых кавычек внутри текста из кода VBA Excel:

Кавычки «ёлочки»

Двойные кавычки «ёлочки» обычно называют просто кавычки «ёлочки» , так как одинарные ‹ёлочки› встречаются очень редко.

Двойные кавычки «ёлочки» не являются спецсимволами, поэтому в строках внутри процедур VBA Excel их можно использовать не только через функцию Chr по числовому коду символа, но и ввести с клавиатуры.

Ввод «ёлочек» с клавиатуры в редакторе VBA Excel осуществляется также с помощью числовых кодов символов открывающей и закрывающей кавычек:

  • числовой код открывающей кавычки ( « ) — 171;
  • числовой код закрывающей кавычки ( » ) — 187.

Сочетания клавиш для ввода «ёлочек» с клавиатуры:

  • Alt+0171 — ввод открывающей кавычки ( « );
  • Alt+0187 — ввод закрывающей кавычки ( » ).

Обратите внимание, что для ввода «ёлочек» с клавиатуры используется левая клавиша Alt, а числовой код набирается на цифровом блоке справа.

Пример добавления двойных кавычек «ёлочки» внутри текста из кода VBA Excel:

Источник

Неправильная замена двойных кавычек вместо двойных угловых кавычек VBA Word

Я пытаюсь заменить все Left and Right double angle quotes chr (171) и chr (187), а затем пробел chr (32), то есть « или » , только chr (171) или chr (187) соответственно.

Замените это «« Abc «на это» «Abc «

Замените это « xyz» на это « xyz» ».

Я использую приведенный ниже код, но после замены символ представляет собой двойную кавычку “ вместо двойной кавычки «

Как это исправить? Заранее спасибо.

2 ответа

Прежде всего, Chr(171) и Chr(187) не являются угловыми кавычками. Они могут быть в определенных местах, но в других они будут разными персонажами. Вы хотите использовать ChrW(171) и ChrW(187) .

Имея это в виду, ваш код на самом деле работает и корректно заменяет кавычку, но затем параметры Word Файл — — — Проверка — — автозамена — Автоформат по мере ввода — Прямые кавычки с умными кавычками включаются и заменяют заключительные « на “ .

Один из вариантов — отключить эту функцию:

Другой вариант — использовать сопоставление с подстановочными знаками, захватить угловую кавычку как отдельную группу и указать это в подстановочном подстановочном знаке:

По какой-то причине в этом случае функция умного цитирования не срабатывает.

Вероятно, вы включили .AutoFormatAsYouTypeReplaceQuotes , и ваше Слово заменяет chr (171) («) на» «.

Если Вы хотите просто отключить это для функции Find & Replace, сделайте вот что:

Если Вы хотите просто отключить это (не возвращаясь к основным настройкам), поставьте

Источник

Кавычки в строковых выражениях

В ситуациях, когда необходимо создать строки для объединения, может потребоваться внедрить строку в другую строку или строковую переменную в строку. Ситуации, в которых может потребоваться вложить одну строку в другую, включают:

При указании условий для агрегатных функций домена.

При указании условий для методов Find .

При указании условий для свойства Filter или ServerFilter формы.

При создании строк SQL.

Во всех этих экземплярах Access должен передавать строку ядру СУБД Access. Например, при указании аргумента условия для агрегатной функции домена Access необходимо оценить все переменные, сцепить их в строку, а затем передать всю строку в ядро СУБД Access.

При внедрении числовой переменной Access вычисляет переменную и просто объединяет значение в строку. Однако если переменная является текстовой строкой, результирующая строка условия будет содержать строку в строке. Строка в строке должна быть определена разделителями строк. В противном случае ядро СУБД Access не сможет определить, какая часть строки является нужным значением.

Строковые разделители на самом деле не являются частью самой переменной, но они должны быть включены в строку в аргументе условия . Существует три разных способа создания строки в аргументе условия . Каждый метод приводит к подобию аргумента условия , который выглядит как в одном из следующих примеров.

Включить одинарные кавычки

В аргумент условия следует включить одинарные кавычки таким образом, чтобы при сцеплях значения переменной в строку оно заключалось в одинарные кавычки. Например, предположим, что аргумент условия должен содержать строковую переменную с именем strName . Аргумент условия можно создать, как показано в следующем примере:

Когда переменная strName вычисляется и объединяется в строку условия , строка условия становится:

Этот синтаксис не позволяет использовать апострофы (‘) в значении самой переменной. Если значение строковой переменной содержит апостроф, Access создает ошибку во время выполнения. Если переменная может представлять значения, содержащие апострофы, рассмотрите возможность использования одной из других форм синтаксиса, описанных в следующих разделах.

Включить двойные кавычки

Следует включить двойные кавычки в аргумент условия таким образом, чтобы при вычислении значения переменной оно заключалось в кавычки. В строке необходимо использовать два набора двойных кавычек, чтобы представить один набор двойных кавычек. Аргумент условия можно создать, как показано в следующем примере:

Когда переменная strName вычисляется и объединяется с аргументом условия , каждый набор из двух двойных кавычек заменяется одной кавычки. Аргумент условия становится следующим:

Этот синтаксис может показаться более сложным, чем синтаксис одной кавычки, но он позволяет внедрить строку, содержащую апостроф, в аргумент условия . Он также позволяет вложить одну или несколько строк во внедренную строку.

Включение переменной, представляющей кавычки

Можно создать строковую переменную, представляющую двойные кавычки, и объединить эту переменную в аргумент условия вместе со значением переменной. Представление ANSI для двойных кавычек : Chr$(34) это значение можно присвоить строковой переменной с именем strQuote . Затем можно создать аргумент условия , как показано в следующем примере:

Когда переменные вычисляются и объединяются в аргумент условия , аргумент условия становится следующим:

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Как вы используете «(двойные кавычки) в формуле в OpenOffice VBA? Например, с помощью Replace()

Я хочу заменить двойные кавычки » на двойные кавычки с обратной косой чертой — » .

Я читал в Интернете, что вы можете использовать двойные кавычки в VBA, если вы используете две двойные кавычки внутри основных двойных кавычек. Но, похоже, это не сработало для меня. Например, я попробовал следующий код:

Когда я тестировал ее, эта функция успешно заменила одинарную обратную косую черту и одинарные кавычки, но не двойные кавычки.

Я также читал, что вы можете использовать CHR(34) и в других местах использовать CHR(147). Но и это не сработало. Я попробовал следующие строки:

Но проверить это с ячейкой с двойными кавычками не получилось. Я делаю что-то неправильно? Как я могу использовать двойные кавычки с функцией Replace()?

1 ответ

Когда я ввел a»b в ячейку, Calc преобразовал его в правую двойную кавычку, а не в левую. Добавление этой строки заставило его работать:

Имейте в виду, что x94 (десятичное число 148) — это расширенный кодированный символ ASCII, чего я бы избегал любой ценой. Настоятельно рекомендуется использовать только первые 128 символов в качестве ASCII и использовать Unicode для всего остального.

Значение Юникода для правой двойной кавычки — U+201D . К сожалению, по-видимому, в LibreOffice Basic нет собственного способа работы с такими значениями. Существует ChrW, но для этого требуется VBA вариант совместимости. Другой способ — вызвать функцию электронной таблицы UNICODE() из Basic, но это громоздко.

Мое предпочтение: не используйте Basic для чего-то важного. Вместо этого макросы LibreOffice могут быть написаны на Python, который имеет сильную поддержку Unicode.

ИЗМЕНИТЬ :

Вчера я забыл упомянуть одну вещь: выберите кавычку в строке формул и нажмите Alt + x , чтобы узнать, что это на самом деле. Это преобразует его в значение Unicode, а затем обратно.

ИЗМЕНИТЬ 2 :

Все верно — Alt+X работает только в LibreOffice, а не в AOO. Также по какой-то причине приведенный выше расширенный код ASCII не работает в AOO. Может быть, это не так уж и плохо. Во всяком случае, вот подход к доступу к функциям электронной таблицы Unicode, и он работает для меня как в AOO, так и в LO.

Источник

VBA Excel. Работа с текстом (функции)

Работа с текстом в коде VBA Excel. Функции, оператор & и другие ключевые слова для работы с текстом. Примеры использования некоторых функций и ключевых слов.

Функции для работы с текстом

Основные функции для работы с текстом в VBA Excel:

Функция Описание
Asc(строка) Возвращает числовой код символа, соответствующий первому символу строки. Например: MsgBox Asc(«/Stop»). Ответ: 47, что соответствует символу «/».
Chr(код символа) Возвращает строковый символ по указанному коду. Например: MsgBox Chr(47). Ответ: «/».
Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear]) Преобразует число, дату, время в строку (тип данных Variant (String)), отформатированную в соответствии с инструкциями, включенными в выражение формата. Подробнее…
InStr([начало], строка1, строка2, [сравнение]) Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с начала строки. Подробнее…
InstrRev(строка1, строка2, [начало, [сравнение]]) Возвращает порядковый номер символа, соответствующий первому вхождению одной строки (строка2) в другую (строка1) с конца строки. Подробнее…
Join(SourceArray,[Delimiter]) Возвращает строку, созданную путем объединения нескольких подстрок из массива. Подробнее…
LCase(строка) Преобразует буквенные символы строки в нижний регистр.
Left(строка, длина) Возвращает левую часть строки с заданным количеством символов. Подробнее…
Len(строка) Возвращает число символов, содержащихся в строке.
LTrim(строка) Возвращает строку без начальных пробелов (слева). Подробнее…
Mid(строка, начало, [длина]) Возвращает часть строки с заданным количеством символов, начиная с указанного символа (по номеру). Подробнее…
Replace(expression, find, replace, [start], [count], [compare]) Возвращает строку, полученную в результате замены одной подстроки в исходном строковом выражении другой подстрокой указанное количество раз. Подробнее…
Right(строка, длина) Возвращает правую часть строки с заданным количеством символов. Подробнее…
RTrim(строка) Возвращает строку без конечных пробелов (справа). Подробнее…
Space(число) Возвращает строку, состоящую из указанного числа пробелов. Подробнее…
Split(Expression,[Delimiter],[Limit],[Compare]) Возвращает одномерный массив подстрок, извлеченных из указанной строки с разделителями. Подробнее…
StrComp(строка1, строка2, [сравнение]) Возвращает числовое значение Variant (Integer), показывающее результат сравнения двух строк. Подробнее…
StrConv(string, conversion) Изменяет регистр символов исходной строки в соответствии с заданным параметром «conversion». Подробнее…
String(число, символ) Возвращает строку, состоящую из указанного числа символов. В выражении «символ» может быть указан кодом символа или строкой, первый символ которой будет использован в качестве параметра «символ». Подробнее…
StrReverse(строка) Возвращает строку с обратным порядком следования знаков по сравнению с исходной строкой. Подробнее…
Trim(строка) Возвращает строку без начальных (слева) и конечных (справа) пробелов. Подробнее…
UCase(строка) Преобразует буквенные символы строки в верхний регистр.
Val(строка) Возвращает символы, распознанные как цифры с начала строки и до первого нецифрового символа, в виде числового значения соответствующего типа. Подробнее…
WorksheetFunction.Trim(строка) Функция рабочего листа, которая удаляет все лишние пробелы (начальные, конечные и внутренние), оставляя внутри строки одиночные пробелы.

В таблице перечислены основные функции VBA Excel для работы с текстом. С полным списком всевозможных функций вы можете ознакомиться на сайте разработчика.

Ключевые слова для работы с текстом

Ключевое слово Описание
& Оператор & объединяет два выражения (результат = выражение1 & выражение2). Если выражение не является строкой, оно преобразуется в Variant (String), и результат возвращает значение Variant (String). Если оба выражения возвращают строку, результат возвращает значение String.
vbCrLf Константа vbCrLf сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит последующий текст на новую строку (результат = строка1 & vbCrLf & строка2).
vbNewLine Константа vbNewLine в VBA Excel аналогична константе vbCrLf, также сочетает в себе возврат каретки и перевод строки (Chr(13) + Chr(10)) и переносит текст на новую строку (результат = строка1 & vbNewLine & строка2).

Примеры

Вывод прямых парных кавычек

Прямые парные кавычки в VBA Excel являются спецсимволами и вывести их, заключив в самих себя или в одинарные кавычки (апострофы), невозможно. Для этого подойдет функция Chr:

Источник

In this Article

  • Replace Function
    • Starting Position
    • Replace a Few Occurrences Only
    • Case Sensitivity
    • Double Quotes
    • Replace Break Line in Cell

This tutorial will demonstrate how to use the VBA Replace Function to replace strings of text.

Replace Function

The VBA Replace function replaces a substring of text with another substring.

Sub ReplaceExample_1()
MsgBox Replace("ABCABCABC", "A", "!")       
'Result is: "!BC!BC!BC"
MsgBox Replace("I like pink, red and black", "pink", "purple")
'Result is: "I like purple, red and black"
MsgBox Replace("A, B, C, A, B, C, A, B, C", ", ", ",")
'Result is: "ABCABCABC"

MsgBox Replace("ABCABCABC", "ABC", "!")
'Result is: "!!!"
MsgBox Replace("ABCABCABC", "ABc", "!")
'Result is: "ABCABCABC"
MsgBox Replace("ABCABCABC", "ZBC", "!")
'Result is: "ABCABCABC"

End Sub

Starting Position

By assigning a start position, you can indicate what character position to start with (default = 1).

Sub ReplaceExample_2()
MsgBox Replace("ABCABCABC", "A", "123")        'Result is: "123BC123BC123BC"
MsgBox Replace("ABCABCABC", "A", "123", 2)     'Result is: "BC123BC123BC"
MsgBox Replace("ABCABCABC", "A", "123", 7)     'Result is: "123BC"
MsgBox Replace("ABCABCABC", "A", "123", 8)     'Result is: "BC"

MsgBox Replace("ABCABCABC", "ABC", "!@")        'Result is: "!@!@!@"
MsgBox Replace("ABCABCABC", "ABC", "!@", 2)     'Result is: "BC!@!@"
MsgBox Replace("ABCABCABC", "ABC", "!@", 6)     'Result is: "C!@"
MsgBox Replace("ABCABCABC", "ABC", "!@", 7)     'Result is: "!@"
MsgBox Replace("ABCABCABC", "ABC", "!@", 8)     'Result is: "BC"

End Sub

Replace a Few Occurrences Only

You can also indicate how many instances of the substring to replace (default All)

Sub ReplaceExample_3()
MsgBox Replace("ABCABCABC", "A", "12")      'Result is: "12BC12BC12BC"
MsgBox Replace("ABCABCABC", "A", "12", , 1)     'Result is: "12BCABCABC"
MsgBox Replace("ABCABCABC", "A", "12", , 2)    'Result is: "12BC12BCABC"
MsgBox Replace("ABCABCABC", "A", "12", , 3)    'Result is: "12BC12BC12BC"
MsgBox Replace("ABCABCABC", "A", "12", , 5)    'Result is: "12BC12BC12BC"

MsgBox Replace("ABCABCABC", "A", "12", 3, 1)
'Result is: "C12BCABC"
'We replaced A with 12, 1 time starting from position 3 of the original string.

End Sub

Case Sensitivity

The Replace Function is case sensitive by default. You can switch to case insensitive by adding the optional parameter (vbTextCompare). Here, you must also define the starting position of the search.

Sub ReplaceExample_4()
MsgBox Replace("ABcABCABc", "ABc", "12")
'Result is: "12ABC12"
MsgBox Replace("ABcABCABc", "ABc", "12", , , vbTextCompare)
'Result is: "121212"
'When we use vbTextCompare we need to add the 2 other optional arguments:
'start and count

MsgBox Replace("ABcABCABcABc", "ABc", "12", 3, 1)
'Result is: "cABC12ABc"
'Started from position3 and replaced ABC only 1 time.

End Sub

You can also perform a case-insensitive Replace, by adding Option Compare Text to the top of your module:

Option Compare Text

Double Quotes

The Replace Function can replace the double quotes character used to delimit the start and end of a string.

VBA Chr function can return a character from its number in the character set.

MsgBox Chr(34) 'Result is: "

Or

MsgBox Chr(64) 'Result is: @

Double quotes can be used inside the Replace Function using “””” or VBA Function Chr(34).

Sub ReplaceExample_5()
Dim StrEx As String

StrEx = "AB""AB"""
MsgBox StrEx 'Result is: AB"AB"

MsgBox Replace(StrEx, Chr(34), "12")
'Result is: AB12AB12

MsgBox Replace(StrEx, """", "DQ")
'Result is: "ABDQABDQ"

End Sub

Replace Break Line in Cell

The Replace Function can find the break line special character in a cell and remove it or replace it with a space character. The break line special character can be entered in a cell using the keyboard shortcut Alt+Enter and can be used in VBA code with its Character set number using VBA function Chr(10).

replace line break

Sub ReplaceExample_6()
Dim StrEx As String 'Define a string variable

'Read the value of cell A2 in worksheet Sheet1
StrEx = ThisWorkbook.Worksheets("Sheet1").Range("A2").Value

'The break line character entered with Alt+Enter is Chr(10) and is invisible.
'This code line replaces that character with space
StrEx = Replace(StrEx, Chr(10), " ")

'Write the replaced value in cell B2 in worksheet Sheet1
ThisWorkbook.Worksheets("Sheet1").Range("B2").Value = StrEx

End Sub

У меня есть текстовый файл, который как показано ниже

"asdf","dfgv","asd","sdgs"
"sfgf","xcbvcvb","gsfgf","sdvxc"
"asfdfg","fbgdfg","sdfsd","fdg"
"bdg","sdf","fgfdg","fcg"
"sdf","fbcx","ckvknm","fklf"
"xv","asds","r","cxv"

Но я хочу вывод, который выглядит так

asdf,dfgv,asd,sdgs
sfgf,xcbvcvb,gsfgf,sdvxc
asfdfg,fbgdfg,sdfsd,fdg
bdg,sdf,fgfdg,fcg
sdf,fbcx,ckvknm,fklf
xv,asds,r,cxv

Я прошел по ссылке ниже и изменил код с «Запись № 1» на «Печать № 1». Но проблема в том, что я хочу, чтобы этот файл массово вставлялся на сервер SQL. Следовательно, использование печати не помогает мне. Удалить двойные кавычки из оператора записи в VBA

2018-01-29 06:25

4

ответа

Вы можете использовать Replace функция для удаления всех символов кавычки:

result = Replace(original_string, string_you_want_to_remove, replace_with )

example = Replace(original_string , CHR(34), "")

2018-01-29 06:35

Спасибо всем, но я нашел другой способ удаления двойных кавычек с помощью пакетного сценария, как показано ниже.

set objRe = new RegExp
objRE.Pattern = """"
objRE.Global  = True
strFileName = "Source.txt"
set objFS = CreateObject("Scripting.FileSystemObject")
set objTS = objFS.OpenTextFile(strFileName)
strFileContents = objTS.ReadAll
objTS.Close
strNewContents = objRE.replace(strFileContents,"")
set objWS = objFS.CreateTextFile("Results.txt")
objWS.Write StrNewContents
objWS.close

2018-01-29 08:21

Просто замените ()

Replace(<SourceString>, """, "")

2018-01-29 06:33

Попробуйте этот код:

Sub CleanFile()
Dim fileName, FSO, rfile, wfile As Variant
Dim line As String, dotAt As Integer, newFileName As String

fileName = Application.GetOpenFilename(, , "Load Excel File", , False)

If fileName = "False" Then
    MsgBox "No file chosen"
    Exit Sub
End If

dotAt = InStrRev(fileName, ".")
newFileName = Left(fileName, dotAt - 1) + " - CLEAN.txt"

Set FSO = CreateObject("Scripting.FileSystemObject")
Set rfile = FSO.OpenTextFile(fileName, 1) 'connection for reading
Set wfile = FSO.OpenTextFile(newFileName, 8, True, -1) 'connection for writing

Do Until rfile.AtEndOfStream
    line = rfile.ReadLine
    wfile.WriteLine Replace(line, """", "")
Loop
End Sub

2018-01-29 07:06

Понравилась статья? Поделить с друзьями:
  • Excel vba если выполняется условие
  • Excel vba заливка диапазона ячеек
  • Excel vba если в ячейке дата
  • Excel vba закрыть не активную книгу без сохранения
  • Excel vba закрыть другую книгу