VBA: два способа открытия файлов Excel (функция GetObject и метод Workbooks.Open)
VBA: два способа открытия файлов Excel (функция GetObject и метод Workbooks.Open)

Предыстория статьи: Чтобы открыть файл Excel по указанному пути, в VBA обычно используется метод Workbooks.Open. Недавно я обнаружил, что существует функция GetObject, имеющая схожие функции, поэтому в этой статье обсуждаются различия между двумя методами открытия.

1 Workbooks.Open2 GetObject 3 Различия между двумя способами открытия

1 Workbooks.Open

Откройте книгу.

expression.Open (FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

Если после редактирования вы хотите закрыть книгу, вы можете использовать Workbook.Close.

expression.Close (SaveChanges, FileName, RouteWorkbook)

Пример кода:

Язык кода:javascript
копировать
Option Explicit

Option Base 1

Sub test()

    «Открой книгу «Работа»
    
    Dim wb As Workbook, pathname As String
    
    pathname = "D:\OneDrive\Documents\test.xlsm"
    
    Set wb = Workbooks.Open(pathname)
    
    wb.Sheets(1).Range("A1") = "Hello world!"
    
    wb.Close SaveChanges:=True
    
    MsgBox "Done!"

End Sub

Откройте файл Excel, после редактирования сохраните содержимое и закройте его.

2 GetObject

Возвращает ссылку на объект, предоставленный компонентом ActiveX.

GetObject ([ pathname ], [ class ])

Пример кода:

Язык кода:javascript
копировать
Sub test2()

    'Используйте функцию GetObject, чтобы открыть книгу «Работа».
    
    Dim wb As Workbook, pathname As String, content As String
    
    pathname = "D:\OneDrive\Documents\test.xlsm"
    
    On Error Resume Next
    Set wb = GetObject(pathname)
    On Error GoTo 0
    
    If wb Is Nothing Then
    
        MsgBox "File not found or error occurred."
        
        Exit Sub
        
    End If
    
    ' Получить контент
    content = wb.Sheets(1).Range("A1").Value2
    
    MsgBox content
    
    wb.Close SaveChanges:=False
    
    MsgBox "Done!"

End Sub

использоватьGetObjectфункция,Получает ссылку на указанный файл Excel. Если файл Excel еще не открыт,Затем программа в фоновом режиме откроет книгу Работа.

Уведомление:проходитьGetObjectфункцияцитировать Работа Бронирование времени,Если книга Работа уже открыта,но не в активном состоянии,Программа может сообщить об ошибке.

3 Различия между двумя способами открытия

(1)использоватьGetObjectфункция Преимущество в том,,Указанную Рабочую книгу можно открыть в скрытом режиме. Если целью является получение данных указанной Рабочей книги,не пытаясь изменить данные,Это нормальноиспользоватьGetObjectфункция。

(2) При открытии указанной Рабочей книги,Если книга «Работа» была открыта заранее,использоватьGetObjectфункция Есть возможность сообщить об ошибке,Потому что книга Работа обычно не активна;

использоватьWorkbooks.OpenМетоды обычно не вызывают ошибок。Напротив,это будетвозвратная пара уже открывает ссылку на книгу «Работа», не открывая ее повторно.

(3)проходитьGetObjectфункцияоткрытьExcelПока файл изменен(Писать)и сохранить,Когда вы откроете файл позже, вы увидите только лист в VBE.,Но пользовательский интерфейс не виден。использоватьWorkbooks.OpenЭтот метод не имеет этой проблемы。

противGetObjectфункция Проблемы,Есть два решения:

1) После открытия файла,проходитьпоказыватьв менюПоказатьфункция пустьлист Сновапоказыватьпублично заявить。

2)существоватьwb.Close SaveChanges:=TrueДобавьте строку кода перед,Application.Windows(wb.name).Visible = True

Пример кода:

Язык кода:javascript
копировать
Sub test4()

    'Используйте функцию GetObject, чтобы открыть книгу «Работа».,Изменить контент,Файлы не будут скрыты
    
    Dim wb As Workbook, pathname As String, content As String
    
    pathname = "D:\OneDrive\Documents\test.xlsm"
    
    Set wb = GetObject(pathname)
    
    wb.Sheets(1).Range("A2").Value2 = "No 2"
    
    Application.Windows(wb.Name).Visible = True

    wb.Close SaveChanges:=True
    
    MsgBox "Done!"

