Загрузка добавлений при программном программировании Excel
Я пытаюсь создать новый экземпляр Excel с помощью VBA, используя:
Set XlApp = New Excel.Application
Проблема в том, что этот новый экземпляр Excel не загружает все добавочные файлы, которые загружаются при открытии Excel в обычном режиме... Есть ли что-нибудь в объекте приложения Excel для загрузки во всех пользовательских добавлениях?
Я не пытаюсь загрузить определенную надстройку, а скорее создаю новое приложение Excel, как если бы пользователь открыл ее сам, поэтому я действительно ищу список всех пользовательских надстроек которые обычно загружаются при открытии Excel.
Ответы
Ответ 1
Я снова рассмотрел эту проблему, и в коллекции Application.Addins появились все добавления, перечисленные в меню Tools- > Addins, с логическим значением, указывающим, установлен или нет аддон. Итак, теперь мне кажется, что я работаю над всеми добавлениями, и если .Installed = true, то я устанавливаю. Устанавливается в False и обратно в True, и это похоже на правильную загрузку моих добавлений.
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
Ответ 2
Использование CreateObject("Excel.Application")
будет иметь тот же результат, что и использование New Excel.Application
, к сожалению.
Вам придется загружать добавочные файлы, которые вам понадобятся по пути и имени файла, используя метод Application.Addins.Add(string fileName)
.
Ответ 3
Я оставляю этот ответ здесь для всех, кто столкнулся с этой проблемой, но используя 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) { }
}
Ответ 4
Try:
Set XlApp = CreateObject("Excel.Application")