Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Dialogs Добавлено: 20.07.08 01:39  

Автор вопроса:  Jktu | ICQ: 381648295 
Ещё задачка.

При запуске кода мне нужно, чтобы он брал информацию из других экселевских файлов. То есть:

Открывается окно xlDialogOpen (может, не так надо?), выбираю там файл и хочу, чтобы код запомнил путь к этому файлу и брал там информацию.

Примерно так:
Dim Answer As String
'...
Answer = Application.Dialogs(xlOpenDialog).Show


Но вот незадача - строковой переменной Answer вдруг присваивается булево значение True (после нажатия кнопки "Открыть"). А Path нигде не фигурирует...

В связи с этим два вопроса:
Каким диалогом пользоваться, чтобы показать коду путь к файлу (D:\Оклады)?
Как вытащить информацию из книги XL, не открывая её?

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #1 Добавлено: 20.07.08 20:36
1.
Sub ChooseFile()
  With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = False
    .InitialFileName = "Оклады.xls"  'если известно имя файла
    If .Show = -1 Then  'признак того, что был выбран какой-то файл
      Answer = .SelectedItems(1)  'полный путь к файлу
    End If
  End With
  If Not IsEmpty(Answer) Then
    MsgBox Answer
    'Ваш код
  End If
End Sub


2.
Function GetValueFromClosed(path As String, file As String, sheet As String, ref As String) As String
  Dim arg As String
  If Right(path, 1) <> "\" Then path = path & "\"
  If Dir(path & file) = "" Then
    GetValueFromClosed = "File Not Found"
    Exit Function
  End If
  arg = Chr(39) & path & "[" & file & "]" & sheet & Chr(39) & "!" & Range(ref).Address(ReferenceStyle:=xlR1C1)
  GetValueFromClosed = Application.ExecuteExcel4Macro(arg)
End Function

Sub GetValueFromClosedWorkbook()
  'можно указать и диапазон, но тогда нужен разбор значений по ячейкам. А пока передается значение 1-й ячейки
  a = GetValueFromClosed(";D:\Temp\", "Данные закрытой книги.xls", "Sheet1", "A2";)
  b = GetValueFromClosed(";D:\Temp\", "Данные закрытой книги.xls", "Sheet2", "B2";)
  
  MsgBox "Данные из 'D:\Temp\[Данные закрытой книги.xls]' Лист 'Sheet1' Ячейка 'A2' -> a = " & a & _
         Chr(10) & Chr(13) & _
         "Данные из 'D:\Temp\[Данные закрытой книги.xls]' Лист 'Sheet2' Ячейка 'B2' -> b = " & b
End Sub

Ответить

Номер ответа: 2
Автор ответа:
 Jktu



ICQ: 381648295 

Вопросов: 8
Ответов: 32
 Профиль | | #2 Добавлено: 23.07.08 23:02
Спасибо огромное!
Это самый исчерпывающий ответ, который я встречал в своей жизни!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам