ExcelWorkSheet
및 복사 한 시트 CodeModule
을 복사하는 데 문제가 있습니다. 설명해 드리죠 :새 CodeModule을 사용하여 템플릿에서 ExcelWorkSheet를 복사하는 방법
시나리오 : 내가 엑셀 매크로의 (.xlsm)로 파일을 가지고 파일을 엑셀 나는 이것이 다른 만들 수있는 템플릿으로 파일을 엑셀 사용 (데이터는 새 파일에 복사됩니다).
그래서 먼저 데이터베이스에서 일부 데이터를 가져 와서 Excel 템플릿 (.xlsm
) 파일을 엽니 다. 특정 시점에서
var newSheet = workbook.Worksheets.Add("someName", templateSheet);
을 템플릿 시트 ('VBA'을 포함 복사 한 후 코드뿐만 아니라 복제하고 싶습니다), 나는 문제가 발생했습니다.
새로 만든 시트의 'CodeModule'은 이름과 참조로 템플릿의 것과 동일합니다.
즉, 모든 속성 값은 동일하고 workbook.VbaProject.Modules
에는 템플릿 파일의 초기 코드 모듈 만 포함되고 새 파일에는 newSheet
의 새 코드 모듈이 포함되지 않습니다.
더 나쁜,이 같은 새로운 CodeModule
을 결합하려는 경우 :
workbook.VbaProject.Modules.AddModule("test");
newSheet.CodeModule.Name = "test";
모두 newSheet.CodeModule
및 templateSheet.CodeModule
이 null
으로 설정됩니다 (물론 Nothing
실제로, 나는 VB.Net을 사용하고 있기 때문에).
그래서 질문 :이 버그입니까? 아니면 여기서 뭔가 잘못하고 있습니까? 더 나은 점은이 시나리오를 수행하는 방법을 안내 할 수 있습니까?
당신이 최신이라고 말할 때 나는 그것을 4라고 가정한다.0 (베타)? 따라와 주셔서 감사합니다. – Ernie
@Ernie : 사용 가능한 최신 바이너리인지 확실하지 않습니다. 나는 소스를 쥐고 그것을 컴파일했다. (베타 버전에 아직 포함되지 않았다는 인상을 받았기 때문에) ... 그리고 아무런 문제없이 컴파일되었다. 프로젝트를 열고 빌드하십시오. – Stefan