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

Вход

Регистрация

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

 

= Мир MS Excel/Изменяемое имя файла - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Изменяемое имя файла
Sonik81 Дата: Вторник, 20.11.2012, 19:22 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Добрый день!

Такая задача: есть файл с именем "ИМЯ_№", из него необходимо копировать данные в шаблон.
Всё достаточно просто, но пока не совсем понимаю как сделать так, чтобы макрос спрашивал из какого именно файла копировать данные в шаблон, т.к. имя у файлов будет отличаться по порядковому номеру.

Есть идея сделать окошко куда надо будет вводить номер, и на основании этого номера макрос будет брать файл с нужным именем.
ПРоблема в том, что на создание этого окошка я наверное убью с недельку, пока до книжки правильной доберусь.

Если кто пнёт меня в правильном направлении буду благодарен.
 
Ответить
СообщениеДобрый день!

Такая задача: есть файл с именем "ИМЯ_№", из него необходимо копировать данные в шаблон.
Всё достаточно просто, но пока не совсем понимаю как сделать так, чтобы макрос спрашивал из какого именно файла копировать данные в шаблон, т.к. имя у файлов будет отличаться по порядковому номеру.

Есть идея сделать окошко куда надо будет вводить номер, и на основании этого номера макрос будет брать файл с нужным именем.
ПРоблема в том, что на создание этого окошка я наверное убью с недельку, пока до книжки правильной доберусь.

Если кто пнёт меня в правильном направлении буду благодарен.

Автор - Sonik81
Дата добавления - 20.11.2012 в 19:22
Hugo Дата: Вторник, 20.11.2012, 19:26 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Например так, стандартно:

[vba]
Code
Sub Get_TXT()
         Dim Filename As String
         Filename = Get_Filename
         If Filename = "False" Then Exit Sub
...
...

End Sub

Public Function Get_Filename(Optional Filter As String = "Файлы ,*.", Optional Title As String = "Выбираем файл")
         Dim vntFilename As Variant
         vntFilename = Application.GetOpenFilename(Filter, 1, Title, , False)
         Get_Filename = vntFilename
End Function
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеНапример так, стандартно:

[vba]
Code
Sub Get_TXT()
         Dim Filename As String
         Filename = Get_Filename
         If Filename = "False" Then Exit Sub
...
...

End Sub

Public Function Get_Filename(Optional Filter As String = "Файлы ,*.", Optional Title As String = "Выбираем файл")
         Dim vntFilename As Variant
         vntFilename = Application.GetOpenFilename(Filter, 1, Title, , False)
         Get_Filename = vntFilename
End Function
[/vba]

Автор - Hugo
Дата добавления - 20.11.2012 в 19:26
Sonik81 Дата: Вторник, 20.11.2012, 20:05 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

К сожалению не совсем подходит, файл то я открою, но дальше все должно копироваться автоматом. А там используется ( в макросе) имя файлов, и если шаблон он на то и шаблон, что имя его не изменяется, то источник данных будет всегда разным.

Хотя я не отрицаю, что руки у меня кривые и моск ещё не полон знаниями по Excel. И может я чего то не понимаю или неправильно объяснил? sad
 
Ответить
СообщениеК сожалению не совсем подходит, файл то я открою, но дальше все должно копироваться автоматом. А там используется ( в макросе) имя файлов, и если шаблон он на то и шаблон, что имя его не изменяется, то источник данных будет всегда разным.

Хотя я не отрицаю, что руки у меня кривые и моск ещё не полон знаниями по Excel. И может я чего то не понимаю или неправильно объяснил? sad

Автор - Sonik81
Дата добавления - 20.11.2012 в 20:05
RAN Дата: Вторник, 20.11.2012, 20:22 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПинаю biggrin

