Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выделяем, копируем ранги в цикле / 15 сообщений из 15, страница 1 из 1
22.01.2011, 13:21
    #37072951
yanyariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
И снова я с тупыми вопросами.
Попытался в цикле перебрать все символы документа, скопировать их, вставить в конце документа.
Код такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 For i =  0  To Знаки
   ActiveDocument.Range.InsertParagraphAfter
   Set ОдинСимвол = ActiveDocument.Range(Start:=i, End:=i +  1 )

   ОдинСимвол.Select 'эта строка выполняется только один раз
  ОдинСимвол.Copy   'в результате  эта строка во второй итерации цикла дает ошибку
   Set ВесьДокумент = ActiveDocument.Range
   ВесьДокумент.Select
   Selection.Collapse Direction:=wdCollapseEnd
   Selection.Paste

   Next i
Первая итерация цикла проходит нормально. Вторая ругается. Кто знает что ей надо?
...
Рейтинг: 0 / 0
22.01.2011, 14:47
    #37073018
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
yanyariyПервая итерация цикла проходит нормально. Вторая ругается. Кто знает что ей надо?
Текст ошибки надо угадать?
ЗЫ: У меня работает
...
Рейтинг: 0 / 0
22.01.2011, 15:23
    #37073049
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
yanyariy, я такими словами: итерация не выражаюсь, но если ТЗ как Вы указали, то очень мудрено
Вроде хотите посимвольно, но мудрено символы считываете, зачем весь документ выделять, где спуск вниз документа??
...
Рейтинг: 0 / 0
22.01.2011, 16:03
    #37073089
yanyariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
Shocker.ProyanyariyПервая итерация цикла проходит нормально. Вторая ругается. Кто знает что ей надо?
Текст ошибки надо угадать?
ЗЫ: У меня работает
Проверил еще раз. После выполнения строки
Код: plaintext
ОдинСимвол.Copy
выдает сообщение "run-time error '4198': ошибка команды".
Построчное выполнение показывает что во второй итерации не происходит выделения:
Код: plaintext
ОдинСимвол.Select
соответственно потом копировать нечего.
Да, еще: в испытуемом документе есть только формулы. Кроме формул только один знак конца абзаца.
...
Рейтинг: 0 / 0
22.01.2011, 16:08
    #37073094
yanyariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
Ципихович Эндрюyanyariy, я такими словами: итерация не выражаюсь, но если ТЗ как Вы указали, то очень мудрено
Вроде хотите посимвольно, но мудрено символы считываете, зачем весь документ выделять, где спуск вниз документа??
Спуск вниз документа выполняется командами:
Код: plaintext
1.
2.
ВесьДокумент.Select
   Selection.Collapse Direction:=wdCollapseEnd 'тут выделение "сжимается" к концу выделенной области.
Подскажите более удобный вариант, если этот не самый лучший.
В учебниках пишут "итерация". Как там пишут, так и я.
...
Рейтинг: 0 / 0
22.01.2011, 16:13
    #37073099
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
yanyariy, я бы подсказал, но в испытуемом документе есть только формулы-меня пугает
Там наверное дроби, корни и т.д.
По Вашему ТЗ-Попытался в цикле перебрать все символы документа, скопировать их, вставить в конце документа
Почему перебираете все символы??
...
Рейтинг: 0 / 0
22.01.2011, 16:58
    #37073134
yanyariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
Ципихович Эндрюyanyariy, я бы подсказал, но в испытуемом документе есть только формулы-меня пугает
Там наверное дроби, корни и т.д.
По Вашему ТЗ-Попытался в цикле перебрать все символы документа, скопировать их, вставить в конце документа
Почему перебираете все символы??
Формула - это объект Microsoft Equation 3.0, он считается одним символом. Я всего лишь учусь перебрасывать эти "символы" с места на место.
...
Рейтинг: 0 / 0
22.01.2011, 17:32
    #37073160
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
yanyariy,

Код: plaintext
1.
2.
3.
4.
q = ActiveDocument.Characters.Count
For i =  1  To q
Set Знак = ActiveDocument.Characters(i)
ds = Знак
Next i
А уж куда Вам надо вставлять бог его знает
...
Рейтинг: 0 / 0
22.01.2011, 17:39
    #37073166
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
yanyariy, вот у меня только появилась возможность опробовать Ваш скрипт, что Вы голову морочите, Вам же Шокер сказал
ЗЫ: У меня работает
и я скажу
ЗЫ: У меня работает
Переменная знаки, чему равна?
Она у Вас обозначена?, ей что то присвоено, я то думал, люди бывают выкладывают не всё, как в Вашем случае ХЗ
...
Рейтинг: 0 / 0
22.01.2011, 17:43
    #37073173
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
yanyariy, так работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Знаки = ActiveDocument.Characters.Count
   For i =  0  To Знаки
   ActiveDocument.Range.InsertParagraphAfter
   Set ОдинСимвол = ActiveDocument.Range(Start:=i, End:=i +  1 )
   ОдинСимвол.Select
   ОдинСимвол.Copy
   Set ВесьДокумент = ActiveDocument.Range
   ВесьДокумент.Select
   Selection.Collapse Direction:=wdCollapseEnd
   Selection.Paste
   Next i
Хотя кое что я бы сделал не так, но с формулами не сталкиваюсь и не знаю
...
Рейтинг: 0 / 0
22.01.2011, 20:06
    #37073278
yanyariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
Ципихович Эндрю,

Могу сказать зы: и у меня работает. Вот как только формулы убрал из документа, так и работает.
А с формулами работать не хочет. Думаю, проблема в этой строке:
Код: plaintext
1.
Set ОдинСимвол = ActiveDocument.Range(Start:=i, End:=i +  1 )
Во второй раз она не срабатывает, в результате потом ничего не выделяется, потом ничего не копируется. А без формул все работает.
Почему?
...
Рейтинг: 0 / 0
22.01.2011, 20:29
    #37073289
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
yanyariy, в Ваших словах
Формула - это объект Microsoft Equation 3.0, он считается одним символом
сильно сомневаюсь, как там её добавлять эту формулу
...
Рейтинг: 0 / 0
22.01.2011, 23:15
    #37073395
yanyariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
Эндрю,
Я благодарен вам за участие, но не могли бы вы более понятно выражаться? Запятые ставить где надо. Или точки. Я так и не понял, в чем вы сомневаетесь. То ли в том, что формула это один символ, то ли в том, что знаете решение проблемы.
В моем документе было три формулы и знак конца абзаца.
На вопрос: сколько в документе символов
Код: plaintext
1.
q = ActiveDocument.Characters.Count
он ответил - 4
Вывод: одна формула - один символ. Во всяком случае при подсчете оных.
...
Рейтинг: 0 / 0
23.01.2011, 01:17
    #37073477
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
yanyariy,

дай образец файла без лишнего
что-то у меня не воспроизводится ситуация
...
Рейтинг: 0 / 0
23.01.2011, 08:19
    #37073553
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделяем, копируем ранги в цикле
yanyariy, мои сомнения подтвердились
Ворд считает формулу кнопкой
Пробуйте
Код: plaintext
1.
Количество_знаков = ActiveDocument.Characters.Count
Count_кнопок = ActiveDocument.InlineShapes.Count
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выделяем, копируем ранги в цикле / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]