Выбор места запуска кода по значению в ячейке
Leviven
Дата: Вторник, 25.08.2020, 11:04 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
Уважаемые форумчане, добрый день! Написал макрос по обновлению файлов с данными. Он состоит из одинаковых модулей-дней - их 365. Проблема в том, что не нужно запускать обновление с 1 января по 31 декабря. Это может быть произвольная дата, которая выбрана в окошке "Следующая дата". Как запускать код обновления с этой даты? Например, выбрана следующая дата - 2 января. Код запустится с блока 2 января. Выбрано 15 июня - с 15 июня.
Уважаемые форумчане, добрый день! Написал макрос по обновлению файлов с данными. Он состоит из одинаковых модулей-дней - их 365. Проблема в том, что не нужно запускать обновление с 1 января по 31 декабря. Это может быть произвольная дата, которая выбрана в окошке "Следующая дата". Как запускать код обновления с этой даты? Например, выбрана следующая дата - 2 января. Код запустится с блока 2 января. Выбрано 15 июня - с 15 июня. Leviven
Ответить
Сообщение Уважаемые форумчане, добрый день! Написал макрос по обновлению файлов с данными. Он состоит из одинаковых модулей-дней - их 365. Проблема в том, что не нужно запускать обновление с 1 января по 31 декабря. Это может быть произвольная дата, которая выбрана в окошке "Следующая дата". Как запускать код обновления с этой даты? Например, выбрана следующая дата - 2 января. Код запустится с блока 2 января. Выбрано 15 июня - с 15 июня. Автор - Leviven Дата добавления - 25.08.2020 в 11:04
прохожий2019
Дата: Вторник, 25.08.2020, 17:51 |
Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1298
Репутация:
327
±
Замечаний:
0% ±
365 Beta Channel
а просто циклом нельзя?[vba]Код
Dim d, y d ' некая дата y = Year(d) Do iPath = "D:\METOD\ÄÂÈÆÅÍÈÅ\2020\Data\" & Format(d, "MMMM") & "\" iFileName = Dir(iPath & Format(d, "DD_M") & ".xlsm") ' остальной код d = d + 1 Loop While Year(d) = y
[/vba]
а просто циклом нельзя?[vba]Код
Dim d, y d ' некая дата y = Year(d) Do iPath = "D:\METOD\ÄÂÈÆÅÍÈÅ\2020\Data\" & Format(d, "MMMM") & "\" iFileName = Dir(iPath & Format(d, "DD_M") & ".xlsm") ' остальной код d = d + 1 Loop While Year(d) = y
[/vba] прохожий2019
Ответить
Сообщение а просто циклом нельзя?[vba]Код
Dim d, y d ' некая дата y = Year(d) Do iPath = "D:\METOD\ÄÂÈÆÅÍÈÅ\2020\Data\" & Format(d, "MMMM") & "\" iFileName = Dir(iPath & Format(d, "DD_M") & ".xlsm") ' остальной код d = d + 1 Loop While Year(d) = y
[/vba] Автор - прохожий2019 Дата добавления - 25.08.2020 в 17:51
Leviven
Дата: Среда, 26.08.2020, 09:01 |
Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
прохожий2019, в таблице нет года. И значение dd_m - это не формат даты, а сцепка в ячейке Y2 выбранных значений из ячеек V2 и W2. Скажем так, аналог даты, выбираемый пользователем. Если бы можно было задать ячейке Y2 переменную, а в коде поставить "якори", к которым код обращается, но не знаю как. К примеру, в батнике это легко можно было бы организовать по принципу: [vba]Код
@echo off Set m = Y2 If m = 01_1 Goto 02_1a Else Goto 01_1a If m = 02_1 Goto 03_1a Else Goto 01_1a If m = 03_1 Goto 04_1a Else Goto 01_1a Rem и так до конца - Goto 12_31a Rem продолжение кода Goto: 01_1a Start "" "D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\02_01.xlsm" Goto: 02_1a Start "" "D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\03_01.xlsm" Rem и так до конца кода - Goto: 12_31a Exit/b
[/vba] где Y2 - значение ячейки Y2 в файле Obnova.xlsm. Но как это реализовать в VBA? Вот в этом: [vba]Код
Sub upds() 'начало обновления со 2-го января Dim iPath$, iFileName$ '2 января iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\" iFileName = Dir(iPath & "02_1.xlsm") If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open ("D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\02_1.xlsm") Application.Visible = False Application.Run "02_1.xlsm!Executive.cont_02_1": Workbooks("02_1.xlsm").Close True Else Call Slogan Range("O11").Interior.Color = 13395711 Application.Visible = True Exit Sub End If '3 января iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\" iFileName = Dir(iPath & "03_1.xlsm") If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open ("D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\03_1.xlsm") Application.Visible = False Application.Run "03_1.xlsm!Executive.cont_03_1": Workbooks("03_1.xlsm").Close True Application.Visible = True Else Call Slogan Range("O11").Interior.Color = 13395711 Application.Visible = True Exit Sub End If 'далее такие же коды всех дней в году 'затем окончание обновления Application.Visible = True End Sub
[/vba] Если можно, в моем вложенном примере - файле Obnova.xlsm
прохожий2019, в таблице нет года. И значение dd_m - это не формат даты, а сцепка в ячейке Y2 выбранных значений из ячеек V2 и W2. Скажем так, аналог даты, выбираемый пользователем. Если бы можно было задать ячейке Y2 переменную, а в коде поставить "якори", к которым код обращается, но не знаю как. К примеру, в батнике это легко можно было бы организовать по принципу: [vba]Код
@echo off Set m = Y2 If m = 01_1 Goto 02_1a Else Goto 01_1a If m = 02_1 Goto 03_1a Else Goto 01_1a If m = 03_1 Goto 04_1a Else Goto 01_1a Rem и так до конца - Goto 12_31a Rem продолжение кода Goto: 01_1a Start "" "D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\02_01.xlsm" Goto: 02_1a Start "" "D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\03_01.xlsm" Rem и так до конца кода - Goto: 12_31a Exit/b
[/vba] где Y2 - значение ячейки Y2 в файле Obnova.xlsm. Но как это реализовать в VBA? Вот в этом: [vba]Код
Sub upds() 'начало обновления со 2-го января Dim iPath$, iFileName$ '2 января iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\" iFileName = Dir(iPath & "02_1.xlsm") If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open ("D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\02_1.xlsm") Application.Visible = False Application.Run "02_1.xlsm!Executive.cont_02_1": Workbooks("02_1.xlsm").Close True Else Call Slogan Range("O11").Interior.Color = 13395711 Application.Visible = True Exit Sub End If '3 января iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\" iFileName = Dir(iPath & "03_1.xlsm") If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open ("D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\03_1.xlsm") Application.Visible = False Application.Run "03_1.xlsm!Executive.cont_03_1": Workbooks("03_1.xlsm").Close True Application.Visible = True Else Call Slogan Range("O11").Interior.Color = 13395711 Application.Visible = True Exit Sub End If 'далее такие же коды всех дней в году 'затем окончание обновления Application.Visible = True End Sub
[/vba] Если можно, в моем вложенном примере - файле Obnova.xlsm Leviven
Ответить
Сообщение прохожий2019, в таблице нет года. И значение dd_m - это не формат даты, а сцепка в ячейке Y2 выбранных значений из ячеек V2 и W2. Скажем так, аналог даты, выбираемый пользователем. Если бы можно было задать ячейке Y2 переменную, а в коде поставить "якори", к которым код обращается, но не знаю как. К примеру, в батнике это легко можно было бы организовать по принципу: [vba]Код
@echo off Set m = Y2 If m = 01_1 Goto 02_1a Else Goto 01_1a If m = 02_1 Goto 03_1a Else Goto 01_1a If m = 03_1 Goto 04_1a Else Goto 01_1a Rem и так до конца - Goto 12_31a Rem продолжение кода Goto: 01_1a Start "" "D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\02_01.xlsm" Goto: 02_1a Start "" "D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\03_01.xlsm" Rem и так до конца кода - Goto: 12_31a Exit/b
[/vba] где Y2 - значение ячейки Y2 в файле Obnova.xlsm. Но как это реализовать в VBA? Вот в этом: [vba]Код
Sub upds() 'начало обновления со 2-го января Dim iPath$, iFileName$ '2 января iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\" iFileName = Dir(iPath & "02_1.xlsm") If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open ("D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\02_1.xlsm") Application.Visible = False Application.Run "02_1.xlsm!Executive.cont_02_1": Workbooks("02_1.xlsm").Close True Else Call Slogan Range("O11").Interior.Color = 13395711 Application.Visible = True Exit Sub End If '3 января iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\" iFileName = Dir(iPath & "03_1.xlsm") If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open ("D:\METOD\ДВИЖЕНИЕ\2020\Data\Январь\03_1.xlsm") Application.Visible = False Application.Run "03_1.xlsm!Executive.cont_03_1": Workbooks("03_1.xlsm").Close True Application.Visible = True Else Call Slogan Range("O11").Interior.Color = 13395711 Application.Visible = True Exit Sub End If 'далее такие же коды всех дней в году 'затем окончание обновления Application.Visible = True End Sub
[/vba] Если можно, в моем вложенном примере - файле Obnova.xlsm Автор - Leviven Дата добавления - 26.08.2020 в 09:01
Nic70y
Дата: Среда, 26.08.2020, 09:34 |
Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 9005
Репутация:
2369
±
Замечаний:
0% ±
Excel 2010
как-то так попробуйте [vba]Код
u_1 = Range("v2").Value 'день u_1_1 = Right(0 & u_1, 2) u_2 = Range("w2").Value 'месяц u_2_1 = StrConv(u_2) u_3 = Range("x2").Value 'месяц (2) u_4 = u_1_1 & "_" & u_3 'день_месяц iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\" & u_2_1 & "\" iFileName = Dir(iPath & u_4 & ".xlsm")
[/vba]далее аналогично
как-то так попробуйте [vba]Код
u_1 = Range("v2").Value 'день u_1_1 = Right(0 & u_1, 2) u_2 = Range("w2").Value 'месяц u_2_1 = StrConv(u_2) u_3 = Range("x2").Value 'месяц (2) u_4 = u_1_1 & "_" & u_3 'день_месяц iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\" & u_2_1 & "\" iFileName = Dir(iPath & u_4 & ".xlsm")
[/vba]далее аналогично Nic70y
ЮMoney 41001841029809
Ответить
Сообщение как-то так попробуйте [vba]Код
u_1 = Range("v2").Value 'день u_1_1 = Right(0 & u_1, 2) u_2 = Range("w2").Value 'месяц u_2_1 = StrConv(u_2) u_3 = Range("x2").Value 'месяц (2) u_4 = u_1_1 & "_" & u_3 'день_месяц iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\" & u_2_1 & "\" iFileName = Dir(iPath & u_4 & ".xlsm")
[/vba]далее аналогично Автор - Nic70y Дата добавления - 26.08.2020 в 09:34
Leviven
Дата: Среда, 26.08.2020, 11:51 |
Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
Nic70y , Немного переделал и вставил Ваш код в свой: [vba]Код
Sub PRB() k = Range("Y2").Value 'название файла iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Digest\" iFileName = Dir(iPath & k & ".xlsm") If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open (iFileName) 'Application.Visible = False Application.Run "iFileName!Executive.cont_ & k &": Workbooks(iFileName).Close True Else MsgBox "ЗАВЕРШЕНО" Range("O11").Interior.Color = 13395711 ' Application.Visible = True Exit Sub End If End Sub
[/vba] Книги замечательно открываются по выбору в ячейке Y2. Но вот как дело заходит до запуска макроса в книге: [vba]Код
Application.Run "iFileName!Executive.cont_ & k &": Workbooks(iFileName).Close True
[/vba] Компилятор ругается на часть кода: [vba]Код
Application.Run "iFileName!Executive.cont_ & k &"
[/vba] Пишет: Не удалось найти "iFileName.htm" Проверьте правильность ввода имени и расположение файла При этом если вставить жестко заданные имя файла и макроса: [vba]Код
Application.Run "26_8.xlsm!Executive.cont_26_8": Workbooks("26_8.xlsm").Close True
[/vba] то все работает. Вопрос: как запустить макрос из модуля Executive с учетом выбора его имени и имени файла?
Nic70y , Немного переделал и вставил Ваш код в свой: [vba]Код
Sub PRB() k = Range("Y2").Value 'название файла iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Digest\" iFileName = Dir(iPath & k & ".xlsm") If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open (iFileName) 'Application.Visible = False Application.Run "iFileName!Executive.cont_ & k &": Workbooks(iFileName).Close True Else MsgBox "ЗАВЕРШЕНО" Range("O11").Interior.Color = 13395711 ' Application.Visible = True Exit Sub End If End Sub
[/vba] Книги замечательно открываются по выбору в ячейке Y2. Но вот как дело заходит до запуска макроса в книге: [vba]Код
Application.Run "iFileName!Executive.cont_ & k &": Workbooks(iFileName).Close True
[/vba] Компилятор ругается на часть кода: [vba]Код
Application.Run "iFileName!Executive.cont_ & k &"
[/vba] Пишет: Не удалось найти "iFileName.htm" Проверьте правильность ввода имени и расположение файла При этом если вставить жестко заданные имя файла и макроса: [vba]Код
Application.Run "26_8.xlsm!Executive.cont_26_8": Workbooks("26_8.xlsm").Close True
[/vba] то все работает. Вопрос: как запустить макрос из модуля Executive с учетом выбора его имени и имени файла?Leviven
Ответить
Сообщение Nic70y , Немного переделал и вставил Ваш код в свой: [vba]Код
Sub PRB() k = Range("Y2").Value 'название файла iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Digest\" iFileName = Dir(iPath & k & ".xlsm") If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open (iFileName) 'Application.Visible = False Application.Run "iFileName!Executive.cont_ & k &": Workbooks(iFileName).Close True Else MsgBox "ЗАВЕРШЕНО" Range("O11").Interior.Color = 13395711 ' Application.Visible = True Exit Sub End If End Sub
[/vba] Книги замечательно открываются по выбору в ячейке Y2. Но вот как дело заходит до запуска макроса в книге: [vba]Код
Application.Run "iFileName!Executive.cont_ & k &": Workbooks(iFileName).Close True
[/vba] Компилятор ругается на часть кода: [vba]Код
Application.Run "iFileName!Executive.cont_ & k &"
[/vba] Пишет: Не удалось найти "iFileName.htm" Проверьте правильность ввода имени и расположение файла При этом если вставить жестко заданные имя файла и макроса: [vba]Код
Application.Run "26_8.xlsm!Executive.cont_26_8": Workbooks("26_8.xlsm").Close True
[/vba] то все работает. Вопрос: как запустить макрос из модуля Executive с учетом выбора его имени и имени файла?Автор - Leviven Дата добавления - 26.08.2020 в 11:51
Nic70y
Дата: Среда, 26.08.2020, 11:54 |
Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 9005
Репутация:
2369
±
Замечаний:
0% ±
Excel 2010
Application.Run "iFileName!Executive.cont_ & k &"
[vba]Код
Application.Run "iFileName!Executive.cont_" & k &"
[/vba]кавычка пропущена
Application.Run "iFileName!Executive.cont_ & k &"
[vba]Код
Application.Run "iFileName!Executive.cont_" & k &"
[/vba]кавычка пропущенаNic70y
ЮMoney 41001841029809
Сообщение отредактировал Nic70y - Среда, 26.08.2020, 11:55
Ответить
Сообщение Application.Run "iFileName!Executive.cont_ & k &"
[vba]Код
Application.Run "iFileName!Executive.cont_" & k &"
[/vba]кавычка пропущенаАвтор - Nic70y Дата добавления - 26.08.2020 в 11:54
Leviven
Дата: Среда, 26.08.2020, 12:01 |
Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
Nic70y , Пробовал так. Тогда компилятор сам ставит кавычку в конце строки и выделяет ее. Пишет тоже самое: [vba]Код
Application.Run "iFileName!Executive.cont_" & k & ": Workbooks(iFileName).Close True"
[/vba]
Nic70y , Пробовал так. Тогда компилятор сам ставит кавычку в конце строки и выделяет ее. Пишет тоже самое: [vba]Код
Application.Run "iFileName!Executive.cont_" & k & ": Workbooks(iFileName).Close True"
[/vba]Leviven
Ответить
Сообщение Nic70y , Пробовал так. Тогда компилятор сам ставит кавычку в конце строки и выделяет ее. Пишет тоже самое: [vba]Код
Application.Run "iFileName!Executive.cont_" & k & ": Workbooks(iFileName).Close True"
[/vba]Автор - Leviven Дата добавления - 26.08.2020 в 12:01
Nic70y
Дата: Среда, 26.08.2020, 12:27 |
Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 9005
Репутация:
2369
±
Замечаний:
0% ±
Excel 2010
а, ну да сразу не обратил внимания[vba]Код
Application.Run "iFileName!Executive.cont_" & k : Workbooks(iFileName).Close True
[/vba]
а, ну да сразу не обратил внимания[vba]Код
Application.Run "iFileName!Executive.cont_" & k : Workbooks(iFileName).Close True
[/vba] Nic70y
ЮMoney 41001841029809
Ответить
Сообщение а, ну да сразу не обратил внимания[vba]Код
Application.Run "iFileName!Executive.cont_" & k : Workbooks(iFileName).Close True
[/vba] Автор - Nic70y Дата добавления - 26.08.2020 в 12:27
Leviven
Дата: Пятница, 28.08.2020, 08:39 |
Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
Nic70y , не работает. И даже так почему-то не работает:[vba]Код
Application.Run " & k & .xlsm!Executive.cont_ & k": Workbooks(" & k & .xlsm").Close True
[/vba]
Nic70y , не работает. И даже так почему-то не работает:[vba]Код
Application.Run " & k & .xlsm!Executive.cont_ & k": Workbooks(" & k & .xlsm").Close True
[/vba]Leviven
Ответить
Сообщение Nic70y , не работает. И даже так почему-то не работает:[vba]Код
Application.Run " & k & .xlsm!Executive.cont_ & k": Workbooks(" & k & .xlsm").Close True
[/vba]Автор - Leviven Дата добавления - 28.08.2020 в 08:39
Nic70y
Дата: Пятница, 28.08.2020, 10:44 |
Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 9005
Репутация:
2369
±
Замечаний:
0% ±
Excel 2010
И даже так почему-то не работает
ну так точно работать не будет. в кавычках должен быть текст, переменная в кавычках становить просто текстом. сложновато без файлов... [vba]Код
Workbooks(k & ".xlsm")
[/vba]
И даже так почему-то не работает
ну так точно работать не будет. в кавычках должен быть текст, переменная в кавычках становить просто текстом. сложновато без файлов... [vba]Код
Workbooks(k & ".xlsm")
[/vba]Nic70y
ЮMoney 41001841029809
Ответить
Сообщение И даже так почему-то не работает
ну так точно работать не будет. в кавычках должен быть текст, переменная в кавычках становить просто текстом. сложновато без файлов... [vba]Код
Workbooks(k & ".xlsm")
[/vba]Автор - Nic70y Дата добавления - 28.08.2020 в 10:44
Leviven
Дата: Пятница, 28.08.2020, 11:36 |
Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
Nic70y , Вот этот код не отрабатывает. Запускает вторую часть макроса:[vba]Код
Sub PRB() k = Range("Y2").Value iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Digest" iFileName = Dir(iPath & k & ".xlsm") If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open (iFileName) Application.Run " & k & .xlsm!Executive.cont_ & k": Workbooks(" & k & .xlsm").Close True Else MsgBox "ЗАВЕРШЕНО" Range("O11").Interior.Color = 13395711 Exit Sub End If End Sub
[/vba] А этот работает только, если напрямую указать макрос (без выбора). Пробовал по-разному: закомментированные строки - варианты проб: [vba]Код
' Sub zp() k = Range("Y2").Value Workbooks.Open ("D:\METOD\ДВИЖЕНИЕ\2020\Data\Digest\" & [Y2] & ".xlsm") Application.Run "27_9.xlsm!Executive.cont_27_9": Workbooks("27_9.xlsm").Close True 'ЭТИ СТРОКИ НЕ РАБОТАЮТ ' СТРОКА - k = Range("Y2").Value ТОЖЕ НЕ РАБОТАЕТ 'Application.Run " & k & .xlsm!Executive.cont_" & k: Workbooks(" & k & ".xlsm).Close True ' ТАК ТОЖЕ НЕ РАБОТАЕТ 'Application.Run "[Y2] & .xlsm!Executive.cont_ & [Y2]": Workbooks([Y2] & ".xlsm").Close True End Sub
[/vba] Во вложении оба файла. Запускать с Obnova.xls.
Nic70y , Вот этот код не отрабатывает. Запускает вторую часть макроса:[vba]Код
Sub PRB() k = Range("Y2").Value iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Digest" iFileName = Dir(iPath & k & ".xlsm") If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open (iFileName) Application.Run " & k & .xlsm!Executive.cont_ & k": Workbooks(" & k & .xlsm").Close True Else MsgBox "ЗАВЕРШЕНО" Range("O11").Interior.Color = 13395711 Exit Sub End If End Sub
[/vba] А этот работает только, если напрямую указать макрос (без выбора). Пробовал по-разному: закомментированные строки - варианты проб: [vba]Код
' Sub zp() k = Range("Y2").Value Workbooks.Open ("D:\METOD\ДВИЖЕНИЕ\2020\Data\Digest\" & [Y2] & ".xlsm") Application.Run "27_9.xlsm!Executive.cont_27_9": Workbooks("27_9.xlsm").Close True 'ЭТИ СТРОКИ НЕ РАБОТАЮТ ' СТРОКА - k = Range("Y2").Value ТОЖЕ НЕ РАБОТАЕТ 'Application.Run " & k & .xlsm!Executive.cont_" & k: Workbooks(" & k & ".xlsm).Close True ' ТАК ТОЖЕ НЕ РАБОТАЕТ 'Application.Run "[Y2] & .xlsm!Executive.cont_ & [Y2]": Workbooks([Y2] & ".xlsm").Close True End Sub
[/vba] Во вложении оба файла. Запускать с Obnova.xls.Leviven
Ответить
Сообщение Nic70y , Вот этот код не отрабатывает. Запускает вторую часть макроса:[vba]Код
Sub PRB() k = Range("Y2").Value iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Digest" iFileName = Dir(iPath & k & ".xlsm") If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open (iFileName) Application.Run " & k & .xlsm!Executive.cont_ & k": Workbooks(" & k & .xlsm").Close True Else MsgBox "ЗАВЕРШЕНО" Range("O11").Interior.Color = 13395711 Exit Sub End If End Sub
[/vba] А этот работает только, если напрямую указать макрос (без выбора). Пробовал по-разному: закомментированные строки - варианты проб: [vba]Код
' Sub zp() k = Range("Y2").Value Workbooks.Open ("D:\METOD\ДВИЖЕНИЕ\2020\Data\Digest\" & [Y2] & ".xlsm") Application.Run "27_9.xlsm!Executive.cont_27_9": Workbooks("27_9.xlsm").Close True 'ЭТИ СТРОКИ НЕ РАБОТАЮТ ' СТРОКА - k = Range("Y2").Value ТОЖЕ НЕ РАБОТАЕТ 'Application.Run " & k & .xlsm!Executive.cont_" & k: Workbooks(" & k & ".xlsm).Close True ' ТАК ТОЖЕ НЕ РАБОТАЕТ 'Application.Run "[Y2] & .xlsm!Executive.cont_ & [Y2]": Workbooks([Y2] & ".xlsm").Close True End Sub
[/vba] Во вложении оба файла. Запускать с Obnova.xls.Автор - Leviven Дата добавления - 28.08.2020 в 11:36
Nic70y
Дата: Суббота, 29.08.2020, 11:17 |
Сообщение № 12
Группа: Друзья
Ранг: Экселист
Сообщений: 9005
Репутация:
2369
±
Замечаний:
0% ±
Excel 2010
переменная в кавычках становить просто текстом
[vba]Код
Application.Run k & ".xlsm!Executive.cont_" & k : Workbooks(k & ".xlsm").Close True
[/vba] проверил, работает [vba]Код
'iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Digest" iPath = ThisWorkbook.Path 'iFileName = Dir(iPath & k & ".xlsm") iFileName = iPath & "\" & k & ".xlsm" If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open (iFileName) 'Application.Visible = False Application.Run k & ".xlsm!Executive.cont_" & k: Workbooks(k & ".xlsm").Close True
[/vba]
переменная в кавычках становить просто текстом
[vba]Код
Application.Run k & ".xlsm!Executive.cont_" & k : Workbooks(k & ".xlsm").Close True
[/vba] проверил, работает [vba]Код
'iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Digest" iPath = ThisWorkbook.Path 'iFileName = Dir(iPath & k & ".xlsm") iFileName = iPath & "\" & k & ".xlsm" If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open (iFileName) 'Application.Visible = False Application.Run k & ".xlsm!Executive.cont_" & k: Workbooks(k & ".xlsm").Close True
[/vba]Nic70y
ЮMoney 41001841029809
Сообщение отредактировал Nic70y - Суббота, 29.08.2020, 11:29
Ответить
Сообщение переменная в кавычках становить просто текстом
[vba]Код
Application.Run k & ".xlsm!Executive.cont_" & k : Workbooks(k & ".xlsm").Close True
[/vba] проверил, работает [vba]Код
'iPath = "D:\METOD\ДВИЖЕНИЕ\2020\Data\Digest" iPath = ThisWorkbook.Path 'iFileName = Dir(iPath & k & ".xlsm") iFileName = iPath & "\" & k & ".xlsm" If iFileName <> "" Then Application.ScreenUpdating = False Workbooks.Open (iFileName) 'Application.Visible = False Application.Run k & ".xlsm!Executive.cont_" & k: Workbooks(k & ".xlsm").Close True
[/vba]Автор - Nic70y Дата добавления - 29.08.2020 в 11:17
Leviven
Дата: Понедельник, 31.08.2020, 13:58 |
Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
Nic70y , Работает! Спасибо огромное!
Nic70y , Работает! Спасибо огромное!Leviven
Ответить
Сообщение Nic70y , Работает! Спасибо огромное!Автор - Leviven Дата добавления - 31.08.2020 в 13:58