End Sub

Ссылки:

[1] Что лучше, getobject или workbooks.open?

[2] Workbooks.Open method

[3] Workbook.Close method

boy illustration
CRUD используется уже два или три года. Как читать исходный код Spring?
boy illustration
Устраните проблему совместимости между версией Spring Boot и Gradle Java: возникла проблема при настройке корневого проекта «demo1» > Не удалось.
boy illustration
Научите вас шаг за шагом, как настроить Nginx.
boy illustration
Это руководство — все, что вам нужно для руководства по автономному развертыванию сервера для проектов Python уровня няни (рекомендуемый сборник).
boy illustration
Не удалось запустить docker.service — Подробное объяснение идеального решения ️
boy illustration
Настройка файлового сервера Samba в системе Linux Centos. Анализ NetBIOS (супер подробно)
boy illustration
Как настроить метод ssh в Git, как получить и отправить код через метод ssh
boy illustration
RasaGpt — платформа чат-ботов на основе Rasa и LLM.
boy illustration
Nomic Embed: воспроизводимая модель внедрения SOTA с открытым исходным кодом.
boy illustration
Улучшение YOLOv8: EMA основана на эффективном многомасштабном внимании, основанном на межпространственном обучении, и эффект лучше, чем у ECA, CBAM и CA. Малые цели имеют очевидные преимущества | ICASSP2023
boy illustration
Урок 1 серии Libtorch: Тензорная библиотека Silky C++
boy illustration
Руководство по локальному развертыванию Stable Diffusion: подробные шаги и анализ распространенных проблем
boy illustration
Полностью автоматический инструмент для работы с видео в один клик: VideoLingo
boy illustration
Улучшения оптимизации RT-DETR: облегченные улучшения магистрали | Support Paddle облегченный rtdetr-r18, rtdetr-r34, rtdetr-r50, rtdet
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | Деформируемое внимание с большим ядром (D-LKA Attention), большое ядро ​​​​свертки улучшает механизм внимания восприимчивых полей с различными функциями
boy illustration
Создано Datawhale: выпущено «Руководство по тонкой настройке развертывания большой модели GLM-4»!
boy illustration
7B превышает десятки миллиардов, aiXcoder-7B с открытым исходным кодом Пекинского университета — это самая мощная модель большого кода, лучший выбор для корпоративного развертывания.
boy illustration
Используйте модель Huggingface, чтобы заменить интерфейс внедрения OpenAI в китайской среде.
boy illustration
Оригинальные улучшения YOLOv8: несколько новых улучшений | Сохранение исходной информации — алгоритм отделяемой по глубине свертки (MDSConv) |
boy illustration
Второй пилот облачной разработки | Быстро поиграйте со средствами разработки на базе искусственного интеллекта
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция с нулевым кодированием и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
Решенная Ошибка | Загрузка PyTorch медленная: TimeoutError: [Errno 110] При загрузке факела истекло время ожидания — Cat Head Tiger
boy illustration
Brother OCR, библиотека с открытым исходным кодом для Python, которая распознает коды проверки.
boy illustration
Новейшее подробное руководство по загрузке и использованию последней демонстрационной версии набора данных COCO.
boy illustration
Выпущен отчет о крупной модели финансовой отрасли за 2023 год | Полный текст включен в загрузку |
boy illustration
Обычные компьютеры также могут работать с большими моделями, и вы можете получить личного помощника с искусственным интеллектом за три шага | Руководство для начинающих по локальному развертыванию LLaMA-3
boy illustration
Одной статьи достаточно для анализа фактора транскрипции SCENIC на Python (4)
boy illustration
Бросая вызов ограничениям производительности небольших видеокарт, он научит вас запускать большие модели глубокого обучения с ограниченными ресурсами, а также предоставит полное руководство по оценке и эффективному использованию памяти графического процессора!
boy illustration
Команда Fudan NLP опубликовала 80-страничный обзор крупномасштабных модельных агентов, в котором в одной статье представлен обзор текущего состояния и будущего агентов ИИ.
boy illustration
[Эксклюзив] Вы должны знать о новой функции JetBrains 2024.1 «Полнострочное завершение кода», чтобы решить вашу путаницу!