Автор - RAN
Дата добавления - 20.11.2012 в 20:22
Hugo Дата: Вторник, 20.11.2012, 22:05 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Quote (Sonik81)
файл то я открою
- ну а больше ничего и не нужно.
Я даже не помню, когда мне было нужно имя файла в явном виде...
Юзер выбрал в диалоге файл, Вы его открываете так:
[vba]
Code
set wb=workbooks.open(Filename)
[/vba]
и дальше обращаетесь к переменной/объекту wb. Всё.
Ну или как в примере по ссылке RAN.
Можно конечно собрать имя файла из известной части и того, что юзер где-то введёт - в ячейку или inputbox, но это думаю плохой выбор - так не видно, какие файлы есть, нужно обрабатывать ошибки ввода и т.д. Но в принципе делать можно.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение
Quote (Sonik81)
файл то я открою
- ну а больше ничего и не нужно.
Я даже не помню, когда мне было нужно имя файла в явном виде...
Юзер выбрал в диалоге файл, Вы его открываете так:
[vba]
Code
set wb=workbooks.open(Filename)
[/vba]
и дальше обращаетесь к переменной/объекту wb. Всё.
Ну или как в примере по ссылке RAN.
Можно конечно собрать имя файла из известной части и того, что юзер где-то введёт - в ячейку или inputbox, но это думаю плохой выбор - так не видно, какие файлы есть, нужно обрабатывать ошибки ввода и т.д. Но в принципе делать можно.

Автор - Hugo
Дата добавления - 20.11.2012 в 22:05
Sonik81 Дата: Среда, 21.11.2012, 17:15 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Quote (Hugo)
set wb=workbooks.open(Filename)

О так всё работает. ah

Спасибо большое! Просто я чайник совсем, в макросах почти не шурупю.

Вот ещё один вопрос родился, мне нужно копировать данные каждый день. Прикладываю два файла: "Источник" - файл из которого копируют и который может иметь разные имена, но структура данных всегда одинаковая и "Шаблон" - файл в который копируют.

Прежде всего хочется понять как пользоваться функцией "Если" в макросе. Но если сузить задачу то в зависимости от дня недели необходимо копировать из "Источника" данные расположенные в определённом диапазоне ячеек (по понедельникам они всегда на одном месте, по вторника всегда на другом и т.д.) в "Шаблон".

А то сейчас я сделал 5 почти одинаковых макросов, просто поменял диапазон ячеек. Что не совсем красиво!

Я надеюсь, что я не сильно напрягаю...
К сообщению приложен файл: Documents.zip (7.7 Kb)


Сообщение отредактировал Sonik81 - Среда, 21.11.2012, 20:59
 
Ответить
Сообщение
Quote (Hugo)
set wb=workbooks.open(Filename)

О так всё работает. ah

Спасибо большое! Просто я чайник совсем, в макросах почти не шурупю.

Вот ещё один вопрос родился, мне нужно копировать данные каждый день. Прикладываю два файла: "Источник" - файл из которого копируют и который может иметь разные имена, но структура данных всегда одинаковая и "Шаблон" - файл в который копируют.

Прежде всего хочется понять как пользоваться функцией "Если" в макросе. Но если сузить задачу то в зависимости от дня недели необходимо копировать из "Источника" данные расположенные в определённом диапазоне ячеек (по понедельникам они всегда на одном месте, по вторника всегда на другом и т.д.) в "Шаблон".

А то сейчас я сделал 5 почти одинаковых макросов, просто поменял диапазон ячеек. Что не совсем красиво!

Я надеюсь, что я не сильно напрягаю...

Автор - Sonik81
Дата добавления - 21.11.2012 в 17:15
Hugo Дата: Среда, 21.11.2012, 18:33 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Похоже, что Вы сильно напрягли нашу машинку по отсеву вложений не по правилам smile
Сделать привязку к дню недели можно, но думаю на практике лучше запрашивать день у пользователя, или сделать 5 разных кнопок.
Ну а в коде конечно "экономичнее" сделать ветвление выбора диапазонов.

[vba]
Code
Sub tt()
      Dim x&, arr
      arr = Array(, "A1:A2", "B1:B2", "C1:C2", "D1:D2", "E1:E2")
      x = InputBox("Введите номер дня недели")
      Range(arr(x)).Select
