Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Повторяющиеся данные, длинные строки, VBS 
:(
    Опции темы
Boris26rus
Дата 30.5.2013, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.5.2013

Репутация: нет
Всего: нет



Добрый вечер.
Я только учусь писать на 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")



Необходимо привязать это именно к переменной "fio"
Есть еще проблема - при запуске, когда много фамилий, выдает ошибку - "Слишком длинный строковый параметр".
Может подскажите как все исправить.

Это сообщение отредактировал(а) Boris26rus - 30.5.2013, 21:10

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  1.rar 20,99 Kb
PM MAIL   Вверх
Akina
Дата 30.5.2013, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



Эксельный файл приложить - не судьба?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Akina
Дата 30.5.2013, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



Так, файл появился, хорошо. Правда, его содержимое наводит на странные мысли. Это именно исходный вид, просто лишние строки поскипаны, или он подвергся серьёзной правке? думаю, второе. 

Но главное не это. Попытка сохранить приложенный файл и применить к нему приведённый код явно провалится. Уж не поленитесь создать рабочую модель - чтобы можно было распаковать архив в папку (vbs-скрипт, эксельный и вордовый файлы), запустить в ней скрипт и увидеть как работу скрипта, так и проблему.

В текущей форме трудно посоветовать что-либо более вменяемое, чем накопление этих fio в массиве и проверка, нет ли очередной записи в массиве (ну или там сгенерить Dictionary и проверять по ключу коллекции). Но это же явный бред...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Boris26rus
Дата 30.5.2013, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.5.2013

Репутация: нет
Всего: нет



Akina, сначала не увидел.
Исправлюсь!
PM MAIL   Вверх
Boris26rus
Дата 30.5.2013, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 30.5.2013

Репутация: нет
Всего: нет



Еще одна проблема:
после создания нового файла, если закрыть документ ворд и потом открыть, то фамилии отображаются в одну строку, а не в столбец.
PM MAIL   Вверх
Akina
Дата 30.5.2013, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453



Вот текст, собирающий уникальные ФИО.
Код

objRec.Open "Select F4 From [1$] WHERE F3 = ""Фамилия"" Group By F4",objCon,3,3

Do Until objRec.EOF
    por1 = por1 & vbCR & objRec.Fields("F4") & "," & vbCR & "прож. по адресу:"
    objRec.MoveNext
Loop

Что же до договоров - их группировка позиционно-зависима, поэтому на самом деле при решении ВСЕЙ задачи ADO использовать нельзя, следует создать Excel.Application и рулить книгой через него.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.1202 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.