Макрос изменяет свойства подключения - имена не меняет, поскольку возможно они нужны, для других целей...
[vba]
Код
Private Function RegExpReplace_(ByVal WhichString As String, _ ByVal Pattern As String, _ Optional ByVal ReplaceWith As String = " ", _ Optional ByVal IsGlobal As Boolean = True, _ Optional ByVal IsCaseSensitive As Boolean = True) As String 'Функция по регулярному выражению (маске) возвращает результат 'Declaring the object Dim objRegExp As Object 'Initializing an Instance Set objRegExp = CreateObject("vbscript.regexp") 'Setting the Properties objRegExp.Global = IsGlobal objRegExp.Pattern = Pattern objRegExp.IgnoreCase = Not IsCaseSensitive 'Execute the Replace Method RegExpReplace_ = objRegExp.Replace(WhichString, ReplaceWith) End Function Sub FileName() Dim wb As Workbook, con As Connections, c As Object, n$, d$, m Set wb = ThisWorkbook Set con = ThisWorkbook.Connections d = Format(Now, "ddmmyyyy") For Each c In con On Error GoTo 10 n = c.TextConnection.Connection n = RegExpReplace_(n, "[0-9]{8}", d) c.TextConnection.Connection = n 10 Next End Sub
[/vba]
а в модуль книги :[vba]
Код
Private Sub Workbook_Open() Call FileName End Sub
[/vba]
Дату берет на сегодня. Если нужно из ячейки: замените строку: [vba]
Код
d = Format(Now, "ddmmyyyy") на d = Format(Sheets(1).Range("k1"), "ddmmyyyy")
[/vba]
Макрописец, надеюсь теперь Вы понимаете зачем соблюдать правила форума и прикладывать примеры?
Вот:
Макрос изменяет свойства подключения - имена не меняет, поскольку возможно они нужны, для других целей...
[vba]
Код
Private Function RegExpReplace_(ByVal WhichString As String, _ ByVal Pattern As String, _ Optional ByVal ReplaceWith As String = " ", _ Optional ByVal IsGlobal As Boolean = True, _ Optional ByVal IsCaseSensitive As Boolean = True) As String 'Функция по регулярному выражению (маске) возвращает результат 'Declaring the object Dim objRegExp As Object 'Initializing an Instance Set objRegExp = CreateObject("vbscript.regexp") 'Setting the Properties objRegExp.Global = IsGlobal objRegExp.Pattern = Pattern objRegExp.IgnoreCase = Not IsCaseSensitive 'Execute the Replace Method RegExpReplace_ = objRegExp.Replace(WhichString, ReplaceWith) End Function Sub FileName() Dim wb As Workbook, con As Connections, c As Object, n$, d$, m Set wb = ThisWorkbook Set con = ThisWorkbook.Connections d = Format(Now, "ddmmyyyy") For Each c In con On Error GoTo 10 n = c.TextConnection.Connection n = RegExpReplace_(n, "[0-9]{8}", d) c.TextConnection.Connection = n 10 Next End Sub
[/vba]
а в модуль книги :[vba]
Код
Private Sub Workbook_Open() Call FileName End Sub
[/vba]
Дату берет на сегодня. Если нужно из ячейки: замените строку: [vba]
Код
d = Format(Now, "ddmmyyyy") на d = Format(Sheets(1).Range("k1"), "ddmmyyyy")
[/vba]
Макрописец, надеюсь теперь Вы понимаете зачем соблюдать правила форума и прикладывать примеры? SLAVICK
jurafenix, А как? Макрос может быть либо в модуле книги, либо в модуле листа, либо в личной книге макросов. Также замечу, что если хотите повесить макрос на кнопку, уберите Private. Т.е. Вместо [vba]
Код
Private Sub Workbook_Open() Call FileName End Sub
[/vba] напишите [vba]
Код
Sub Workbook_Open() Call FileName End Sub
[/vba]
jurafenix, А как? Макрос может быть либо в модуле книги, либо в модуле листа, либо в личной книге макросов. Также замечу, что если хотите повесить макрос на кнопку, уберите Private. Т.е. Вместо [vba]
jurafenix, Workbook_Open - это макрос, который будет выполнятся при открытии книги (в модуле книги справа для своего развития можете посмотреть другие события для Вашей книги). Call FileName запускает макрос FileName, т.е., при открытии книги у Вас произойдет запуск макроса FileName.
Макрописец, события книги, как и листа, на кнопки не вешают, для того они и события, чтобы выполняться не по требованию пользователя, а автоматически, и Private тоже лучше оставить.
обновление происходит автоматически, при открытии. Запускать самому ничего не нужно!
jurafenix, Workbook_Open - это макрос, который будет выполнятся при открытии книги (в модуле книги справа для своего развития можете посмотреть другие события для Вашей книги). Call FileName запускает макрос FileName, т.е., при открытии книги у Вас произойдет запуск макроса FileName.
Макрописец, события книги, как и листа, на кнопки не вешают, для того они и события, чтобы выполняться не по требованию пользователя, а автоматически, и Private тоже лучше оставить.
обновление происходит автоматически, при открытии. Запускать самому ничего не нужно!
В точку. Добавлю только, что макрос можно повесить и на кнопку, для этого нужно вставить кнопку и назначить ей макрос "FileName" Это если вы хотите поменять свойства подключения не открывая заново книгу.
обновление происходит автоматически, при открытии. Запускать самому ничего не нужно!
В точку. Добавлю только, что макрос можно повесить и на кнопку, для этого нужно вставить кнопку и назначить ей макрос "FileName" Это если вы хотите поменять свойства подключения не открывая заново книгу.
А можно ещё один вопрос? У меня все файлы кроме одного идут с именем, которое содержит текущую дату. А один файл содержит другую дату - как правило первое число квартала) Можно как-то сделать так, чтобы для выбора последнего файла макрос брал данные о дате из другой ячейки?) Источник данных, в котором требуется другая дата - "24022015".
А можно ещё один вопрос? У меня все файлы кроме одного идут с именем, которое содержит текущую дату. А один файл содержит другую дату - как правило первое число квартала) Можно как-то сделать так, чтобы для выбора последнего файла макрос брал данные о дате из другой ячейки?) Источник данных, в котором требуется другая дата - "24022015".jurafenix
код данной строчки и приведен на последней строке, в приведенной вами цитате. код ошибки 438 [moder]Не нужно цитировать весь пост целиком, удалила.[/moder]
код данной строчки и приведен на последней строке, в приведенной вами цитате. код ошибки 438 [moder]Не нужно цитировать весь пост целиком, удалила.[/moder]jurafenix
Сообщение отредактировал Manyasha - Среда, 01.07.2015, 15:21
Просто если имя другое - имхо быстрее всё же ручками.
а вот и неправильное мнение. имя данного конкретного файла неизменно на протяжении квартала. Отчёт строится один раз в неделю. В папке хранятся все еженедельные источники. На данный момент их там больше 60. Искать конкретный файл вручную каждую неделю полюбому дольше, чем это сделает эксель. Но я на это согласен, если код будет хоть так работать)))) Но в идеале, если возможно, было бы автоматизировать весь процесс)
Просто если имя другое - имхо быстрее всё же ручками.
а вот и неправильное мнение. имя данного конкретного файла неизменно на протяжении квартала. Отчёт строится один раз в неделю. В папке хранятся все еженедельные источники. На данный момент их там больше 60. Искать конкретный файл вручную каждую неделю полюбому дольше, чем это сделает эксель. Но я на это согласен, если код будет хоть так работать)))) Но в идеале, если возможно, было бы автоматизировать весь процесс)