Excel이 프로그래밍 방식으로 인스턴스화 될 때 AddIn을로드합니다
-
03-07-2019 - |
문제
VBA를 사용하여 새로운 Excel 인스턴스를 만들려고합니다.
Set XlApp = New Excel.Application
문제는이 새로운 Excel 인스턴스가 Excel을 정상적으로 열 때로드하는 모든 addin을로드하지는 않는다는 것입니다. Excel Application 객체에 모든 사용자 지정 Addins에서로드 할 수있는 것이 있습니까?
나는 특정 애드 인을로드하려고하지 않고 오히려 새로운 Excel 응용 프로그램이 사용자가 자신을 열었던 것처럼 행동하게 만들므로 일반적으로로드하는 사용자가 선택한 모든 추가 기능 목록을 찾고 있습니다. Excel을 열 때.
해결책
이 문제를 다시 살펴 보았습니다. Application.Addins 컬렉션에는 AddIn이 설치되었는지 여부를 나타내는 부울 값이있는 도구-> addins 메뉴에 모든 addin이 나열된 것 같습니다. 그래서 지금 저에게 효과가있는 것은 모든 addins를 통과하는 것입니다.
Function ReloadXLAddins(TheXLApp As Excel.Application) As Boolean
Dim CurrAddin As Excel.AddIn
For Each CurrAddin In TheXLApp.AddIns
If CurrAddin.Installed Then
CurrAddin.Installed = False
CurrAddin.Installed = True
End If
Next CurrAddin
End Function
다른 팁
사용 CreateObject("Excel.Application")
사용과 동일한 결과를 얻을 수 있습니다 New Excel.Application
, 안타깝게도.
파일 경로 및 이름을 사용하여 개별적으로 필요한 addin을로드해야합니다. Application.Addins.Add(string fileName)
방법.
이 문제를 해결 한 다른 사람이지만 JavaScript를 사용하는 사람을 위해이 답을 남기고 있습니다.
약간의 배경 ... 우리 회사에는 JavaScript를 사용하여 Excel을 시작하고 스프레드 시트를 생성하는 타사 웹 앱이 있습니다. 또한 저장 버튼의 동작을 무시하는 Excel 애드 인이 있습니다. 추가 기능은 로컬 또는 온라인 문서 관리 시스템에 파일을 저장할 수있는 옵션을 제공합니다.
Windows 7 및 Office 2010으로 업그레이드 한 후 스프레드 시트 생성 웹 앱에 문제가 있음을 알았습니다. JavaScript가 Excel에서 스프레드 시트를 생성했을 때 갑자기 저장 버튼이 더 이상 작동하지 않습니다. 당신은 저장을 클릭하고 아무 일도 일어나지 않을 것입니다.
여기서 다른 답변을 사용하여 JavaScript로 솔루션을 구성 할 수있었습니다. 기본적으로 메모리에서 Excel 애플리케이션 객체를 작성한 다음 특정 추가 기능을 다시로드하여 저장 버튼 동작을 다시 가져옵니다. 다음은 단순화 된 수정 버전입니다.
function GenerateSpreadsheet()
{
var ExcelApp = getExcel();
if (ExcelApp == null){ return; }
reloadAddIn(ExcelApp);
ExcelApp.WorkBooks.Add;
ExcelApp.Visible = true;
sheet = ExcelApp.ActiveSheet;
var now = new Date();
ExcelApp.Cells(1,1).value = 'This is an auto-generated spreadsheet, created using Javascript and ActiveX in Internet Explorer';
ExcelApp.ActiveSheet.Columns("A:IV").EntireColumn.AutoFit;
ExcelApp.ActiveSheet.Rows("1:65536").EntireRow.AutoFit;
ExcelApp.ActiveSheet.Range("A1").Select;
ExcelApp = null;
}
function getExcel() {
try {
return new ActiveXObject("Excel.Application");
} catch(e) {
alert("Unable to open Excel. Please check your security settings.");
return null;
}
}
function reloadAddIn(ExcelApp) {
// Fixes problem with save button not working in Excel,
// by reloading the add-in responsible for the custom save button behavior
try {
ExcelApp.AddIns2.Item("AddInName").Installed = false;
ExcelApp.AddIns2.Item("AddInName").Installed = true;
} catch (e) { }
}
노력하다:
Set XlApp = CreateObject("Excel.Application")