Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Ципихович Эндрю
1409 / 319 / 28
Регистрация: 10.04.2009
Сообщений: 4,955
#1

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

21.03.2011, 21:59. Просмотров 1870. Ответов 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
Странно, в этот момент на панели задач было два файла Ворд
Неужели тоже какие то "подводные камни" ????
http://www.cyberforum.ru/vba/thread267650.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2011, 21:59
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Количество_открытых_документов_Word = Documents.Count (VBA):

Почему программа на 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 расшифруйте,пожалуйста,эту запись. что здесь значит...

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

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

Добавлено через 4 минуты
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Странно, в этот момент на панели задач было два файла Ворд
Окно - Новое. На панели задач будет 2 файла, но открыт один документ.
Файл Word открывается в диалоговое окно. Один файл можно отрыть в несколько диалоговых окон.
0
Ципихович Эндрю
1409 / 319 / 28
Регистрация: 10.04.2009
Сообщений: 4,955
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
2759 / 695 / 101
Регистрация: 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
Ципихович Эндрю
1409 / 319 / 28
Регистрация: 10.04.2009
Сообщений: 4,955
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
2759 / 695 / 101
Регистрация: 04.02.2011
Сообщений: 1,421
25.03.2011, 06:40 #7
Не лукавь. Ты этот код проверял? Не забыл кстати по выходу из цикла do while ... loop уменьшить i на единицу, ведь последний проход цикла увеличил i, она стала на 1 больше, чем .Count?

Ещё раз подчеркиваю, что циклы for ... next и for each ... next не годятся для получения последнего значения счетчика / последнего элемента коллекции.
0
Ципихович Эндрю
1409 / 319 / 28
Регистрация: 10.04.2009
Сообщений: 4,955
25.03.2011, 08:00  [ТС] #8
>Не лукавь.
Не в коем случае
>Ты этот код проверял?
Да, конечно, проверил, его и выложил
>Не забыл кстати по выходу из цикла do while ... loop уменьшить i на единицу, ведь последний >проход цикла увеличил i, она стала на 1 больше, чем .Count?
Забыл, не любитель конструкции до тех пор ... когда рак свиснет
>Ещё раз подчеркиваю, что циклы for ... next и for each ... next не годятся для получения >последнего значения счетчика / последнего элемента коллекции.
А что годится, выложите пжл код, спасибо
0
Mawrat
12821 / 5729 / 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
Ципихович Эндрю
1409 / 319 / 28
Регистрация: 10.04.2009
Сообщений: 4,955
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
Привет! Вот еще темы с решениями:

Исправить ошибку "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...

Глюк при копировании листов: wsTemplate.Copy after:=OutputWB.Sheets(OutputWB.Worksheets.Count)
Странный глюк - VBA не выдает никакой ошибки, просто останавливается после...

Как из XLAM запустить Sheets().Copy Before:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Привет. Есть макрос, который копирует две эксель вкладки на активную книгу. При...


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

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

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