|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Помогите разобраться с повторяющимися данными в VBS |
|
VBS/WSH/JS - Помогите разобраться с повторяющимися данными в VBS
|
Новый участник Сообщения: 6 |
Добрый вечер.
Я только учусь писать на VBS. Общий смысл такой - берем данные из Excel и переносим их в Word. Проблема - в Excel-файле бывают несколько одинаковых строк, которые все переносятся в Word. Но мне не надо их переносить, если они одни и те же (например в Excel есть: Иванов Петров Иванов - перенести нужно: "Иванов, Петров") В VBS написал так: IF objRec.Fields(2) = "Фамилия" THEN fio = fio1&chr(13)&objRec.Fields(3)&"," &chr(13)& "прож. по адресу:" И получается так: "Иванов прож. по адресу: Петров прож. по адресу: Иванов прож. по адресу:" А нужно: "Иванов прож. по адресу: Петров прож. по адресу:" Помогите, пожалуйста! Полный код: Set oArg = Wscript.Arguments fName = oArg.Item(0) Set objCon = CreateObject("ADODB.Connection") Set objRec = CreateObject("ADODB.Recordset") objCon.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="&fName&";Extended Properties=""Excel 12.0 Xml;HDR=Yes;"";" objRec.Open "Select * From [ReportData$]",objCon,3,3 Do Until objRec.EOF IF objRec.Fields(2) = "Фамилия" THEN fio = fio&chr(13)&objRec.Fields(3)&"," &chr(13)& "прож. по адресу:" objRec.MoveNext Loop Set oWord = CreateObject("Word.Application") oWord.Visible = True Const wdReplaceAll = 2 Set oDoc = oWord.Documents.Open("C:\Данные\Фамилии.rtf") Set oSel = oWord.Selection oSel.Find.Forward = TRUE oSel.Find.MatchWholeWord = TRUE oSel.Find.Execute "fio" ,,,,,,,,,fio ,wdReplaceAll oDoc.SaveAs("c:\Данные\Фамилии "&fio&".doc") |
|
Отправлено: 23:32, 28-05-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Boris26rus, выложите образец документа Excel, выложите Ваш код. Целиком, а не одну строку.
|
Отправлено: 05:58, 29-05-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 22:10, 29-05-2013 | #3 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Спасибо!
А как привязать это именно к переменной "fio"? При запуске, когда много фамилий, выдает ошибку - "Слишком длинный строковый параметр". Может подскажите как исправить. |
Последний раз редактировалось Boris26rus, 30-05-2013 в 14:19. Отправлено: 12:38, 30-05-2013 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 15:01, 30-05-2013 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Boris26rus, проблема к запросу к рабочей книге не имеет отношения. Слишком длинная строка («por1») для использования в диалоге поиска и замены:
— вижу, Вы так и не добавили предикат «DISTINCT» в запрос. Если добавить — то следующей ошибкой будет «Несоответствие типа» в: поскольку переменная «raschet» оказывается равна «Null». |
Отправлено: 05:15, 31-05-2013 | #6 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Iska, добрый день и спасибо!
Я «DISTINCT» вставил сразу, но как Вы и указали, стала возникать ошибка с переменной «raschet». Тогда я и спросил как можно привязать «DISTINCT» только к той переменной, которой нужен такой "фильтр" (самостоятельные эксперименты по "привязке" у меня были безрезультатны). А вот по слишком длинной строке пробовал разбить так: Sub Replace(rtext,text) if len(text)>255 then oSel.Find.Execute rtext ,,,,,,,,,"temp" ,wdReplaceAll i=len(text)/250 if (i-FIX(i))>0 then i=FIX(i)+1 z=1 For y=1 to i stext=Mid(text,z,248) + " temp" oSel.Find.Execute " temp" ,,,,,,,,,stext ,wdReplaceAll z=y*248+1 NEXT else oSel.Find.Execute rtext ,,,,,,,,,text ,wdReplaceAll end if oSel.Find.Execute " temp" ,,,,,,,,,"" ,wdReplaceAll End Sub Не пойму почему переменная «raschet» равна «Null» и как избежать ошибки. |
Отправлено: 12:09, 31-05-2013 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Вы спросили:
Цитата Boris26rus:
|
|
Отправлено: 20:29, 31-05-2013 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Помогите новичку разобраться со скриптом(vbs). | Vector101 | Скриптовые языки администрирования Windows | 4 | 15-03-2013 16:08 | |
VBS/WSH/JS - Помогите с VBS скриптом | coptercor | Программирование и базы данных | 2 | 21-09-2011 08:48 | |
VBS/WSH/JS - Помогите русифицироват *.vbs скрипт | nod201 | Скриптовые языки администрирования Windows | 3 | 07-12-2009 10:53 | |
VBS/WSH/JS - Помогите редактировать Autorun_Disable.vbs на Autorun_Enable.vbs | nod201 | Скриптовые языки администрирования Windows | 0 | 05-12-2009 05:44 | |
Разное - Помогите в работе з бинарными данными .bin | BMW09121985 | Программирование и базы данных | 14 | 03-05-2009 22:13 |
|