|
|
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Господа, разъясните, почему при этой конструкции: Sub AddDataFile() Dim DataFile As Object Dim PathDataFile As String PathDataFile = "D:\Документы\Отчет.xlsx" Set DataFile = GetObject(PathDataFile) With DataFile.Worksheets(1) .Range("A3").EntireRow.Insert .Cells(3, 1).Value = Format(Now, GeneralDateTime) .Cells(3, 2).Value = 2 .Cells(3, 3).Value = 3 .Cells(3, 4).Value = 4 End With DataFile.Close (True) Application.DisplayAlerts = False End Sub код выполняется как положено, но последующее ручное открытие файла Отчет.xlsx происходит в скрытом режиме? Как этого избежать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 09:33 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Рискну предположить что Вы не завершаете корректно работу Экселя и процесс остается висеть в памяти. С уважением, Николай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 09:53 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Все верно. По-видимому, процесс Excel не "убивается" и ручное открытие приводит к использованию уже имеющегося экземпляра приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 10:02 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
gjghjc, А как надобно корректно завершать? Дело в том, что Excel после выполнения кода закрывать не хотелось бы, а добавление строки Set DataFile=Nothing ничего не дает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 10:05 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Да эти GetObject, CreateObject как-то не так как хотелось бы работают, т.е. не совсем понятно, я вот такую катавасию городил правда Word, но Excel впринципе тоже самое. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 10:35 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
zenon77А как надобно корректно завершать? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. zenon77Дело в том, что Excel после выполнения кода закрывать не хотелось бы, а добавление строки Set DataFile=Nothing ничего не дает Ну если не хотите закрывать экземпляр приложения, то оставляйте все как есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 10:35 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Ashton, И еще, буду признателен за подсказку по вопросу: как идеологически более правильно обращаться к excel-файлу из макроса в другом excel-файле - через Application.Open или GetObject? Какие у каждого обращения подводные камни? А то практичски с нуля второй месяц ковыряюсь с написанием цикла из пары десятков макросов, пролистал две книжки, где-что на форумах подсмотрел, а когда какой из этих двух методов применять - так для себя и не разъяснил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 10:36 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
piterblinov, Дело в том, что я свой макрос запускаю из другого Excel файла, и, если я правильно понимаю, то у меня нет необходимости делать проверку аналогично Вашей. А со свойством Application.Visible я баловался, результатов не принесло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 11:03 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Ashton, пробовал Ваш код, как с Quit, так и без него - никакого результата, файл так же скрыт при ручном запуске. Спасибо за подсказку с возвращением DisplayAlerts = True в исходное состояние. Но только не совсем понимаю, почему она перед строкой DataFile.Close SaveChanges:=True работает? Моя логика подсказывает, что нужно сначала закрыть файл с сохранением без запроса, и лишь потом возвращать опцию на запро в исходное состояние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 11:15 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Да, ваша логика все верно подсказывает. :) Перенесите Код: plaintext после Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 11:28 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Ashton, Ну а по существу вопроса как же? Файл, будь он неладен, как был скрыт так и остается. Ну не может же быть, чтоб это только у меня происходило, неужто никто не сталкивался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 11:37 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Насчет раннего или позднего связывания. Я бы порекомендовал использовать раннее связывание. Код: plaintext 1. 2. Это быстродействие, vba уже знает обо всех методах и свойствах. Удобство разработки, можно просмотреть все свойства и методы определенного объекта. По поводу CreateObject и GetObject. CreateObject используют для создания нового экземпляра приложения. GetObject используются при уже существующем экземпляре приложения. В любом случае считается, что лучше использовать CreateObject. В вашем случае, я не думаю, что эта проблема связанна именно с GetObject, или с позднем связыванием. Я выяснил, что проблема в том, что окно приложения остается скрытым. Попробуй сделать так. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 13:03 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Ashton, Странное дело, если включить Ваш код, то результат у меня упорно остается прежним. Но я попробовал изменить строку Код: plaintext явно указывая имя файла, например так: Код: plaintext и - о чудо, все получилось! Одно отравляет радость - мелькание открывающегося-закрывающегося файла. А я именно от этого хотел уйти. Если б не это мелькание то я б не прибегал к GetObject, а использовал более простую конструкцию: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Теперь вопрос - как избавиться от мелькания? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 13:58 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Попробуйте отключить обновление экрана... Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 14:06 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Ashton, Спасибо. Все работает без мелькания в обоих случаях. Файл в последующем открывается. Только вот остался мелкий, но щекочущий меня вопрос: какой вариант кода все-таки предпочтительней в моем случае - с GetObject или c Application.Workbooks.Open, тот что в моем предыдущем посте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 14:53 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Ты сразу не сказал, что открываешь книгу из текущего приложения. Здесь, однозначно мудрить не стоит. Используй вариант с Application. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 15:07 |
|
||
|
почему при обращении через GetObject изменятся режим видимости файла?
|
|||
|---|---|---|---|
|
#18+
Ashton, Премного благодарен. Я тоже так думаю :) Просто когда мне нужно было только взять данные из ячеек excel-файлов, не изменяя их, я применял GetObject - мне казалось это проще и короче написать. Опять же, при этом достигалась нужная мне скрытость процессов открытия-закрытия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.12.2008, 15:21 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=172&tid=2161547]: |
0ms |
get settings: |
9ms |
get forum list: |
30ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 403ms |

| 0 / 0 |
