Макрос заполнения ячеек из выбранного файла - VBA
Формулировка задачи:
Помогите, подскажите что делаю не так? Нужен макрос с выбором файла и заполнением ячеек из этого файла. Но получается что на каждую заполняемую ячейку выходит диалоговое окно выбора файла.
Листинг программы
- Public Function GetFilePath(Optional ByVal Title As String = "Выберите файл КДРО", _
- Optional ByVal InitialPath As String = "c:\", _
- Optional ByVal FilterDescription As String = "Книги Excel", _
- Optional ByVal FilterExtention As String = "*.xls*") As String
- 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): PS = Application.PathSeparator
- End With
- End Function
- Sub Выбор_файла()
- Dim ИмяФайла As String
- Dim Fn As String
- ИмяФайла = GetFilePath
- If ИмяФайла = "" Then Exit Sub
- MsgBox ИмяФайла
- Range("D10").Select
- ActiveCell.FormulaR1C1 = "=[ИмяФайла]Анализ!R11C4"
- Range("D11").Select
- ActiveCell.FormulaR1C1 = "=[ИмяФайла]Анализ!R12C4"
- Range("D12").Select
- End Sub
Решение задачи: «Макрос заполнения ячеек из выбранного файла»
textual
Листинг программы
- 'Option Explicit используется в самом верху модуля.
- 'Option Explicit заставляет объявлять все переменные и константы.
- 'Это нужно, чтобы не допускать ошибки в именах переменных и констант.
- Option Explicit
- Sub Выбор_файла()
- 'Перед переменными и константами лучше добавлять префикс,
- 'чтобы имя переменной или константы не совпало с зарезирвированным словом.
- 'Я добавляю префикс в зависимости от типа данных.
- 'В данном случае добавил префикс "s".
- Dim sFilePath As String
- Dim sFileName As String
- Dim sFormula As String
- sFilePath = GetFilePath
- If sFilePath = "" Then Exit Sub
- MsgBox sFilePath
- 'Получаем имя книги.
- sFileName = Mid(sFilePath, InStrRev(sFilePath, "\") + 1)
- 'Получаем путь к книге.
- sFilePath = Mid(sFilePath, 1, InStrRev(sFilePath, "\"))
- 'Формируем общую часть для всех формул.
- sFormula = "='" & sFilePath & "[" & sFileName & "]Анализ'!"
- Range("D10").FormulaR1C1 = sFormula & "R11C4"
- Range("D11").FormulaR1C1 = sFormula & "R12C4"
- End Sub
- Public Function GetFilePath() As String
- Const sTitle As String = "Выберите файл КДРО"
- Const sInitialPath As String = "c:\"
- Const sFilterDescription As String = "Книги Excel"
- Const sFilterExtention As String = "*.xls*"
- With Application.FileDialog(msoFileDialogOpen)
- .ButtonName = "Выбрать": .Title = sTitle: .InitialFileName = sInitialPath
- .Filters.Clear: .Filters.Add sFilterDescription, sFilterExtention
- If .Show = 0 Then Exit Function
- GetFilePath = .SelectedItems(1)
- End With
- End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д