End Sub
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеПохоже, что Вы сильно напрягли нашу машинку по отсеву вложений не по правилам smile
Сделать привязку к дню недели можно, но думаю на практике лучше запрашивать день у пользователя, или сделать 5 разных кнопок.
Ну а в коде конечно "экономичнее" сделать ветвление выбора диапазонов.

[vba]
Code
Sub tt()
      Dim x&, arr
      arr = Array(, "A1:A2", "B1:B2", "C1:C2", "D1:D2", "E1:E2")
      x = InputBox("Введите номер дня недели")
      Range(arr(x)).Select
End Sub
[/vba]

Автор - Hugo
Дата добавления - 21.11.2012 в 18:33
Sonik81 Дата: Среда, 21.11.2012, 21:06 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Quote (Hugo)
Похоже, что Вы сильно напрягли нашу машинку по отсеву вложений не по правилам


Кхм, сорри. Заработался совсем... sad

Quote (Hugo)
Сделать привязку к дню недели можно, но думаю на практике лучше запрашивать день у пользователя,

Сначала хотелось бы сделать привязку к дню недели, чтобы выбора у пользователя не было. Ну и понять как с "Если" работать. happy

Quote (Hugo)
или сделать 5 разных кнопок.

Имеете в виду кнопок запуска макроса? Сочетания клавиш или же формы графические? surprised

Quote (Hugo)
Ну а в коде конечно "экономичнее" сделать ветвление выбора диапазонов.

С ветвлением не совсем понял. Но там есть ячейки которые не надо копировать, ну т.е. например с A1:A10 копируем, а потом A15:A17, а потом A33:A40. Ну и вставлять их надо тоже не подряд.
 
Ответить
Сообщение
Quote (Hugo)
Похоже, что Вы сильно напрягли нашу машинку по отсеву вложений не по правилам


Кхм, сорри. Заработался совсем... sad

Quote (Hugo)
Сделать привязку к дню недели можно, но думаю на практике лучше запрашивать день у пользователя,

Сначала хотелось бы сделать привязку к дню недели, чтобы выбора у пользователя не было. Ну и понять как с "Если" работать. happy

Quote (Hugo)
или сделать 5 разных кнопок.

Имеете в виду кнопок запуска макроса? Сочетания клавиш или же формы графические? surprised

Quote (Hugo)
Ну а в коде конечно "экономичнее" сделать ветвление выбора диапазонов.

С ветвлением не совсем понял. Но там есть ячейки которые не надо копировать, ну т.е. например с A1:A10 копируем, а потом A15:A17, а потом A33:A40. Ну и вставлять их надо тоже не подряд.

Автор - Sonik81
Дата добавления - 21.11.2012 в 21:06
Hugo Дата: Среда, 21.11.2012, 22:23 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3691
Репутация: 790 ±
Замечаний: 0% ±

365
Привязываться к дню не рекомендую потому, что всегда будут случаи, что нужно что-то пересчитать за вчера или завтра sad
Но конечно это не мне решать.
5 кнопок - это 5 графических объектов, каждый запускает один макрос, но с разными параметрами - механику правда не продумывал.
Ветвление - в зависимости от значения х будет обрабатываться соотв. диапазон.
В Вашем случае например можно сделать 3 параллельных массива - но конечно нужно видеть всю задачу в целом.
Да, забыл - день недели:
[vba]
Code
MsgBox Weekday(Date, vbMonday)
[/vba]

http://support.microsoft.com/kb/88657


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеПривязываться к дню не рекомендую потому, что всегда будут случаи, что нужно что-то пересчитать за вчера или завтра sad
Но конечно это не мне решать.
5 кнопок - это 5 графических объектов, каждый запускает один макрос, но с разными параметрами - механику правда не продумывал.
Ветвление - в зависимости от значения х будет обрабатываться соотв. диапазон.
В Вашем случае например можно сделать 3 параллельных массива - но конечно нужно видеть всю задачу в целом.
Да, забыл - день недели:
[vba]
Code
MsgBox Weekday(Date, vbMonday)
[/vba]

http://support.microsoft.com/kb/88657

Автор - Hugo
Дата добавления - 21.11.2012 в 22:23
  • Страница 1 из 1
  • 1
Поиск:

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