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

Вход

Регистрация

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

 

= Мир MS Excel/Открытие файла с переменным именем - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Открытие файла с переменным именем (Макросы/Sub)
Открытие файла с переменным именем
duckky Дата: Вторник, 26.11.2019, 07:30 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброе утро, форумчане. Знаю, что подобных тем уже было несколько, но предложенные варианты у меня почему-то не срабатывают.
Вопрос такой: В папку автоматически выгружаются файлы, в имени файла есть само название, дата и время выгрузки.
Я всё это собираю в отчёт, где каждый лист - это дата месяца, она указана на активном листе (берётся с листа).
Пытаюсь сделать следующий макрос: с активного листа берём дату, ищем в папке файл с этой датой, но не берём в расчёт время выгрузки файла и переносим из него данные на активный лист.
Так вот, если я уберу время выгрузки, то файл спокойно находится, но как добавить ещё и время выгрузки (время может быть любое). Например, файл называется 8Daily Loss Report - 2019-11-26_00-34-33.xlsx
[vba]
Код
Sub Macros1()
'
' From 8 to 20 hour
'
Dim DevFileName As String
DevFileName = ThisWorkbook.Name
Dim a, b, c, x As String
a = ActiveSheet.Range("i3").Value
b = ActiveSheet.Range("j3").Value
c = ActiveSheet.Range("k3").Value
x = c & "-" & b & "-" & a & "_"
sFolder = "C:\Users\Downloads\test\"
    sFile = "8Daily Loss Report - " & x & "*.xlsx"
        Workbooks.Open sFolder & sFile
    Sheets("Sheet1").Activate
    Range("C6:d9").Select
    Selection.Copy
    Windows("FinalData.xlsm").Activate
    Range("E8").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Windows("8Daily Loss Report - " & x & "*.xlsx").Activate
Sheets("Sheet1").Activate
Range("C23:D23").Select
Application.CutCopyMode = False
Selection.Copy
Windows("FinalData.xlsm").Activate
Range("E12").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Windows("8Daily Loss Report - " & x & "*.xlsx").Activate
ActiveWindow.Close
End Sub
[/vba]
К сообщению приложен файл: FinalData.xlsm(30.1 Kb)


Сообщение отредактировал duckky - Вторник, 26.11.2019, 07:31
 
Ответить
СообщениеДоброе утро, форумчане. Знаю, что подобных тем уже было несколько, но предложенные варианты у меня почему-то не срабатывают.
Вопрос такой: В папку автоматически выгружаются файлы, в имени файла есть само название, дата и время выгрузки.
Я всё это собираю в отчёт, где каждый лист - это дата месяца, она указана на активном листе (берётся с листа).
Пытаюсь сделать следующий макрос: с активного листа берём дату, ищем в папке файл с этой датой, но не берём в расчёт время выгрузки файла и переносим из него данные на активный лист.
Так вот, если я уберу время выгрузки, то файл спокойно находится, но как добавить ещё и время выгрузки (время может быть любое). Например, файл называется 8Daily Loss Report - 2019-11-26_00-34-33.xlsx
[vba]
Код
Sub Macros1()
'
' From 8 to 20 hour
'
Dim DevFileName As String
DevFileName = ThisWorkbook.Name
Dim a, b, c, x As String
a = ActiveSheet.Range("i3").Value
b = ActiveSheet.Range("j3").Value
c = ActiveSheet.Range("k3").Value
x = c & "-" & b & "-" & a & "_"
sFolder = "C:\Users\Downloads\test\"
    sFile = "8Daily Loss Report - " & x & "*.xlsx"
        Workbooks.Open sFolder & sFile
    Sheets("Sheet1").Activate
    Range("C6:d9").Select
    Selection.Copy
    Windows("FinalData.xlsm").Activate
    Range("E8").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Windows("8Daily Loss Report - " & x & "*.xlsx").Activate
Sheets("Sheet1").Activate
Range("C23:D23").Select
Application.CutCopyMode = False
Selection.Copy
Windows("FinalData.xlsm").Activate
Range("E12").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Windows("8Daily Loss Report - " & x & "*.xlsx").Activate
ActiveWindow.Close
End Sub
[/vba]

Автор - duckky
Дата добавления - 26.11.2019 в 07:30
Pelena Дата: Вторник, 26.11.2019, 08:36 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 14863
Репутация: 3248 ±
Замечаний: ±

Excel 2010, 2016 & Mac Excel
Здравствуйте. Думаю, придётся перебирать файлы в папке и искать имя файла, содержащее указанную дату


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеЗдравствуйте. Думаю, придётся перебирать файлы в папке и искать имя файла, содержащее указанную дату

Автор - Pelena
Дата добавления - 26.11.2019 в 08:36
K-SerJC Дата: Вторник, 26.11.2019, 08:40 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 479
Репутация: 84 ±
Замечаний: 0% ±

Excel 2013
а если так?
как реализация предложенного выше варианта. :D
К сообщению приложен файл: duckky.xlsm(30.8 Kb)


Благими намерениями выстелена дорога в АД.

Сообщение отредактировал K-SerJC - Вторник, 26.11.2019, 08:48
 
Ответить
Сообщениеа если так?
как реализация предложенного выше варианта. :D

Автор - K-SerJC
Дата добавления - 26.11.2019 в 08:40
duckky Дата: Вторник, 26.11.2019, 08:53 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте. Думаю, придётся перебирать файлы в папке и искать имя файла, содержащее указанную дату

Так с датой проблем нет, в имени есть ещё время, без этого времени файл находится нормально. Я пытался указать
[vba]
Код
"*.xlsx"
[/vba]
где * - должна была заменять часть, но проверка показывает, что он ищет файл "8Daily Loss Report - 2019-11-26_*.xlsx"
 
Ответить
Сообщение
Здравствуйте. Думаю, придётся перебирать файлы в папке и искать имя файла, содержащее указанную дату

Так с датой проблем нет, в имени есть ещё время, без этого времени файл находится нормально. Я пытался указать
[vba]
Код
"*.xlsx"
[/vba]
где * - должна была заменять часть, но проверка показывает, что он ищет файл "8Daily Loss Report - 2019-11-26_*.xlsx"

Автор - duckky
Дата добавления - 26.11.2019 в 08:53
duckky Дата: Вторник, 26.11.2019, 09:08 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
а если так?

Пишет Run-time error 450. Wrong number of arguments or invalid property assignment на строке
[vba]
Код
sFiles = FilenamesCollection(sFolder, msk)
[/vba]
sFile = Empty
У меня в имени файла дата в обратном порядке (в американском) - год, месяц, день, он понимает мою дату из ячейки?


Сообщение отредактировал duckky - Вторник, 26.11.2019, 09:09
 
Ответить
Сообщение
а если так?

Пишет Run-time error 450. Wrong number of arguments or invalid property assignment на строке
[vba]
Код
sFiles = FilenamesCollection(sFolder, msk)
[/vba]
sFile = Empty
У меня в имени файла дата в обратном порядке (в американском) - год, месяц, день, он понимает мою дату из ячейки?

Автор - duckky
Дата добавления - 26.11.2019 в 09:08
K-SerJC Дата: Вторник, 26.11.2019, 12:29 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 479
Репутация: 84 ±
Замечаний: 0% ±

Excel 2013
У меня в имени файла дата в обратном порядке (в американском) - год, месяц, день, он понимает мою дату из ячейки?

функция FilenamesCollection собирает коллекцию имен файлов
в папке sFolder
которые подходят по маске msk

записываем в маску ваше значение x
должно работать...
К сообщению приложен файл: _duckky.xlsm(30.8 Kb)


Благими намерениями выстелена дорога в АД.
 
Ответить
Сообщение
У меня в имени файла дата в обратном порядке (в американском) - год, месяц, день, он понимает мою дату из ячейки?

функция FilenamesCollection собирает коллекцию имен файлов
в папке sFolder
которые подходят по маске msk

записываем в маску ваше значение x
должно работать...

Автор - K-SerJC
Дата добавления - 26.11.2019 в 12:29
duckky Дата: Вторник, 26.11.2019, 14:02 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
должно работать...

Спасибо, вечером протестирую.
 
Ответить
Сообщение
должно работать...

Спасибо, вечером протестирую.

Автор - duckky
Дата добавления - 26.11.2019 в 14:02
RAN Дата: Вторник, 26.11.2019, 19:50 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 5194
Репутация: 1045 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub мяу()
    sFolder = "D:\"
    sDat = Format(ActiveSheet.Range("H4"), "YYYY-MM-DD")
    sFile = Dir(sFolder & "8Daily Loss Report - " & sDat & "*.xlsx", 16)
    Workbooks.Open sFolder & sFile
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Sub мяу()
    sFolder = "D:\"
    sDat = Format(ActiveSheet.Range("H4"), "YYYY-MM-DD")
    sFile = Dir(sFolder & "8Daily Loss Report - " & sDat & "*.xlsx", 16)
    Workbooks.Open sFolder & sFile
End Sub
[/vba]

Автор - RAN
Дата добавления - 26.11.2019 в 19:50
duckky Дата: Четверг, 28.11.2019, 07:56 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 87
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо. Получился самый короткий вариант.


Сообщение отредактировал duckky - Четверг, 28.11.2019, 09:43
 
Ответить
СообщениеСпасибо. Получился самый короткий вариант.

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

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