irina18
Дата: Среда, 22.11.2017, 14:51 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация:
1
±
Замечаний:
0% ±
Excel 2013
Привет форумчане. В файле макросом склоняются по падежам ФИО двух сотрудников. Проблема в назначении данных для переменных. У меня данные определены для первого сотрудника, а как сделать для обоих, у меня не получается. Прошу помощи в этом вопросе, думаю, что для спецов это несложно. Надо переделать вот этот кусок кода. [vba]Код
Dim F$, im$, O$ F = Split(ActiveDocument.Fields(1).Result.Text, " ")(0) im = Split(ActiveDocument.Fields(1).Result.Text, " ")(1) O = Split(ActiveDocument.Fields(1).Result.Text, " ")(2)
[/vba] И если несложно хотелось, чтобы после очищения полей, где ввожу данные в именительном падеже, очищались и вычисляемые поля. Файл приложен. Всем спасибо.
Привет форумчане. В файле макросом склоняются по падежам ФИО двух сотрудников. Проблема в назначении данных для переменных. У меня данные определены для первого сотрудника, а как сделать для обоих, у меня не получается. Прошу помощи в этом вопросе, думаю, что для спецов это несложно. Надо переделать вот этот кусок кода. [vba]Код
Dim F$, im$, O$ F = Split(ActiveDocument.Fields(1).Result.Text, " ")(0) im = Split(ActiveDocument.Fields(1).Result.Text, " ")(1) O = Split(ActiveDocument.Fields(1).Result.Text, " ")(2)
[/vba] И если несложно хотелось, чтобы после очищения полей, где ввожу данные в именительном падеже, очищались и вычисляемые поля. Файл приложен. Всем спасибо. irina18
К сообщению приложен файл:
_2_.docm
(37.0 Kb)
Ответить
Сообщение Привет форумчане. В файле макросом склоняются по падежам ФИО двух сотрудников. Проблема в назначении данных для переменных. У меня данные определены для первого сотрудника, а как сделать для обоих, у меня не получается. Прошу помощи в этом вопросе, думаю, что для спецов это несложно. Надо переделать вот этот кусок кода. [vba]Код
Dim F$, im$, O$ F = Split(ActiveDocument.Fields(1).Result.Text, " ")(0) im = Split(ActiveDocument.Fields(1).Result.Text, " ")(1) O = Split(ActiveDocument.Fields(1).Result.Text, " ")(2)
[/vba] И если несложно хотелось, чтобы после очищения полей, где ввожу данные в именительном падеже, очищались и вычисляемые поля. Файл приложен. Всем спасибо. Автор - irina18 Дата добавления - 22.11.2017 в 14:51
Pelena
Дата: Среда, 22.11.2017, 18:57 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация:
4555
±
Замечаний:
±
Excel 365 & Mac Excel
Здравствуйте. Не очень вникала, но, может, так подойдёт [vba]Код
Dim F$, im$, O$ F = Split(FullText, " ")(0) im = Split(FullText, " ")(1) O = Split(FullText, " ")(2)
[/vba] Или Вы хотите, чтобы не два отдельных макроса запускать, а в цикле все перебирались?
Здравствуйте. Не очень вникала, но, может, так подойдёт [vba]Код
Dim F$, im$, O$ F = Split(FullText, " ")(0) im = Split(FullText, " ")(1) O = Split(FullText, " ")(2)
[/vba] Или Вы хотите, чтобы не два отдельных макроса запускать, а в цикле все перебирались? Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Ответить
Сообщение Здравствуйте. Не очень вникала, но, может, так подойдёт [vba]Код
Dim F$, im$, O$ F = Split(FullText, " ")(0) im = Split(FullText, " ")(1) O = Split(FullText, " ")(2)
[/vba] Или Вы хотите, чтобы не два отдельных макроса запускать, а в цикле все перебирались? Автор - Pelena Дата добавления - 22.11.2017 в 18:57
bsi
Дата: Вторник, 28.11.2017, 11:46 |
Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация:
0
±
Замечаний:
0% ±
Excel 2010
Всем удачного дня. Хотелось бы продолжить обсуждение этой темы. Всё в документе работает правильно. Но проблема следующая. Надо оптимизировать сам код, где происходит процесс склонения по падежам. Склонение по падежам сделать, как в именительном падеже (по именам тегов контролов, т.к. полей с дублированием данных в документе может быть много). У самого навыков в VBA практически нет, поэтому жду ваших предложений. Всем спасибо. Файл во вложении. Код который надо оптимизировать: [vba]Код
'падежи (родителый, дательный и творительный) 'Фамилия 1 Dim F$, im$, O$ F = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(0) im = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(1) O = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(2) 'родительный падеж fio = GenitiveCase(F, im, O) ThisDocument.Range.ContentControls(5).Range.Text = fio ThisDocument.Range.ContentControls(6).Range.Text = fio ThisDocument.Range.ContentControls(7).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(8).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'дательный падеж fio = DativeCase(F, im, O) ThisDocument.Range.ContentControls(9).Range.Text = fio ThisDocument.Range.ContentControls(10).Range.Text = fio ThisDocument.Range.ContentControls(11).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(12).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'творительный падеж fio = TvoritiveCase(F, im, O) ThisDocument.Range.ContentControls(13).Range.Text = fio ThisDocument.Range.ContentControls(14).Range.Text = fio ThisDocument.Range.ContentControls(15).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(16).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'фамилия 2 F = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(0) im = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(1) O = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(2) 'родительный падеж fio = GenitiveCase(F, im, O) ThisDocument.Range.ContentControls(21).Range.Text = fio ThisDocument.Range.ContentControls(22).Range.Text = fio ThisDocument.Range.ContentControls(23).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(24).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'дательный падеж fio = DativeCase(F, im, O) ThisDocument.Range.ContentControls(25).Range.Text = fio ThisDocument.Range.ContentControls(26).Range.Text = fio ThisDocument.Range.ContentControls(27).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(28).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'творительный падеж fio = TvoritiveCase(F, im, O) ThisDocument.Range.ContentControls(29).Range.Text = fio ThisDocument.Range.ContentControls(30).Range.Text = fio ThisDocument.Range.ContentControls(31).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(32).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
[/vba]
Всем удачного дня. Хотелось бы продолжить обсуждение этой темы. Всё в документе работает правильно. Но проблема следующая. Надо оптимизировать сам код, где происходит процесс склонения по падежам. Склонение по падежам сделать, как в именительном падеже (по именам тегов контролов, т.к. полей с дублированием данных в документе может быть много). У самого навыков в VBA практически нет, поэтому жду ваших предложений. Всем спасибо. Файл во вложении. Код который надо оптимизировать: [vba]Код
'падежи (родителый, дательный и творительный) 'Фамилия 1 Dim F$, im$, O$ F = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(0) im = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(1) O = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(2) 'родительный падеж fio = GenitiveCase(F, im, O) ThisDocument.Range.ContentControls(5).Range.Text = fio ThisDocument.Range.ContentControls(6).Range.Text = fio ThisDocument.Range.ContentControls(7).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(8).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'дательный падеж fio = DativeCase(F, im, O) ThisDocument.Range.ContentControls(9).Range.Text = fio ThisDocument.Range.ContentControls(10).Range.Text = fio ThisDocument.Range.ContentControls(11).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(12).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'творительный падеж fio = TvoritiveCase(F, im, O) ThisDocument.Range.ContentControls(13).Range.Text = fio ThisDocument.Range.ContentControls(14).Range.Text = fio ThisDocument.Range.ContentControls(15).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(16).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'фамилия 2 F = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(0) im = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(1) O = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(2) 'родительный падеж fio = GenitiveCase(F, im, O) ThisDocument.Range.ContentControls(21).Range.Text = fio ThisDocument.Range.ContentControls(22).Range.Text = fio ThisDocument.Range.ContentControls(23).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(24).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'дательный падеж fio = DativeCase(F, im, O) ThisDocument.Range.ContentControls(25).Range.Text = fio ThisDocument.Range.ContentControls(26).Range.Text = fio ThisDocument.Range.ContentControls(27).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(28).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'творительный падеж fio = TvoritiveCase(F, im, O) ThisDocument.Range.ContentControls(29).Range.Text = fio ThisDocument.Range.ContentControls(30).Range.Text = fio ThisDocument.Range.ContentControls(31).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(32).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
[/vba] bsi
К сообщению приложен файл:
_2_.rar
(43.1 Kb)
Сообщение отредактировал bsi - Вторник, 28.11.2017, 12:15
Ответить
Сообщение Всем удачного дня. Хотелось бы продолжить обсуждение этой темы. Всё в документе работает правильно. Но проблема следующая. Надо оптимизировать сам код, где происходит процесс склонения по падежам. Склонение по падежам сделать, как в именительном падеже (по именам тегов контролов, т.к. полей с дублированием данных в документе может быть много). У самого навыков в VBA практически нет, поэтому жду ваших предложений. Всем спасибо. Файл во вложении. Код который надо оптимизировать: [vba]Код
'падежи (родителый, дательный и творительный) 'Фамилия 1 Dim F$, im$, O$ F = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(0) im = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(1) O = Split(ThisDocument.Range.ContentControls(1).Range.Text, " ")(2) 'родительный падеж fio = GenitiveCase(F, im, O) ThisDocument.Range.ContentControls(5).Range.Text = fio ThisDocument.Range.ContentControls(6).Range.Text = fio ThisDocument.Range.ContentControls(7).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(8).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'дательный падеж fio = DativeCase(F, im, O) ThisDocument.Range.ContentControls(9).Range.Text = fio ThisDocument.Range.ContentControls(10).Range.Text = fio ThisDocument.Range.ContentControls(11).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(12).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'творительный падеж fio = TvoritiveCase(F, im, O) ThisDocument.Range.ContentControls(13).Range.Text = fio ThisDocument.Range.ContentControls(14).Range.Text = fio ThisDocument.Range.ContentControls(15).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(16).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'фамилия 2 F = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(0) im = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(1) O = Split(ThisDocument.Range.ContentControls(17).Range.Text, " ")(2) 'родительный падеж fio = GenitiveCase(F, im, O) ThisDocument.Range.ContentControls(21).Range.Text = fio ThisDocument.Range.ContentControls(22).Range.Text = fio ThisDocument.Range.ContentControls(23).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(24).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'дательный падеж fio = DativeCase(F, im, O) ThisDocument.Range.ContentControls(25).Range.Text = fio ThisDocument.Range.ContentControls(26).Range.Text = fio ThisDocument.Range.ContentControls(27).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(28).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." 'творительный падеж fio = TvoritiveCase(F, im, O) ThisDocument.Range.ContentControls(29).Range.Text = fio ThisDocument.Range.ContentControls(30).Range.Text = fio ThisDocument.Range.ContentControls(31).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "." ThisDocument.Range.ContentControls(32).Range.Text = Split(fio, " ")(0) & " " & Left(Split(fio, " ")(1), 1) & "." & Left(Split(fio, " ")(2), 1) & "."
[/vba] Автор - bsi Дата добавления - 28.11.2017 в 11:46