Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/10: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Ципихович Эндрю
1411 / 321 / 28
Регистрация: 10.04.2009
Сообщений: 5,040
1

Количество_открытых_документов_Word = Documents.Count

21.03.2011, 21:59. Просмотров 1922. Ответов 9
Метки нет (Все метки)

Visual Basic
1
2
3
4
Количество_открытых_документов_Word = Documents.Count
For i = 1 To Documents.Count
MsgBox (Documents.Item(i).Name & " - документ номер " & i)
Next
не думал, что здесь могут быть странности, прошёл код, Количество_открытых_документов_Word стало равно 1
Странно, в этот момент на панели задач было два файла Ворд
Неужели тоже какие то "подводные камни" ????
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2011, 21:59
Ответы с готовыми решениями:

Documents.Open метод, ошибка 462.
Помогите разобраться с проблемой. Есть кнопка для открытия вордового файла....

Почему программа на VBA запускается из C:\Documents and setting\UserName\
Здравствуйте, уважаемые форумчане! У меня странная (для меня) проблема,...

Sheet.Count и копирование диапазона ячеек.
Есть код: Sub CopyToOtherSheet() Dim WS As Variant Dim J As Integer Dim i...

Sheets.count в закрытой книге Excel...
Привет всем! Недавно была похожая тема, но там не касались вопроса перебора по...

Что означает запись Selection.Words.Count?
Selection.Words.Count расшифруйте,пожалуйста,эту запись. что здесь значит...

9
Ципихович Эндрю
1411 / 321 / 28
Регистрация: 10.04.2009
Сообщений: 5,040
22.03.2011, 05:13  [ТС] 2
что-то на домашнем компе стал замечать странность, на рабочем вроде такого нет
Открыл, Ворд, имею в панели задач вкладку Документ1
Затем открыл какой нибудь существующий документ имею в панели задач вкладку с его названием, закрываю его, а документа Документ1 нет, куда делся???????? ОС его знает
0
Busine2009
Заблокирован
22.03.2011, 09:48 3
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Открыл, Ворд, имею в панели задач вкладку Документ1
Затем открыл какой нибудь существующий документ имею в панели задач вкладку с его названием, закрываю его, а документа Документ1 нет, куда делся???????? ОС его знает
у меня так же работает.

Добавлено через 4 минуты
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Странно, в этот момент на панели задач было два файла Ворд
Окно - Новое. На панели задач будет 2 файла, но открыт один документ.
Файл Word открывается в диалоговое окно. Один файл можно отрыть в несколько диалоговых окон.
0
Ципихович Эндрю
1411 / 321 / 28
Регистрация: 10.04.2009
Сообщений: 5,040
24.03.2011, 07:49  [ТС] 4
вот конкретный пример
из открытого файла Документ1 я запускаю скрипт
Visual Basic
1
2
3
4
5
6
7
8
9
Set FSO = CreateObject("Scripting.FileSystemObject")
Set fo = FSO.OpenTextFile("C:\Documents and Settings\user1\Рабочий стол\1.doc")
Title = fo.ReadLine() 'заголовок файла??? бред, какой то занесло в переменную???????????
Text = fo.ReadAll 'весь текст файла??? бред, какой то занесло в переменную???????????
Количество_открытых_документов_Word = Documents.Count
For i = 1 To Documents.Count
MsgBox (Documents.Item(i).Name & " - документ номер " & i)
Next
fo.Close 'закрыть файл
Сколько по Вашему в Количество_открытых_документов_Word должно быть??, я думаю, что два но на самом деле 1
и хотел спросить, что попадает в переменные
Title = fo.ReadLine()
и
Text = fo.ReadAll
???
0
mc-black
2760 / 695 / 102
Регистрация: 04.02.2011
Сообщений: 1,421
24.03.2011, 12:11 5
Дело не в документах, их количестве и не в количестве экземпляров Word и вообще ни в чем. Дело в том, что переменная i вне цикла For не определена! Вернее возвращается начальное значение, но для хранения того, чем закончился цикл переменная i не годится. Создайте аналогичный цикл Do, чтобы добиться желаемого эффекта:
Visual Basic
1
2
3
4
5
    i = 1
    Do While i <= Documents.Count
        MsgBox (Documents.Item(i).Name & " - документ номер " & i)
        i = i + 1
    Loop
