문제

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")

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top