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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2009, 18:38   #1
ShamanK
Пользователь
 
Регистрация: 16.10.2009
Сообщений: 90
По умолчанию как передать значение ячейки в другую книгу?

есть 2 открытые книги
в первой значение во второй таблица в которую должны заноситься значения.

кликаю в первой таблице по ячейке со значением, оно переносится во вторую таблицу

кликаю по другой ячейке - ее значение заносится во вторую таблицу строчкой ниже.

подскажите как это сделать?
ShamanK вне форума Ответить с цитированием
Старый 02.12.2009, 23:07   #2
ShamanK
Пользователь
 
Регистрация: 16.10.2009
Сообщений: 90
По умолчанию

блин все перепробовал..
если книга закрыта, то сделав так:
Цитата:
Set wb = Workbooks.Open(Filename)
wb.Worksheets(1).Cells(1, 1) = ....
тут все норм делается, однако открыв таким методом книгу, она открывается в том же окне что и основная книга

пробую так:
открываю файл по кнопке
Цитата:
Name = "C:\robot\orders.xlsm"
Set newWB = xl.Workbooks.Open(Name)
With xl.Application
.Visible = True
.Top = 130: .Left = 500: .Width = 240: .Height = 220
End With
файл октрывается, но теперь не могу понять как к этому файлу обратиться из другой функции...

Цитата:
Set s2 = Workbooks.Item("C:\robot\orders.xls m")
s2.Worksheets(1).Cells(5, "E") = Cells(c, "C")
и ничего не получается
делаю так:
Цитата:
s2 = Application.Workbooks.Item("C:\robo t\orders.xlsm").FullName
и опять не то..
парни подскажите пожалуйста синтаксис обращения к открытой книге, так чтобы можно было обратившись к этой книге записать в определенную ячейку этой книги некие данные.
ShamanK вне форума Ответить с цитированием
Старый 03.12.2009, 01:36   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
теперь не могу понять как к этому файлу обратиться из другой функции...
надо объявить глобальную переменную:
Public xl As Application


Попробуйте такой вариант:



Выполните двойной щелчок на любой ячейке таблицы, предварительно нажав зеленую кнопку.

Код модуля:
Код:
Public xl As Application

Sub test()
    Dim newWB As Workbook
    Set xl = New Application
    Set newWB = xl.Workbooks.Add
    With xl.Application
        .Visible = True: .WindowState = xlNormal
        .Top = 130: .Left = 500: .Width = 240: .Height = 240
    End With
End Sub

Sub СкопироватьЗначение(ByRef cell As Range, ap As Application)   'Target, xl
    Dim sh As Worksheet: Set sh = ap.ActiveWorkbook.ActiveSheet
    arr = cell.EntireRow.Value
    sh.Range("a" & sh.Rows.Count).End(xlUp).Offset(1).EntireRow.Value = arr
End Sub
Код листа:
Код:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect([МояТаблица], Target) Is Nothing Then
        If Not xl Is Nothing Then Cancel = True: СкопироватьЗначение Target, xl
    End If
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 03.12.2009, 12:13   #4
ShamanK
Пользователь
 
Регистрация: 16.10.2009
Сообщений: 90
По умолчанию

фантастика! спасибо вам огромное!!!

Последний раз редактировалось ShamanK; 03.12.2009 в 14:40.
ShamanK вне форума Ответить с цитированием
Старый 17.02.2010, 11:42   #5
Solex
Пользователь
 
Регистрация: 09.02.2010
Сообщений: 12
По умолчанию Другой лист

А как сделать чтобы данные переносились на другой лист той же книги?
Solex вне форума Ответить с цитированием
Старый 17.02.2010, 14:15   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А как сделать чтобы данные переносились на другой лист той же книги?
Код листа:
Код:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       Cancel = True
       Target.EntireRow.Copy Worksheets("Лист2").Range("a" & Rows.Count).End(xlUp).Offset(1)
End Sub
Пример файла: http://excelvba.ru/XL_Files/Sample__...__16-15-01.zip
EducatedFool вне форума Ответить с цитированием
Старый 23.06.2012, 14:00   #7
ALEKKO
Новичок
Джуниор
 
Регистрация: 15.05.2012
Сообщений: 2
По умолчанию

Ребята, спасибо большое. Воспользовался вашим советом.. Всё заработало.
Но есть проблемка..

Вариант с несколькими файлами Excel мною был избран именно с целью параллельной работы, то есть, как бы, распараллеливания потоков VBA. Первый Excel собирает данные.. и периодически передаёт их во второй. А второй уже их обрабатывает.

Но на практике получается не всё так радужно.. Файлы в такой сцепке становятся зависимыми... Так .. во время обработки данных вторым файлом - первый тоже подвисает и перестаёт собирать данные (вплоть до появления сообщения: Exсel ожидает пока другое приложение завершит OLE).

И в то же время для проверки .. пробовал запускать третий Exel, совершенно не связанный с первыми двумя.. Так вот этот третий работает нормально, пока первые два висят.

Так вот, вопросик.. можно ли сделать чтобы первые два файла не мешали друг другу, например устанавливать связь между ними только на время обмена данными между ними.. и затем сразу разрывать . И если можно, то как это сделать практически.

Спасибо.
ALEKKO вне форума Ответить с цитированием
Старый 25.06.2012, 14:16   #8
ALEKKO
Новичок
Джуниор
 
Регистрация: 15.05.2012
Сообщений: 2
По умолчанию

Неужели решения не существует?
ALEKKO вне форума Ответить с цитированием
Старый 20.02.2017, 19:25   #9
Alex_ilinykh
Новичок
Джуниор
 
Регистрация: 09.02.2017
Сообщений: 1
По умолчанию

Подскажите, а можно таким образом передавать заданный ренж, по нажатию кнопки и можно-ли таким образом обратиться к уже открытой книге в другом экземпляре эксель?
Alex_ilinykh вне форума Ответить с цитированием
Старый 21.02.2017, 01:52   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Alex, да, всё можно
EducatedFool вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как нарисовать стрелку из одной ячейки в другую Stoodentka Microsoft Office Excel 4 27.02.2013 17:11
Как перенести макросы и формы VB в другую книгу Talisman Microsoft Office Excel 3 21.11.2009 12:35
Как скопировать выпадающий список на другой лист и в другую книгу gleod Microsoft Office Excel 4 07.07.2009 22:36
C#: Передать значение переменной из одной формы в другую Veiron Общие вопросы .NET 3 29.06.2009 17:43
Как передать значение переменной из функции в ACCESSе в функцию в EXCELе? musicitsme Microsoft Office Access 1 01.04.2009 10:24