Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2013, 15:23   #1
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию Обратиться к текущей книге excel из Visual Basic-приложения

Здравствуйте Уважаемые программисты!
Подскажите пожалуйста, как обратиться к ячейке "A1" текущей книги excel из запущенного из этой же книги приложения exe.
Поясню: у меня есть приложение "forms.exe" (написано на Visual Basic 2010). В этом приложении есть Form1 с TextBox1. Из книги xls с листа "Лист1" (имя и путь книги меняется) по кнопке запускается мое приложение exe:
Sub проба()
Dim a
a = Shell("c:\forms.exe", 1)
End Sub
Подскажите пожалуйста как прописать в коде VB2010, чтобы при запуске Form1 в поле TextBox1 считывалось значение с Листа "Лист1" из ячейки "A1" книги xls, из которой и запущено данное приложение exe.
Заранее спасибо.
ольгаг вне форума Ответить с цитированием
Старый 04.06.2013, 15:52   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я думаю может быть нужно как-то так:

Код:
Sub проба()
Dim a

a = Shell("c:\forms.exe " & ThisWorkbook.FullName, 1)
End Sub
Ну и соответственно изменить код forms.exe, чтоб принимал параметры.
Но я в VB не вникал, т.ч. сори...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 04.06.2013, 17:18   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Для такого запуска ваше ехе родителя не имеет,если запущено несколько процессов Excel,вы не сможете однозначно подключиться к нужному.
Возможно имеет смысл прописать некоторве параметры для запуска приложения через командную строку,например полное имя книги.
Тогда Sql запросом можно получить необходимые данные.

Вариант.
Производите поиск в прощессах процесс Excel.
Пример здесь

Находите активную книгу,лист и с него берете данные.
Это не такая уж и простая задача для вас.

PS:Вашу конструкцию считаю извратом.
Проще тогда обмен через DDE организовать.
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 04.06.2013 в 17:21.
doober вне форума Ответить с цитированием
Старый 05.06.2013, 07:36   #4
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Спасибо за Ваши отклики!
ольгаг вне форума Ответить с цитированием
Старый 05.06.2013, 15:14   #5
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Я попробовала код в excel:
Sub проба()
Dim a
a = Shell("c:\forms.exe " & ThisWorkbook.FullName, 1)
End Sub

при этом в коде forms.exe прописала так:
For Each arg As String In My.Application.CommandLineArgs
MsgBox(arg)
Next

в принципе работает. Но появляется несколько msgbox-ов с параметром (т.е. "MsgBox(arg)") , признаком деления которых является пробел в пути к файлу xls. Т.е. если путь c:\новая папка\1.xls - то появляется 1msgbox "c:\новая", затем 2msgbox "папка\1.xls".
Подскажите пожалуйста, что можно приписать чтобы в окно выводился сразу весь путь? Заранее спасибо.
ольгаг вне форума Ответить с цитированием
Старый 05.06.2013, 15:20   #6
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Ответ найден.
ольгаг вне форума Ответить с цитированием
Старый 05.06.2013, 17:43   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Chr(34) добавляли?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 05.06.2013, 18:11   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

два раза???
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 06.06.2013, 14:12   #9
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Получилось следующим образом:
Dim args As String = ""
For Each arg As String In My.Application.CommandLineArgs
args &= arg & " "
Next
ольгаг вне форума Ответить с цитированием
Старый 06.06.2013, 14:41   #10
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Подскажите пожалуйста, как преобразовать string в excel-объект?
Заранее спасибо.
ольгаг вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
макрос Excel Visual Basic arly123 Помощь студентам 0 20.04.2013 01:43
Visual Basic Microsoft Excel Людмила. Помощь студентам 3 23.11.2012 19:51
Работа с Visual Basic Editor в Excel. Muaxaxa Помощь студентам 2 14.11.2011 16:43
Visual Basic интегрированный в Excel a1b2 Microsoft Office Excel 3 23.12.2010 19:53