Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Диалоговое окно выбора файла вместо имени файла в коде - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Диалоговое окно выбора файла вместо имени файла в коде (Макросы/Sub)
Диалоговое окно выбора файла вместо имени файла в коде
Sancho Дата: Среда, 01.06.2016, 10:58 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 279
Репутация: 19 ±
Замечаний: 0% ±

2007, 2010, 2013
Всем привет!
не соображу ни как как изменить строку
[vba]
Код
Set template = Workbooks.Open(myPath & "\шаблон.xlsm")
[/vba]
на
[vba]
Код
Dim avFiles
    avFiles = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", , "Выберете файл", , True) '
    Set template = Workbooks.Open(avFiles)
[/vba]
Что бы пользователь сам выбирал нужный файл для копирования.

[vba]
Код
Sub createFiles()
    Application.ScreenUpdating = False
    Dim folderName$, myPath$
    myPath = ThisWorkbook.Path
    Set sh = ThisWorkbook.Sheets(1)
    Set template = Workbooks.Open(myPath & "\шаблон.xlsm")
    
      With sh
        For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            folderPath = myPath & "\" & .Cells(i, 1)
            If Dir(folderPath, vbDirectory) = "" Then MkDir (folderPath)
            With template.Sheets(5)
                .[o53] = sh.Cells(i, 7)
            End With
            With template.Sheets(2)
                .[d7] = sh.Cells(i, 2): .[s7] = sh.Cells(i, 6): .[h9] = sh.Cells(i, 3): .[x9] = sh.Cells(i, 4): .[d11] = sh.Cells(i, 1)
                template.SaveCopyAs folderPath & "\" & sh.Cells(i, 3) & " " & sh.Cells(i, 2) & ".xlsm"
            End With
        Next i
    End With
    template.Close False
    Application.ScreenUpdating = True
    MsgBox "Готово!"
End Sub
[/vba]

Всем спасибо за понимание, голова уже кружится от этих кодов...


Сообщение отредактировал Sancho - Среда, 01.06.2016, 10:58
 
Ответить
СообщениеВсем привет!
не соображу ни как как изменить строку
[vba]
Код
Set template = Workbooks.Open(myPath & "\шаблон.xlsm")
[/vba]
на
[vba]
Код
Dim avFiles
    avFiles = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", , "Выберете файл", , True) '
    Set template = Workbooks.Open(avFiles)
[/vba]
Что бы пользователь сам выбирал нужный файл для копирования.

[vba]
Код
Sub createFiles()
    Application.ScreenUpdating = False
    Dim folderName$, myPath$
    myPath = ThisWorkbook.Path
    Set sh = ThisWorkbook.Sheets(1)
    Set template = Workbooks.Open(myPath & "\шаблон.xlsm")
    
      With sh
        For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            folderPath = myPath & "\" & .Cells(i, 1)
            If Dir(folderPath, vbDirectory) = "" Then MkDir (folderPath)
            With template.Sheets(5)
                .[o53] = sh.Cells(i, 7)
            End With
            With template.Sheets(2)
                .[d7] = sh.Cells(i, 2): .[s7] = sh.Cells(i, 6): .[h9] = sh.Cells(i, 3): .[x9] = sh.Cells(i, 4): .[d11] = sh.Cells(i, 1)
                template.SaveCopyAs folderPath & "\" & sh.Cells(i, 3) & " " & sh.Cells(i, 2) & ".xlsm"
            End With
        Next i
    End With
    template.Close False
    Application.ScreenUpdating = True
    MsgBox "Готово!"
End Sub
[/vba]

Всем спасибо за понимание, голова уже кружится от этих кодов...

Автор - Sancho
Дата добавления - 01.06.2016 в 10:58
Матраскин Дата: Среда, 01.06.2016, 11:06 | Сообщение № 2
Группа: Друзья
Ранг: Обитатель
Сообщений: 375
Репутация: 81 ±
Замечаний: 0% ±

20xx
Sancho,
я честно говоря не понял какая у Вас ошибка, я просто поменял строчки кода и всё работает.. может поменять xls на xlsm ?


в интернете опять кто-то не прав
 
Ответить
СообщениеSancho,
я честно говоря не понял какая у Вас ошибка, я просто поменял строчки кода и всё работает.. может поменять xls на xlsm ?

Автор - Матраскин
Дата добавления - 01.06.2016 в 11:06
_Boroda_ Дата: Среда, 01.06.2016, 11:41 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
avFiles получается массив из одного элемента (или не одного - сколько файлов закажете, столько элементов и будет)
Вот так работает
[vba]
Код
    Dim avFiles
    avFiles = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", , "Выберете файл", , True)
    Set template = Workbooks.Open(avFiles(1))
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеavFiles получается массив из одного элемента (или не одного - сколько файлов закажете, столько элементов и будет)
Вот так работает
[vba]
Код
    Dim avFiles
    avFiles = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", , "Выберете файл", , True)
    Set template = Workbooks.Open(avFiles(1))
[/vba]

Автор - _Boroda_
Дата добавления - 01.06.2016 в 11:41
Sancho Дата: Среда, 01.06.2016, 11:42 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 279
Репутация: 19 ±
Замечаний: 0% ±

2007, 2010, 2013
Матраскин, ошибка Type mismatch (Error 13) в строке [vba]
Код
Set template = Workbooks.Open(avFiles)
[/vba]
 
Ответить
СообщениеМатраскин, ошибка Type mismatch (Error 13) в строке [vba]
Код
Set template = Workbooks.Open(avFiles)
[/vba]

Автор - Sancho
Дата добавления - 01.06.2016 в 11:42
Sancho Дата: Среда, 01.06.2016, 11:45 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 279
Репутация: 19 ±
Замечаний: 0% ±

2007, 2010, 2013
_Boroda_, Спасибо, заработало! hands
 
Ответить
Сообщение_Boroda_, Спасибо, заработало! hands

Автор - Sancho
Дата добавления - 01.06.2016 в 11:45
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Диалоговое окно выбора файла вместо имени файла в коде (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!