powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Выделяем, копируем ранги в цикле
15 сообщений из 15, страница 1 из 1
Выделяем, копируем ранги в цикле
    #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
Выделяем, копируем ранги в цикле
    #37073018
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yanyariyПервая итерация цикла проходит нормально. Вторая ругается. Кто знает что ей надо?
Текст ошибки надо угадать?
ЗЫ: У меня работает
...
Рейтинг: 0 / 0
Выделяем, копируем ранги в цикле
    #37073049
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yanyariy, я такими словами: итерация не выражаюсь, но если ТЗ как Вы указали, то очень мудрено
Вроде хотите посимвольно, но мудрено символы считываете, зачем весь документ выделять, где спуск вниз документа??
...
Рейтинг: 0 / 0
Выделяем, копируем ранги в цикле
    #37073089
yanyariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProyanyariyПервая итерация цикла проходит нормально. Вторая ругается. Кто знает что ей надо?
Текст ошибки надо угадать?
ЗЫ: У меня работает
Проверил еще раз. После выполнения строки
Код: plaintext
ОдинСимвол.Copy
выдает сообщение "run-time error '4198': ошибка команды".
Построчное выполнение показывает что во второй итерации не происходит выделения:
Код: plaintext
ОдинСимвол.Select
соответственно потом копировать нечего.
Да, еще: в испытуемом документе есть только формулы. Кроме формул только один знак конца абзаца.
...
Рейтинг: 0 / 0
Выделяем, копируем ранги в цикле
    #37073094
yanyariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрюyanyariy, я такими словами: итерация не выражаюсь, но если ТЗ как Вы указали, то очень мудрено
Вроде хотите посимвольно, но мудрено символы считываете, зачем весь документ выделять, где спуск вниз документа??
Спуск вниз документа выполняется командами:
Код: plaintext
1.
2.
ВесьДокумент.Select
   Selection.Collapse Direction:=wdCollapseEnd 'тут выделение "сжимается" к концу выделенной области.
Подскажите более удобный вариант, если этот не самый лучший.
В учебниках пишут "итерация". Как там пишут, так и я.
...
Рейтинг: 0 / 0
Выделяем, копируем ранги в цикле
    #37073099
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yanyariy, я бы подсказал, но в испытуемом документе есть только формулы-меня пугает
Там наверное дроби, корни и т.д.
По Вашему ТЗ-Попытался в цикле перебрать все символы документа, скопировать их, вставить в конце документа
Почему перебираете все символы??
...
Рейтинг: 0 / 0
Выделяем, копируем ранги в цикле
    #37073134
yanyariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрюyanyariy, я бы подсказал, но в испытуемом документе есть только формулы-меня пугает
Там наверное дроби, корни и т.д.
По Вашему ТЗ-Попытался в цикле перебрать все символы документа, скопировать их, вставить в конце документа
Почему перебираете все символы??
Формула - это объект Microsoft Equation 3.0, он считается одним символом. Я всего лишь учусь перебрасывать эти "символы" с места на место.
...
Рейтинг: 0 / 0
Выделяем, копируем ранги в цикле
    #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
Выделяем, копируем ранги в цикле
    #37073166
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yanyariy, вот у меня только появилась возможность опробовать Ваш скрипт, что Вы голову морочите, Вам же Шокер сказал
ЗЫ: У меня работает
и я скажу
ЗЫ: У меня работает
Переменная знаки, чему равна?
Она у Вас обозначена?, ей что то присвоено, я то думал, люди бывают выкладывают не всё, как в Вашем случае ХЗ
...
Рейтинг: 0 / 0
Выделяем, копируем ранги в цикле
    #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
Выделяем, копируем ранги в цикле
    #37073278
yanyariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

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

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


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