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

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

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

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

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

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

парни помогите пожалуйста

что есть:

файлы:
robot.xls
оrders.xlsm
quotes.xls

действия

файл robot.xls открывает два других файла.
робот следит за поступающими в него данными через ДДЕ
как только срабатывает условие по какой либо акции, он должен посмотреть есть ли уже эта акция в файле оrders.xlsm ( это то как раз я и не могу сделать - ума не хватает ), если есть то не сообщать мне о сигнале , если нет то в определенной ячейке он показывает бай или сел ( это сделано )
и если я вижу данный сигнал то передаю его в файлы оrders.xlsm и quotes.xls ( это сделано )

файл quotes.xls посылает торговый приказ в торговую платформу ( это сделано )
файл оrders.xlsm следит за рынком и за этим ордером, и при определенных условиях изменяет его либо удаляет. ( слежение за рынком сделано - а вот как обратиться к другой открытой книге quotes.xls - не понимаю)

парни - практически все сделано
единственная загвоздка
1 - как организовать поиск из файла robot.xls в файле оrders.xlsm чтобы определять показывать торговый сигнал или нет в файле robot.xls
2 - как обратиться из файла оrders.xlsm в файл quotes.xls ???


с большой надеждой на вашу помощь!
ShamanK вне форума Ответить с цитированием
Старый 09.12.2009, 23:06   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Посмотрите,может идею Вам подскажу.
Запускаем все три книги
В оrders жмем кнопки,и смотрим
Вложения
Тип файла: rar Общение книг.rar (36.7 Кб, 55 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 10.12.2009, 01:54   #3
ShamanK
Пользователь
 
Регистрация: 16.10.2009
Сообщений: 90
По умолчанию

большое спасибо! все получилось
ShamanK вне форума Ответить с цитированием
Старый 10.12.2009, 13:16   #4
ShamanK
Пользователь
 
Регистрация: 16.10.2009
Сообщений: 90
По умолчанию

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

в файле ордерс:

ЭТА КНИГА
Код:
Private Sub Workbook_Open()
Initialize
End Sub
МОДУЛЬ1:
Код:
Public XLApp As New AppClass
Public Const robot1 As String = "robot1.xls"
Public Const оrders1 As String = "оrders1.xls"
Public Const quotes1 As String = "quotes1.xls"

Sub Initialize()
    Set XLApp.app = Application
End Sub
КЛАСС AppClass:
Код:
Option Explicit
Public WithEvents app As Application, sh As Worksheet, sh1 As Worksheet ', sh2 As Worksheet

Private Sub app_SheetSelectionChange(ByVal sk As Object, ByVal Target As Range)
  Dim r As Integer, c As Integer
    
    Set sh = app.Workbooks(quotes1).Worksheets(1)
    Set sh1 = app.Workbooks(robot1).Worksheets(1)
  
    r = ActiveCell.Row
    c = ActiveCell.Column
sh.Cells(1, 3) = r * c
sh1.Cells(1, 3) = r * c
  '  Rows(r).Delete Shift:=xlUp
End Sub
вы видите что я изменил на
Код:
SheetSelectionChange
мне необходимо чтобы макрос выполнялся при выделении определенных ячеек.
все работает на ура. в двух других файлах вставляется тестовое число.
однако я столкнулся с другой проблемой -
данный класс функционирует во всех книгах!
и при выделении в любой книги любой ячейки начинает исполняться этот макрос.


как создать условие при котором макрос бы запускался в зависимости от того в какой книге была выделена ячейка?
Вложения
Тип файла: rar Новая папка.rar (24.9 Кб, 13 просмотров)
ShamanK вне форума Ответить с цитированием
Старый 10.12.2009, 14:27   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:

Option Explicit
Public WithEvents app As Application, sh As Worksheet, sh1  As Worksheet ', sh2 As Worksheet
Public wb As Workbook
Private Sub app_SheetSelectionChange(ByVal sk As Object, ByVal Target As Range)
  Dim r As Integer, c As Integer
    On Error Resume Next
    Set sh = app.Workbooks(quotes1).Worksheets(1)
    Set sh1 = app.Workbooks(robot1).Worksheets(1)
 
   Set wb = app.ActiveWorkbook
 
  
  
  Select Case wb.Name
  
  Case robot1
   MsgBox ("Книга Робот")
  
  Case оrders1
   MsgBox ("Книга Ордерс")
  
  Case quotes1
  
 MsgBox ("Книга Кветс")
  
 End Select
  
  
    r = ActiveCell.Row
    c = ActiveCell.Column
sh.Cells(1, 3) = r * c
sh1.Cells(1, 3) = r * c
  '  Rows(r).Delete Shift:=xlUp
End Sub
Я думаю все понятно
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с файлами! vakyla Помощь студентам 10 10.11.2009 07:38
Работа с несколькими документами одновременно Busine2009 Microsoft Office Word 12 04.06.2009 19:53
Работа с файлами DM_bite Помощь студентам 4 20.09.2008 16:52
Messagedlg с тремя кнопками Detka Общие вопросы Delphi 8 10.07.2008 23:16
Выручте пожалуйста с тремя задачками ByteMan Помощь студентам 8 07.06.2007 23:39