Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Visio Excel / 2 сообщений из 2, страница 1 из 1
15.01.2007, 15:20:50
    #34256038
jjj676
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visio Excel
Здравствуйте!
Подскажите плик как сделать следующее:
Все нижеперечисленное нужно сделать через VBA обращаясь к Excel непосредственно из Visio.
Из Visio нужно открыть файл Excel (Допустим c:\111.xls)
Сделать активной ячейку "A1"
Присвоить переменной "x" значение из ячейки "А1"
что то типа x=Range("A1")
а потом Сместиться от ячейки А1 на x ячеек вниз, выделить данную ячейку.
а потом присвоить переменным (a,b,c) значения трёх ячеек справа от активной ячейки, т.е. что то типа:

a=ActiveCell.Offset(0, 1)
b=ActiveCell.Offset(0, 2)
c=ActiveCell.Offset(0, 3)

Вот только как всё это сделать из Visio ???

Заранее большое спасибо.
...
Рейтинг: 0 / 0
16.01.2007, 20:28:43
    #34259988
lena_####
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Visio Excel
На самом деле я не знаю, как там все устроено в Visio, но надеюсь, что это будет работать.
(данный вариант требует подключение объектной библиотеки Excel к проекту)
Код: 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.
30.
31.
32.
33.
34.
35.
Sub mySub1()
  Dim v_App As Excel.Application
  Dim v_Wb As Excel.Workbook
  Dim v_Sh As Excel.Worksheet
  Dim v_File As String
  Dim x, a, b, c
  
  v_File = "c:\111.xls"
  Set v_App = New Excel.Application
  Set v_Wb = v_App.Workbooks.Open(v_File)
  Set v_Sh = v_Wb.Worksheets("Лист1")
  
  v_Sh.Range("A1").Activate 'это, мне кажется, кривой способ
  x = ActiveCell
  a = ActiveCell.Offset( 0 ,  1 )
  b = ActiveCell.Offset( 0 ,  2 )
  c = ActiveCell.Offset( 0 ,  3 )
  'или
'  x = v_Sh.Range("A1")
'  a = v_Sh.Range("A1").Offset(0, 1)
'  b = v_Sh.Range("A1").Offset(0, 2)
'  c = v_Sh.Range("A1").Offset(0, 3)
  'или
'  x = v_Sh.Range("A1")
'  a = v_Sh.Range("B1")
'  b = v_Sh.Range("C1")
'  c = v_Sh.Range("D1")
  'или
'  x = v_Sh.Cells(1, 1)
'  a = v_Sh.Cells(1, 2)
'  b = v_Sh.Cells(1, 3)
'  c = v_Sh.Cells(1, 4)
  
  v_Wb.Close
  Set v_App = Nothing
End Sub

Данный вариант использует позднее связывание и не требует подключение объектной библиотеки Excel к проекту

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub mySub2()
  Dim v_App, v_Wb, v_Sh
  Dim v_File As String
  Dim x, a, b, c
  
  v_File = "c:\111.xls"
  Set v_App = CreateObject("Excel.Application")
  Set v_Wb = v_App.Workbooks.Open(v_File)
  Set v_Sh = v_Wb.Worksheets("Лист1")
  
  x = v_Sh.Cells( 1 ,  1 )
  a = v_Sh.Cells( 1 ,  2 )
  b = v_Sh.Cells( 1 ,  3 )
  c = v_Sh.Cells( 1 ,  4 )
  
  v_Wb.Close
  Set v_App = Nothing
End Sub
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Visio Excel / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]