Приложение Excel не закрывается из MS-Project VBA

Следующий подраздел не закрывает приложение Excel. Он остается в диспетчере задач. Это довольно странно, потому что я использую тот же метод, чтобы открывать и закрывать книги в других модулях, и это работает. Этот код находится в MS-Project.

Sub updateModules() 'TESTE INICIAL PARA SABER SE AS INFORMAÇÕES BÁSICAS ESTÃO INSERIDAS If sanity_test = 0 Then Exit Sub End If '--------------------------------//-------------------------------- Dim xlapp As Object Dim xlbook As Object Dim sHostName As String ' Get Host Name / Get Computer Name sHostName = Environ$("username") Set xlapp = CreateObject("Excel.Application") 'xlapp.Visible = True Set xlbook = xlapp.Workbooks.Open(modulesVBA_loc) 'ENCONTRAR CÓDIGO NA TABELA DO FICHEIRO MASTER Dim rng_modules As Range Dim rng_usernames As Range Dim username As Range Dim atualizado As Range Dim lastcol As Long With xlbook.Worksheets(1) 'Última coluna lastcol = .Cells(2, .Columns.Count).End(xlToLeft).Column lastcol_letter = Functions_mod.GetColumnLetter(lastcol) End With 'Range com os usernames Set rng_usernames = xlbook.Worksheets(1).Range("E2:" & lastcol_letter & "2") 'Encontra o username correto Set username = rng_usernames.Find(sHostName) Set rng_modules = xlbook.Worksheets(1).Range("A3") 'Primeiro módulo Do While rng_modules.Value <> Empty linha = rng_modules.Row Set atualizado = username.Offset(linha - 2) If atualizado.Value = "Not Updated" Then With ThisProject.VBProject .VBComponents.Remove .VBComponents("CoreTeam_mod") .VBComponents.Import supportDoc_loc & "Project\Próxima Actualização - Apenas PP pode modificar\VBA\Modules\CoreTeam_mod.bas" End With atualizado.Value = "Updated" End If Set rng_modules = rng_modules.Offset(1) Loop xlbook.Saved = True xlbook.Close End Sub 

EDIT : Кажется, что ошибка исходит от функции, которая получает букву столбца. Я заменил lastcol_letter буквой «G», и код работает нормально и должным образом закрывает приложение Excel. Как написать функцию вместо этого?

 Function GetColumnLetter(colNum As Long) As String Dim vArr vArr = Split(Cells(1, colNum).Address(True, False), "$") GetColumnLetter = vArr(0) End Function 

для открытия приложения excel вы можете использовать код примерно так:


 Dim xlapp as Excel.application Set xlapp = GetObject("", "Excel.Application") ' your other code goes here xlapp.quit End sub 

Напишите Application.Quit в самом конце, который должен закрыть экземпляр.

Ваша функция GetColumnLetter (в MS Project) использует объект Excel Cells без ссылки на родительский объект (например, объект GetColumnLetter таблицы). Когда этот код выполняется изначально в Excel, Excel неявно использует активный лист. Однако MS Project не делает этого с помощью неквалифицированных ссылок Excel.

Лучший способ получить объект Range вам нужен, – сделать это:

 Dim rng_usernames As Range Dim lastcell As Range With xlbook.Worksheets(1) 'Última coluna Set lastcell = .Cells(2, .Columns.Count).End(xlToLeft) 'Range com os usernames Set rng_usernames = .Range("E2", lastcell) End With End Sub 

Если Excel все еще запущен после завершения макроса, явно закрывайте и устанавливайте объекты Excel в Nothing в конце вашего макроса.

 ' close out xlbook.Close SaveChanges:=True xlapp.Quit Set xlbook = Nothing Set xlapp = Nothing 

Примечание. Сохраненное свойство « Рабочая книга» указывает, сохранен ли файл. Установка этого параметра в значение «Истина» означает, что вам не будет предложено сохранить изменения, когда файл будет закрыт, а изменения не будут сохранены. Ваш код вносит изменения в файл, который отображает то, что вы действительно хотите сохранить. Рассмотрите возможность использования параметра SaveChanges метода Workbook Close для явного сохранения изменений или нет.

  • Начальная и конечная дата задания задачи импорта из MS Project в Excel по VBA
  • Ошибка цикла при импорте из Excel в MS Project
  • Ошибка VBA 1101: значение не действует
  • VBA - добавление задачи в проект MS из Excel
  • Медленное макрокоманда VBA в ячейках
  • Откройте SaveFileDialog с помощью приложения Microsoft Project
  • Импорт многих отношений преемников из файла Excel в MS Project
  • не может установить PageSetup.Orientation = xlLandscape из MS Project
  • MS Project to Excel Gantt Chart с использованием VBA
  • Давайте будем гением компьютера.