Как сделать кнопку макроса на листе «сохраненным как» из файла, но без ссылки на этот старый файл? - PullRequest
0 голосов
/ 25 июня 2019

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

Рабочая таблица шаблона содержит макрос, который может сортировать первый столбец (да, сохраненный под этой таблицей) и отображать только те строки, которые имеют «Да» в столбце А, и кнопку макроса, а макрос назначен кнопке. ,

В новом сохраненном файле кнопка макроса всегда связана с макросом в старом файле, поэтому каждый раз, когда я нажимаю кнопку, макрос открывает старый файл. Другими словами, макрос - это ссылка на макрос в старом файле, а не макрос в активной рабочей таблице. Если старый файл не открыт, кнопка макроса попытается открыть этот старый файл.

Как сделать так, чтобы кнопка макроса автоматически связывалась с макросом на листе?

Код очень прост, и я заставил его работать с текущей рабочей книгой и рабочим листом:

Sub SortRefresh()
    ActiveWorkbook.ActiveSheet.Range("$A:$A").AutoFilter Field:=1, Criteria1:="Yes"
End Sub

Ответы [ 3 ]

0 голосов
/ 25 июня 2019

Вам нужно будет экспортировать модуль с кодом в новую рабочую книгу:

Dim strFolder As String, strTempFile As String
strFolder = Workbooks("Book1.xlsm").Path
strFolder = strFolder & "\"
strTempFile = strFolder & "~tmpexport.bas"
Workbooks("Book1.xlsm").VBProject.VBComponents("Module1").Export strTempFile
Workbooks("Book2.xlsm").VBProject.VBComponents.Import strTempFile
Kill strTempFile
0 голосов
/ 26 июня 2019

Привет, я нашел причину.

Добавленная кнопка должна быть кнопкой «Элементы управления ActiveX» вместо кнопки «Элементы управления формой».Элементы управления ActiveX имеют свой макрос, который не «связан с», а встроен.

Щелкните правой кнопкой мыши кнопку «Добавить элементы управления ActiveX», затем нажмите «Объект CommandButton» -> «Изменить», введите ActiveWorkbook.ActiveSheet.Range («$ A: $ A»). Поле автофильтра: = 1, критерии1:= "Да"

После сохранения нового файла нажатие на кнопку элементов управления ActiveX не приведет к открытию старого файла.

0 голосов
/ 25 июня 2019

Я надеюсь, что вы копируете книгу с кодом ниже

ActiveWorkbook.SaveCopyAs "E:\XXXX.XLSM"

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

...