0
Ципихович Эндрю
1411 / 321 / 28
Регистрация: 10.04.2009
Сообщений: 5,040
24.03.2011, 13:54  [ТС] 6
да ничего не изменилось и не должно как Вы поясняете
Visual Basic
1
2
3
4
5
6
7
8
9
10
Set FSO = CreateObject("Scripting.FileSystemObject")
Set fo = FSO.OpenTextFile("C:\Documents and Settings\user1\Рабочий стол\1.doc")
 
Количество_открытых_документов_Word = Documents.Count
 
I = 1
    Do While I <= Documents.Count
        MsgBox (Documents.Item(I).Name & " - документ номер " & I)
        I = I + 1
    Loop
потому, что
Количество_открытых_документов_Word = 1, а должно 2, или нет??
0
mc-black
2760 / 695 / 102
Регистрация: 04.02.2011
Сообщений: 1,421
25.03.2011, 06:40 7
Не лукавь. Ты этот код проверял? Не забыл кстати по выходу из цикла do while ... loop уменьшить i на единицу, ведь последний проход цикла увеличил i, она стала на 1 больше, чем .Count?

Ещё раз подчеркиваю, что циклы for ... next и for each ... next не годятся для получения последнего значения счетчика / последнего элемента коллекции.
0
Ципихович Эндрю
1411 / 321 / 28
Регистрация: 10.04.2009
Сообщений: 5,040
25.03.2011, 08:00  [ТС] 8
>Не лукавь.
Не в коем случае
>Ты этот код проверял?
Да, конечно, проверил, его и выложил
>Не забыл кстати по выходу из цикла do while ... loop уменьшить i на единицу, ведь последний >проход цикла увеличил i, она стала на 1 больше, чем .Count?
Забыл, не любитель конструкции до тех пор ... когда рак свиснет
>Ещё раз подчеркиваю, что циклы for ... next и for each ... next не годятся для получения >последнего значения счетчика / последнего элемента коллекции.
А что годится, выложите пжл код, спасибо
0
Mawrat
12833 / 5741 / 1700
Регистрация: 19.09.2009
Сообщений: 8,807
25.03.2011, 14:59 9
Ципихович Эндрю, конкретно в этом случае вот в чём дело:
Visual Basic
1
2
3
4
5
'Запускаем и подключаемся к COM-объекту.
Set FSO = CreateObject("Scripting.FileSystemObject")
'Открываем файл в COM-объекте, а не в Word. Поэтому количество
'открытых документов Word осталось прежним.
Set fo = FSO.OpenTextFile("C:\Documents and Settings\user1\Рабочий стол\1.doc")
1
Ципихович Эндрю
1411 / 321 / 28
Регистрация: 10.04.2009
Сообщений: 5,040
25.03.2011, 15:14  [ТС] 10
теперь вижу, не забыть бы
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Количество_открытых_документов_Word = Documents.Count 'ответ 1
'подключаемся к COM-объекту
Set FSO = CreateObject("Scripting.FileSystemObject")
'открываем файл в COM-объекте, а не в Word, поэтому количество открытых документов Word останется прежним
Set fo = FSO.OpenTextFile("C:\Documents and Settings\user1\Рабочий стол\1.doc")
Количество_открытых_документов_Word1 = Documents.Count 'ответ 1
'создаём объект с именем ...
Set Active_Document = ActiveDocument
Dim oDocument As Word.Document
'в пошаговом режиме нажимаем Шифт + Эф 8
'открываем файл в Word, поэтому количество открытых документов Word увеличится на 1
Set oDocument = Documents.Open("C:\Documents and Settings\user1\Рабочий стол\1.doc")
Количество_открытых_документов_Word2 = Documents.Count 'ответ 2
0
25.03.2011, 15:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2011, 15:14

Свойство HPageBreaks.Count работает только под отладчиком
Ситуация такая. Где-то на листе есть несколько заполненных строк. Надо их...

Исправить ошибку "Method Count of object HPageBreaks failed."
Мучую эту ошибку уже долго, решила спросить. Есть шаблон .xlt, у него есть...

Application.VBE.VBProjects([index]).VBComponents([index]).CodeModule.DeleteLines [first_line],[count]
sozdal makros, kotorij kopiruyet aktivnij workshit iz odnogo workbook'a v...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru