Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с Excel из MS Project, VBA 
:(
    Опции темы
EKoshelev
Дата 11.10.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



MS Project - это прога из пакета офис (внешне напоминает Excel).
Вопрос. Можно ли средствами ВБА из MS Project открыть Excel и перекинуть туда (или обратно) данные?


--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
Aloha
Дата 11.10.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
**


Профиль
Группа: Участник Клуба
Сообщений: 351
Регистрация: 14.5.2006

Репутация: 5
Всего: 165



EKoshelev

создание новой рабочей книги: 
Код
Dim v_XLApp As Excel.Application
Dim v_XLWb As Excel.Workbook

Set v_XLApp = New Excel.Application
Set v_XLWb = v_XLApp.Workbooks.Add
(для работы примера нужно подключить объектную библиотеку Excel:
Редактор VBA -> Tools -> References -> Microsoft Excel ## Object Library)

Можно использовать позднее связывание и не подключать объектную библиотеку Excel:
Код
Dim v_XLApp As Variant
Dim v_XLWb As Variant

Set v_XLApp = CreateObject("Excel.Application")
Set v_XLWb = v_XLApp.Workbooks.Add

открываем существующую рабочую книгу:
Код
Dim v_XLApp As Excel.Application
Dim v_XLWb As Excel.Workbook
Dim v_FileName as String

v_FileName = "D:\..."
Set v_XLApp = New Excel.Application
Set v_XLWb = v_XLApp.Workbooks.Open(v_FileName)

добавляем данные в рабочую книгу:
Код
Dim v_XLApp As Excel.Application
Dim v_XLWb As Excel.Workbook

Set v_XLApp = New Excel.Application
Set v_XLWb = v_XLApp.Workbooks.Add
v_XLWb.Sheets(1).Range("A1").Value = "новые данные"
' или так:
'v_XLWb.Sheets("Лист1").Cells(1, 1).Value = "новые данные"

v_XLApp.Visible = True    ' смотрим, что получилось
Вообще говоря, здесь возможны варианты в зависимости от того, какая технология (или способ) доступа к данным была использована.

сохраняем рабочую книгу:
вновь созданную
Код
Dim v_XLApp As Excel.Application
Dim v_XLWb As Excel.Workbook
Dim v_FileName as String

v_FileName = "D:\..."
Set v_XLApp = New Excel.Application
Set v_XLWb = v_XLApp.Workbooks.Add
' ...
v_XLWb.SaveAs (v_FileName)

существовавшую ранее
Код
Dim v_XLApp As Excel.Application
Dim v_XLWb As Excel.Workbook
Dim v_FileName As String

v_FileName = "D:\..."
Set v_XLApp = New Excel.Application
Set v_XLWb = v_XLApp.Workbooks.Open(v_FileName)
' ...
v_XLWb.Save

закрываем рабочую книгу:
Код
v_XLWb.Close
'v_XLWb.Close (False) ' закрываем не сохранив последние изменения
'v_XLWb.Close (True, v_FileName) ' закрываем сохранив последние изменения в
                                     ' (новом) файле v_FileName

завершаем работу с приложением:
Код
Set v_XLWb = Nothing
v_XLApp.Quit
Set v_XLApp = Nothing



Это сообщение отредактировал(а) Aloha - 11.10.2006, 16:28
PM   Вверх
EKoshelev
Дата 12.10.2006, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



Aloha, очень круто, что есть винград, что есть такой подфорум, и что есть ты. Спасибо за подсказку. Я попробовал с поздним связываением, вроде всё путём - создаётся, вписываются значения ячеек, сохраняется (закрывать не пробовал). Но одна хрень не получается - визуализация.

Строчка

  Set v_XLApp.Visible = True

вызывает глюк. Странно. Хотя такая строчка:

  MsgBox (Set v_XLApp.Visible)
  
Выдаёт False

Может ты сможешь что-то подсоветовать? Плиз, если тебе не трудно.

И ещё один вопр. В проджекте можно вешать макросы на приложение (а не на проекты), т. е. эти макросы живут не с проектами, а с самим приложением и могут работать для любого проекта который в данный момент загружен. Надеюсь ты понял.

Чё, у XL такой возможности нет? Чё-то я не нашёл...

Ну, короче, спасибо заранее.


--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
Aloha
Дата 12.10.2006, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
**


Профиль
Группа: Участник Клуба
Сообщений: 351
Регистрация: 14.5.2006

Репутация: 5
Всего: 165



EKoshelev

Цитата
 Строчка

  Set v_XLApp.Visible = True

вызывает глюк. Странно. ... 

Здесь вся странность только в наличии Set. Нужно просто
Код
XLApp.Visible = True


Чтобы сделать макросы доступными для всех открытых рабочих книг есть несколько вариантов.
1. Держать их в личной (персональной) книге макросов PERSONAL.XLS. Она будет создана, если при запуске макрорекодера
(Сервис -> Макрос -> Начать запись) указать "Сохранить в:" -> Личная книга макросов.
2. Создать надстройку, содержащую нужные макросы и подключить ее.
3. Держать нужные макросы в отдельной рабочей книге, которую поместить в папку автозагрузки Excel: "C:\Program Files\Microsoft Office\Office\Xlstart". (Мне этот вариант нравится меньше всего).


Это сообщение отредактировал(а) Aloha - 12.10.2006, 11:17
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0446 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.