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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2011, 00:43   #1
igsxor
Пользователь
 
Регистрация: 15.03.2011
Сообщений: 35
Вопрос Создание диалогового окна для указания пути к рабочей книге

Привет.
Есть макрос,который работает с 2 книгами(обе открыты).Каждый раз до запуска макроса приходится вручную редактировать код,заносить имя открытой книги.
Подскажите можно ли после запуска макроса открыть окно и указать нужную книгу или путь до нее?
спс
igsxor вне форума Ответить с цитированием
Старый 28.03.2011, 01:07   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

читайте в помощи FileDialog. там есть пример использования
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.03.2011, 07:44   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Специально для этих целей делал функцию:
http://excelvba.ru/code/GetAnotherWorkbook
EducatedFool вне форума Ответить с цитированием
Старый 28.03.2011, 23:24   #4
igsxor
Пользователь
 
Регистрация: 15.03.2011
Сообщений: 35
Вопрос

Цитата:
Сообщение от IgorGO Посмотреть сообщение
читайте в помощи FileDialog. там есть пример использования
Доброго времени суток)

Простите,а... какой именно выбрать в helpе?
Page: [1] 2 Next


FileDialog Object
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object
FileDialog.SelectedItems Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.InitialView Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.ButtonName Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.FilterIndex Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.Show Method
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Methods
FileDialog.AllowMultiSelect Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.Filters Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.InitialFileName Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.DialogType Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog Object Members
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object
Application.FileDialog Property
Help > Excel Object Model Reference > Application Object > Properties
FileDialog.Application Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.Parent Property
...
igsxor вне форума Ответить с цитированием
Старый 28.03.2011, 23:35   #5
igsxor
Пользователь
 
Регистрация: 15.03.2011
Сообщений: 35
Вопрос

Цитата:
Сообщение от igsxor Посмотреть сообщение
Доброго времени суток)

Простите,а... какой именно выбрать в helpе?
Page: [1] 2 Next


FileDialog Object
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object
FileDialog.SelectedItems Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.InitialView Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.ButtonName Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.FilterIndex Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.Show Method
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Methods
FileDialog.AllowMultiSelect Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.Filters Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.InitialFileName Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.DialogType Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog Object Members
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object
Application.FileDialog Property
Help > Excel Object Model Reference > Application Object > Properties
FileDialog.Application Property
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object > Properties
FileDialog.Parent Property
...

Дело в том что из одной книги данные переносятся в другую и приходится ДО запуска макроса(на книге с изначальными данными) каждый раз указывать имя итоговой книги в редакторе вба.
Какой вариант подойдёт подскажите.К примеру я запускаю основной макрос и после этого тут же появляется диалоговое окно где я могу выбрать доступные имена книг.
igsxor вне форума Ответить с цитированием
Старый 28.03.2011, 23:53   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Если речь о этом коде, то так даже можно одну переменную сократить (но другую пришлось добавить):
Код:
Option Explicit

Sub Otbor()
    Dim a(), b, c, d, e, i As Long, ii As Long, j As Long, jj As Long, k As Long, temp As String

    a = Range("A2:I" & Range("A" & Rows.Count).End(xlUp).Row).Value
    ReDim b(1 To UBound(a), 1 To 3)

    With CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(a)
            temp = a(i, 1) & a(i, 5)
            If Not .Exists(temp) Then
                j = j + 1: .Item(temp) = j
                b(j, 1) = a(i, 1)
                b(j, 2) = a(i, 5)
                b(j, 3) = a(i, 9)
            Else
                k = .Item(temp)
                b(k, 3) = b(k, 3) + a(i, 9)
            End If
        Next
    End With



    With CreateObject("Scripting.Dictionary")

        For i = 1 To j
            temp = b(i, 1)
            If Not .Exists(temp) Then jj = jj + 1: .Item(temp) = jj
        Next

        ReDim c(1 To .Count, 1 To 4)

        For i = 1 To UBound(b)
            temp = b(i, 1)
            If Len(temp) Then
                c(.Item(temp), 1) = b(i, 1)
                Select Case b(i, 2)
                Case "Х"
                    c(.Item(temp), 2) = b(i, 3)
                Case "Г"
                    c(.Item(temp), 4) = b(i, 3)
                End Select
            End If
        Next

    End With


Dim ИмяФайла As String
ИмяФайла = GetFilePath
If ИмяФайла = "" Then Exit Sub ' выход, если пользователь отказался от выбора файла
    With Workbooks.Open(ИмяФайла).Sheets(1)

        d = .Range("B7:B" & .Range("B" & .Rows.Count).End(xlUp).Row).Value

        ReDim e(1 To UBound(d), 1 To 3)

        For i = 1 To UBound(d)
            For ii = 1 To UBound(c)
                If CStr(d(i, 1)) = CStr(c(ii, 1)) Then e(i, 1) = c(ii, 2): e(i, 3) = c(ii, 4): Exit For
        Next ii, i

            .Range("C7:E7").Resize(UBound(e)) = e
    End With

    End Sub

Function GetFilePath(Optional ByVal Title As String = "Выберите файл для загрузки", _
                     Optional ByVal InitialPath As String = "C:\Temp\", _
                     Optional ByVal FilterDescription As String = "Книги Excel", _
                     Optional ByVal FilterExtention As String = "*.xlsx*") As String
' функция выводит диалоговое окно выбора файла с заголовком Title,
' начиная обзор диска с папки InitialPath
' возвращает полный путь к выбранному файлу, или пустую строку в случае отказа от выбора
' для фильтра можно указать описание и расширение выбираемых файлов
    On Error Resume Next
    With Application.FileDialog(msoFileDialogOpen)
        .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
        .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
        If .Show <> -1 Then Exit Function
        GetFilePath = .SelectedItems(1)
    End With
End Function
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 29.03.2011 в 09:49. Причина: Добавил обработку отказа выбора файла, убрал PS
Hugo121 вне форума Ответить с цитированием
Старый 29.03.2011, 01:01   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

во вложении диалог выбора файла. кода вот столько:
Код:
Function GetFile() As String
  Dim fd As FileDialog
  Set fd = Application.FileDialog(msoFileDialogFilePicker)
  GetFile = ""
  fd.AllowMultiSelect = False
  If fd.Show = -1 Then GetFile = fd.SelectedItems(1)
  Set fd = Nothing
End Function

Sub BlaBlaBla()
  ActiveCell = GetFile
End Sub
взято отсюда:
Цитата:
FileDialog Object
Help > Object Library Reference for the 2007 Microsoft Office System > Object Model Reference for the 2007 Microsoft Office System > FileDialog Object
Вложения
Тип файла: rar книга639.rar (7.8 Кб, 21 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 29.03.2011 в 01:11.
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код диалогового окна "обзора папок" (для C++) >>arty<< Общие вопросы C/C++ 3 26.12.2010 15:49
Вывод данных на другой лист в рабочей книге Palomnik1096 Microsoft Office Excel 9 18.12.2010 04:42
У диалогового окна пропадает фон ssashas Помощь студентам 0 25.04.2010 21:22
Создание диалогового окна в Word Busine2009 Фриланс 3 13.07.2009 09:37
Вызов диалогового окна Sapsan Общие вопросы C/C++ 6 30.03.2009 23:03