Я создал проект VBA в Excel и в рамках указанного проекта является модулем, который записывает код в другой модуль. Я, в конечном счете, защитил паролем проект, чтобы скрыть код (не понимая сразу, что это создаст некоторые довольно очевидные проблемы).Запись процедуры/функции VBA в .xlam addin
Когда пользователь взаимодействует с файлом, модуль пытается запустить код, но обнаруживает ошибку (проект, защищенный паролем, не может изменить себя!) У всех нас есть свои моменты: p).
Таким образом, я понял, «почему бы не сделать отредактированную часть незащищенной», оставив остальную часть файла заблокированной. Поэтому я решил, что создам незащищенную надстройку .xlam, а затем напишу код на эту часть. Однако мне сложно понять, как это сделать. Ниже приведен код, который я написал, что пишет код в другой модуль:
Public Sub errorWrite()
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim s As String
Dim d As String
Dim lineNumb As Long
With ThisWorkbook.VBProject.VBComponents.item("NewModule")
.CodeModule.InsertLines j, "Public sub newModule()"
j = j + 1
With ThisWorkbook.VBProject.VBComponents.item("NewModule")
.CodeModule.InsertLines j, "(my code etc..)"
j = j + 1
With ThisWorkbook.VBProject.VBComponents.item("NewModule")
.CodeModule.InsertLines j, "end sub"
end sub
В то время как я нашел некоторую информацию о стеке и в других местах в отношении .xlam надстроек (Updating an xlam add-in using VBA), например, я бы просто держать его как можно проще. Предложения и подсказки очень ценятся. Благодаря!
При использовании выше, как вы предложили, я получаю сообщение об ошибке выполнения «9», индекс вне диапазона. Согласно excel, добавлен аддон, я также использовал уникальное имя аддона как с расширением .xlam, так и без него: – Singularity20XX