Как использовать рабочие книги excel в visual basic

Как сделать "сохранить как" в коде vba, сохраняя мою текущую книгу excel с меткой даты?

Создать новую книгу

Для создания новой рабочей книги вы используете функцию добавления рабочих книг. Эта функция создает новую пустую книгу. Это то же самое, что выбрать «Новая книга» в меню «Файл Excel».

 Когда
вы создаете новую книгу, вы, как правило, хотите сохранить ее. Следующий код
показывает вам, как это сделать.

Sub SozdatKnigu()

    Dim wrk As Workbook
    Set wrk = Workbooks.Add

    ' Сохранить как xlsx. Это по умолчанию.
    wrk.SaveAs "C:\Temp\Пример.xlsx"

    ' Сохранить как макрокоманду
    wrk.SaveAs "C:\Temp\Пример.xlsm", xlOpenXMLWorkbookMacroEnabled

End Sub

Когда вы создаете новую книгу, она обычно содержит три листа. Это определяется свойством Application.SheetsInNewWorkbook.

Если вы хотите, чтобы в новой книге было другое количество
листов, измените это свойство перед созданием новой книги. В следующем примере
показано, как создать новую книгу с семью листами.

Sub SozdatKniguMnStr()

    ' Сохраните значение SheetsInNewWorkbook, чтобы мы могли сбросить его позже
    Dim sheetCnt As Long
    sheetCnt = Application.SheetsInNewWorkbook

    ' Установите листы в новой книге, чтобы быть 7
    Application.SheetsInNewWorkbook = 7

    ' Рабочая книга будет создана из 7 листов
    Dim wrk As Workbook
    Set wrk = Workbooks.Add

    ' Показать количество листов
    Debug.Print "number of sheets: " & CStr(wrk.Worksheets.Count)

    ' Сброс к первоначальному значению
    Application.SheetsInNewWorkbook = sheetCnt

End Sub

Что такое VBA Excel и зачем он нужен

VBA Excel позволяет создавать и редактировать макросы – серию команд и инструкций, которые могут выполняться автоматически или по требованию пользователя. Это особенно полезно при работе с большими объемами данных, когда требуется быстро выполнить рутинные операции, такие как фильтрация, сортировка, вычисления и форматирование.

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

Таким образом, VBA Excel является мощным инструментом для автоматизации задач и улучшения процесса работы с данными в Excel. Он позволяет сэкономить время и упростить рутинные операции, что особенно ценно для тех, кто регулярно работает с таблицами и данными в Excel.

Указание параметров сохранения

При сохранении файла в VBA Excel можно указать различные параметры, которые определяют формат, расположение и другие характеристики сохраняемого файла. Это позволяет настроить сохранение таким образом, чтобы оно полностью соответствовало требованиям пользователя.

Один из основных параметров — это формат файла. В Excel есть несколько различных форматов, которые могут быть использованы при сохранении файла. Некоторые из наиболее распространенных форматов включают .xlsx (стандартный формат Excel), .xlsm (формат с макросами) и .csv (формат значений, разделенных запятыми).

Кроме того, можно указать расположение, в котором будет сохранен файл. Для этого можно использовать путь к папке или указать полный путь к файлу, включая имя файла и его расширение. Также существует возможность указать, следует ли заменять существующий файл с таким же именем или сохранять новый файл с уникальным именем.

Другие параметры сохранения включают опции автосохранения, разделитель значений для формата .csv, пароль для защиты файла и другие. Параметры могут быть указаны в коде VBA перед сохранением файла или внутри диалогового окна сохранения, где пользователь может выбрать нужные настройки.

Указание параметров сохранения позволяет настроить сохранение файла в VBA Excel таким образом, чтобы оно отвечало конкретным требованиям пользователя. Это удобно при автоматизации процессов, когда необходимо сохранять файлы с определенными характеристиками или в определенном месте.

Проверить открыта ли книга

Если вы открываете книгу только для чтения, то не имеет значения, открыта ли она уже. Тем не менее, если вы собираетесь обновить данные в рабочей книге, рекомендуется проверить, открыты ли они.

Приведенную ниже функцию можно использовать для проверки,
открыта ли книга в данный момент. Если нет, то откроется рабочая книга. В любом
случае вы получите открытую рабочую книгу.

Function GetWorkbook(ByVal sFullFilename As String) As Workbook
    
    Dim sFilename As String
    sFilename = Dir(sFullFilename)
    
    On Error Resume Next
    Dim wk As Workbook
    Set wk = Workbooks(sFilename)
    
    If wk Is Nothing Then
        Set wk = Workbooks.Open(sFullFilename)
    End If
    
    On Error Goto 0
    Set GetWorkbook = wk
    
End Function

Вы можете использовать эту функцию так:

Sub PrimerOtkritiyaKnigi()

    Dim sFilename As String
    sFilename = "C:\Документы\Книга2.xlsx"

    Dim wk As Workbook
    Set wk = GetWorkbook(sFilename)
    
End Sub

Этот код хорош в большинстве ситуаций. Однако, если рабочая книга может быть открыта в режиме только для чтения или может быть открыта в данный момент другим пользователем, возможно, вы захотите использовать немного другой подход.

Простой способ справиться с этим в этом сценарии состоит в
том, чтобы настаивать на том, что файл должен быть закрыт для успешного запуска
приложения. Вы можете использовать функцию ниже, чтобы просто проверить, открыт
ли уже файл, и если это так, сообщить пользователю, что он должен быть закрыт в
первую очередь.

' Функция для проверки, если книга уже открыта
Function IsWorkBookOpen(strBookName As String) As Boolean
    
    Dim oBk As Workbook
    
    On Error Resume Next
    Set oBk = Workbooks(strBookName)
    On Error GoTo 0
    
    If Not oBk Is Nothing Then
        IsWorkBookOpen = True
    End If
    
End Function

Пример использования этой функции показан ниже. В этом
случае, если рабочая книга уже открыта, вы сообщаете пользователю, что она
должна быть закрыта для продолжения макроса.

Sub PrimerIsp()

    Dim sFilename As String
    sFilename = "C:\temp\writedata.xlsx"

    If IsWorkBookOpen(Dir(sFilename)) = True Then
        MsgBox "File is already open. Please close file and run macro again."
        Exit Sub
    End If
    
    ' Написать в книгу здесь
    
End Sub

Если вам нужно проверить, открыта ли книга в другом экземпляре Excel, вы можете использовать атрибут ReadOnly книги. Будет установлено значение true, если оно открыто в другом экземпляре.

Метод Workbooks.Close

Вы также можете применить метод Close к коллекции всех открытых книг Excel. Другими словами, вы можете использовать метод Workbooks.Close для одновременного закрытия всех книг Excel.

Основной синтаксис Workbooks.Close следующий:

«выражение» представляет коллекцию Workbooks. Поэтому я упрощаю вышеизложенное следующим образом:

Метод Workbooks.Close в некоторой степени похож на описанный выше метод Workbook.Close. Например, макросы Auto_Close не выполняются при закрытии книги любым из этих методов. Поэтому мои комментарии выше относительно макросов Auto_Close и Workbook.Close также в целом применимы к Workbooks.Close.

Однако между Workbook.Close и Workbooks.Close есть очень важное различие:

Workbooks.Close не принимает параметров. Как я объяснил выше, Workbook.Close имеет 3 параметра (SaveChanges, Filename и RouteWorkbook).

Как следствие вышеизложенного, если вы хотите использовать какие-либо (или все) описанные выше параметры при закрытии всех открытых книг, вам обычно приходится полагаться на циклы.

Кроме того, ниже я привожу примеры кода макросов, которые можно использовать для закрытия всех открытых книг одним из следующих двух способов:

Откройте книгу с помощью VBA

Вы можете использовать VBA для открытия определенной книги, если знаете путь к файлу книги.

Приведенный ниже код откроет книгу — Examples.xlsx, которая находится в папке Documents в моей системе.

Sub OpenWorkbook () Workbooks.Open ("C: \ Users \ sumit \ Documents \ Examples.xlsx") End Sub

Если файл существует в папке по умолчанию, которая является папкой, в которой VBA сохраняет новые файлы по умолчанию, вы можете просто указать имя книги — без полного пути.

Sub OpenWorkbook () Workbooks.Open ("Examples.xlsx") End Sub

Если книга, которую вы пытаетесь открыть, не существует, вы увидите сообщение об ошибке.

Чтобы избежать этой ошибки, вы можете добавить несколько строк в свой код, чтобы сначала проверить, существует ли файл или нет, и, если он существует, попробуйте его открыть.

Приведенный ниже код проверит местоположение файла и, если он не существует, отобразит настраиваемое сообщение (не сообщение об ошибке):

Sub OpenWorkbook () If Dir ("C: \ Users \ sumit \ Documents \ Examples.xlsx") "" Then Workbooks.Open ("C: \ Users \ sumit \ Documents \ Examples.xlsx") Else MsgBox "Файл не "не существует" Конец Если Конец Подп.

Вы также можете использовать диалоговое окно «Открыть», чтобы выбрать файл, который хотите открыть.

Sub OpenWorkbook () При ошибке Возобновить следующий Dim FilePath As String FilePath = Application.GetOpenFilename Workbooks.Open (FilePath) End Sub

Приведенный выше код открывает диалоговое окно Открыть. Когда вы выбираете файл, который хотите открыть, он назначает путь к файлу переменной FilePath. Workbooks.Open затем использует путь к файлу для открытия файла.

Если пользователь не открывает файл и нажимает кнопку «Отмена», FilePath принимает значение False. Чтобы избежать появления ошибки в этом случае, мы использовали оператор «On Error Resume Next».

Связанный

Закрытие файла без сохранения

В VBA Excel существует возможность закрыть файл, не сохраняя внесенные в него изменения. Для этого можно использовать метод Close объекта Workbook, который представляет собой открытую книгу.

Пример использования метода Close без сохранения файла:

В данном примере создается объект Книга, который инициализируется активной книгой, то есть той, в которой выполняется текущий макрос. Затем вызывается метод Close с параметром SaveChanges:=False. При указании значения False параметра SaveChanges, Excel закрывает файл, не сохраняя внесенные изменения.

Таким образом, данный код позволяет закрыть файл без подтверждения сохранения. Это может быть полезно, если вы выполнили изменения, но вам не требуется сохранять их.

Как настроить сохранение без запроса подтверждения вручную?

1. Сохранение файла в формате .xlsx

Для начала откройте созданный в Excel файл, который вы хотите сохранить без запроса подтверждения. После этого выберите вкладку «Файл» в левом верхнем углу и затем выберите «Сохранить как».

В выпадающем списке «Тип» выберите формат «Книга Excel» и выберите местоположение сохранения для файла. В этом окне нажмите кнопку «Сохранить».

2. Отключение запроса подтверждения для сохранения файла

Если вы хотите отключить запрос подтверждения каждый раз, когда сохраняете файл в Excel, перейдите во вкладку «Файл» в левом верхнем углу и выберите «Параметры».

В меню «Общие» найдите «Подтверждать сохранение при перезаписи». Снимите этот флажок, чтобы отключить запрос подтверждения при сохранении файла. Нажмите «ОК», чтобы сохранить изменения.

3. Использование макросов в VBA

Вы можете также использовать макросы в VBA для автоматизации процесса сохранения. Например, вы можете написать макрос, который каждый раз сохраняет файл в определенном местоположении и с определенным именем. Этот макрос можно вызвать сочетанием клавиш или кнопкой на листе Excel.

Для создания макроса перейдите во вкладку «Разработчик», нажмите «Visual Basic» и перейдите в редактор VBA. В редакторе создайте новый модуль, скопируйте и вставьте следующий код:

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

Параметры

Имя Обязательный или необязательный Тип данных Описание
FileName Необязательный Variant Строка, указывающая имя сохраняемого файла. Можно включить полный путь; В противном случае Microsoft Excel сохранит файл в текущей папке.
FileFormat Необязательный Variant Формат файла, используемый при сохранении файла. Список допустимых вариантов см. в перечислении XlFileFormat . Для существующего файла форматом по умолчанию является последний указанный формат файла; Для нового файла по умолчанию используется формат используемой версии Excel.
Password Необязательный Variant Строка с учетом регистра (не более 15 символов), указывающая пароль защиты, который будет присвоен файлу.
WriteResPassword Необязательный Variant Строка, указывающая пароль резервирования записи для этого файла. Если файл сохраняется с паролем и пароль не предоставляется при открытии файла, он открывается только для чтения.
ReadOnlyRecommended Необязательный Variant Значение true для отображения сообщения при открытии файла, в котором рекомендуется открыть файл только для чтения.
CreateBackup Необязательный Variant Значение True для создания файла резервной копии.
AccessMode Необязательный XlSaveAsAccessMode Режим доступа к книге.
ConflictResolution Необязательный XlSaveConflictResolution Значение XlSaveConflictResolution , определяющее, как метод разрешает конфликт при сохранении книги. Если задано значение xlUserResolution, отображается диалоговое окно разрешения конфликтов.Если задано значение xlLocalSessionChanges, изменения локального пользователя принимаются автоматически.Если задано значение xlOtherSessionChanges, изменения из других сеансов автоматически принимаются вместо изменений локального пользователя.Если этот аргумент опущен, отобразится диалоговое окно разрешения конфликтов.
AddToMru Необязательный Variant Значение true , чтобы добавить эту книгу в список недавно использовавшихся файлов. Значение по умолчанию — False.
TextCodepage Необязательный Variant Игнорируется для всех языков в Microsoft Excel.ПРИМЕЧАНИЕ. Когда Excel сохраняет книгу в одном из форматов CSV или текста, указанных с помощью параметра FileFormat , он использует кодовую страницу, соответствующую языку системного языкового стандарта, используемого на текущем компьютере. Этот системный параметр доступен на вкладке панель управления>Регион и расположение языка> в разделе Текущее расположение.
TextVisualLayout Необязательный Variant Игнорируется для всех языков в Microsoft Excel.ПРИМЕЧАНИЕ. Когда Excel сохраняет книгу в одном из форматов CSV или текста, указанных с помощью параметра FileFormat , эти форматы сохраняются в логическом макете. Если текст слева направо (LTR) внедрен в текст справа налево (RTL) в файле или наоборот, логическая разметка сохраняет содержимое файла в правильном порядке чтения для всех языков в файле без учета направления. Когда приложение открывает файл, каждый запуск символов LTR или RTL отображается в правильном направлении в соответствии с диапазонами значений символов на кодовой странице (если только приложение, предназначенное для отображения точного макета памяти файла, например отладчик или редактор, не используется для открытия файла).
Local Необязательный Variant Значение True сохраняет файлы на языке Microsoft Excel (включая параметры панели управления). Значение False (по умолчанию) сохраняет файлы на языке Visual Basic для приложений (VBA) (как правило, на английском языке США, если проект VBA, из которого выполняется Workbooks.Open, не является старым проектом VBA с интернационализацией XL5/95).

Properties and functions

FileDialog properties

Property Description
AllowMultiSelect Allow to select more than one file or folder
ButtonName Text displayed on the action button of a file dialog box
DialogType Change the MsoFileDialogType (see above)
Filter Set a file filter to filter file types user can select
InitialFileName The initial path to be opened e.g. C:\
InitialView The initial file view. Can be one of the following:
  • msoFileDialogViewDetails
  • msoFileDialogViewLargeIcons
  • msoFileDialogViewList
  • msoFileDialogViewPreview
  • msoFileDialogViewProperties
  • msoFileDialogViewSmallIcons
  • msoFileDialogViewThumbnail
  • msoFileDialogViewWebView
SelectedItems Collection of type FileDialogSelectedItems with all selected items
Title Title of the Open file dialog window

Использование метода SaveAs

В Visual Basic for Applications (VBA) Excel существует специальный метод , который позволяет сохранить файл без подтверждения. Этот метод имеет несколько параметров, позволяющих настроить процесс сохранения.

Ниже приведена таблица, в которой описаны наиболее часто используемые параметры метода :

Параметр Описание
FileName Строка, определяющая новое имя и путь сохраняемого файла. Например, .
FileFormat Число или константа, определяющая формат файла сохранения. Например, для сохранения в формате XLSX.
Password Строка, определяющая пароль для защиты файла. Например, .
WriteResPassword Строка, определяющая пароль для защиты записи файла. Например, .
ReadOnlyRecommended Булево значение, указывающее, рекомендовать ли открывать файл только для чтения. — рекомендуется, — нет.

Пример использования метода для сохранения файла с определенными параметрами:

Sub SaveWorkbook()
Dim wb As Workbook
Dim filePath As String
' Указываем путь и имя файла для сохранения
filePath = "C:\МойФайл.xlsx"
' Открываем активную книгу
Set wb = ActiveWorkbook
' Сохраняем файл без подтверждения
wb.SaveAs FileName:=filePath, FileFormat:=xlOpenXMLWorkbook
' Закрываем книгу
wb.Close
' Освобождаем память
Set wb = Nothing
End Sub

Этот пример сохранит активную книгу Excel в формате XLSX по указанному пути и имени файла () без подтверждения. Параметр указывает на формат XLSX.

Используя метод , вы можете гибко настроить процесс сохранения файлов в VBA Excel и избежать лишних диалоговых окон.

Шаги для настройки сохранения с помощью VBA

Шаг 1: Открыть новую книгу Excel

Первым шагом для настройки сохранения с помощью VBA является открытие новой книги Excel. Сделать это легко — просто запустите программу Excel на вашем компьютере и выберите «Новый документ».

Шаг 2: Открыть редактор VBA

Чтобы начать использовать VBA, вам необходимо открыть редактор VBA. Это можно сделать, выбрав «Разработчик» на панели меню, а затем нажав кнопку «Visual Basic».

Шаг 3: Написать код VBA для сохранения файла

Чтобы сохранять файлы без подтверждения, вам необходимо написать код VBA. Код может выглядеть так:

  • Application.DisplayAlerts = False
  • ActiveWorkbook.SaveAs Filename:=»C:FilepathFilename.xlsx», FileFormat:=51
  • Application.DisplayAlerts = True

Первая строка кода отключает запрос подтверждения сохранения, вторая строка сохраняет файл в указанном месте и формате, а третья строка снова включает запрос подтверждения сохранения.

Шаг 4: Разместить код в модуле VBA

После написания кода его необходимо разместить в модуле VBA, к которому вы можете обратиться в будущем. Чтобы создать новый модуль, щелкните правой кнопкой мыши на экране редактора и выберите «Модуль» в меню.

Шаг 5: Сохранить и закрыть редактор VBA

Завершая настройку сохранения с помощью VBA, не забудьте сохранить модуль, который вы только что создали, и закрыть редактор VBA. Теперь вы можете сохранять файлы в Excel, не получая запросов на подтверждение.

Примеры доступа к книге

Мы рассмотрели все способы доступа к книге. Следующий код показывает примеры этих способов.

Sub PrimerDostupaKKnige()

    ' Это рабочая книга, которая уже открыта и называется МойVBA.xlsm.
    Debug.Print Workbooks("МойVBA.xlsm").FullName

    ' Рабочая книга, содержащая этот код
    Debug.Print ThisWorkbook.FullName

    ' Открытая рабочая книга, которая была открыта первой
    Debug.Print Workbooks(1).FullName

    ' Открытая рабочая книга, которая была открыта последней
    Debug.Print Workbooks(Workbooks.Count).FullName

    ' Рабочая книга, которая в настоящее время активна
    Debug.Print ActiveWorkbook.FullName

    ' Рабочая книга не указана - будет использована активная
    Debug.Print Worksheets("Лист1").Name

    ' Закрытая рабочая книга с именем Книга1.xlsm в папке 
      'C:\Документы
    Workbooks.Open ("C:\Документы\Книга1.xlsm")
    Debug.Print Workbooks("Книга1.xlsm").FullName
    Workbooks("Книга1.xlsm").Close

End Sub

Как дать файлу уникальное имя при каждом сохранении?

При работе с Excel и VBA могут возникнуть ситуации, когда необходимо сохранить файл с уникальным именем каждый раз, к примеру, если вы регулярно обрабатываете данные и сохраняете их в файл.

Для того, чтобы задать файлу уникальное имя, можно воспользоваться функцией DateAndTime, которая возвращает текущую дату и время в заданном формате. Например:

  • Format(Now(), «dd_mm_yyyy_hh_nn_ss») вернет текущую дату и время в формате dd_mm_yyyy_hh_nn_ss (например, 29_02_2024_12_45_30).
  • Format(Now(), «yyyymmdd_hhnnss») вернет текущую дату и время в формате yyyymmdd_hhnnss (например, 20240229_124530).

Затем можно добавить полученную строку к имени файла, например:

Код Описание
Dim fileName As String Объявляем переменную для имени файла
fileName = «Report_» & Format(Now(), «dd_mm_yyyy_hh_nn_ss») & «.xlsx» Формируем имя файла в формате «Report_dd_mm_yyyy_hh_nn_ss.xlsx»
ActiveWorkbook.SaveAs fileName Сохраняем файл с заданным именем

Таким образом, каждый раз при выполнении макроса будет создан файл с уникальным именем, состоящим из префикса «Report_», текущей даты и времени в заданном формате и расширения файла .xlsx.

Работа с данными в workbooks excel visual basic

Одним из основных инструментов работы с данными в workbooks Excel Visual Basic является объект Range. Объект Range представляет ячейки, диапазоны ячеек или таблицы в рабочей книге Excel. С его помощью вы можете прочитать значения ячеек, установить новые значения для ячеек или выполнить какие-либо операции с данными.

Для получения доступа к объекту Range вы можете использовать метод Worksheet.Range. Например, чтобы прочитать значение ячейки A1 на рабочем листе «Лист1», вы можете использовать следующий код:

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Лист1")
Dim value As Variant
value = ws.Range("A1").Value

Таким образом, значение ячейки A1 будет присвоено переменной value.

Кроме того, с помощью объекта Range вы также можете осуществлять итерацию по ячейкам или диапазонам ячеек. Например, чтобы выполнить какие-либо операции с каждой ячейкой в диапазоне A1:B10, вы можете использовать следующий код:

Dim rng As Range
Set rng = ws.Range("A1:B10")
Dim cell As Range
For Each cell In rng
'Выполнение операций с ячейкой
Next cell

Этот код выполнит операции с каждой ячейкой в диапазоне A1:B10.

Кроме объекта Range, вы также можете использовать другие объекты и методы для работы с данными в workbooks Excel Visual Basic. Например, объекты ListObject и PivotTable предоставляют дополнительные функции для работы с таблицами и сводными таблицами.

Работа с данными в workbooks Excel Visual Basic предоставляет широкие возможности для автоматизации и обработки данных. Зная основные инструменты и методы, вы сможете эффективно работать с данными в Excel и повысить продуктивность своей работы.

Использование диалогового окна «Файл» для открытия рабочей книги

В предыдущем разделе показано, как открыть книгу с заданным именем. Иногда вам может понадобиться, чтобы пользователь выбрал рабочую книгу. Вы можете легко использовать Windows File Dialog.

FileDialog настраивается, и вы можете использовать его так:

  1. Выберите файл.
  2. Выберите папку.
  3. Откройте файл.
  4. «Сохранить как» файл.

Если вы просто хотите, чтобы пользователь выбрал файл, вы можете использовать функцию GetOpenFilename.

Следующая функция открывает книгу с помощью диалога файлов.
Функция возвращает полное имя файла, если файл был выбран. Если пользователь
отменяет, он отображает сообщение и возвращает пустую строку.

Public Function UserSelectWorkbook() As String

    On Error Goto ErrorHandler

    Dim sWorkbookName As String

    Dim FD As FileDialog
    Set FD = Application.FileDialog(msoFileDialogFilePicker)

    ' Откройте диалоговое окно файла
    With FD
        ' Установить заголовок диалога
        .Title = "Please Select File"

        ' Добавить фильтр
        .Filters.Add "Excel Files", "*.xls;*.xlsx;*.xlsm"

        ' Разрешить выбор только одного файла
        .AllowMultiSelect = False

        ' Диалог дисплея
        .Show

        If .SelectedItems.Count > 0 Then
            UserSelectWorkbook = .SelectedItems(1)
        Else
            MsgBox "Selecting a file has been cancelled. "
            UserSelectWorkbook = ""
        End If
    End With

    ' Убирать
    Set FD = Nothing
Done:
    Exit Function
ErrorHandler:
    MsgBox "Error: " + Err.Description
End Function

Когда вы вызываете эту функцию, вы должны проверить, отменяет ли пользователь диалог.

В следующем примере показано, как легко вызвать функцию UserSelectWorkbook и обработать случай отмены пользователя.

Public Sub TestViborPolz()

    Dim userBook As Workbook, sFilename As String

    ' Вызовите функцию UserSelectworkbook
    sFilename = UserSelectWorkbook()

    ' Если имя файла возвращается пустым, пользователь отменил
    If sFilename <> "" Then
        ' Откройте книгу и сделайте что-нибудь с ней
        Set userBook = Workbooks.Open(sFilename)
    End If

End Sub

Вы можете настроить диалог, изменив Title, Filters и AllowMultiSelect в функции UserSelectWorkbook.

Как отключить запрос на сохранение при закрытии книги?

Каждый раз, когда вы закрываете файл Excel без сохранения, появляется запрос на сохранение, чтобы вы могли подтвердить, закрыть ли его без сохранения или нет, что может вас раздражать. Теперь я представляю вам несколько кодов VBA, чтобы вы могли отключить запрос на сохранение при закрытии книги.

  • Повторное использование всего: добавляйте наиболее часто используемые или сложные формулы, диаграммы и другие объекты в избранное и быстро используйте их повторно в будущем.
  • Более 20 текстовых функций: извлечение числа из текстовой строки; Извлечь или удалить часть текстов; Преобразование чисел и валют в английские слова.
  • Инструменты объединения: несколько книг и листов в одну; Объединение нескольких ячеек/строк/столбцов без потери данных; Объединить повторяющиеся строки и суммировать.
  • Инструменты разделения: разделение данных на несколько листов в зависимости от значения; Одна рабочая книга для нескольких файлов Excel, PDF или CSV; Один столбец в несколько столбцов.
  • Вставить, пропуская скрытые/отфильтрованные строки; Подсчет и сумма по цвету фона; Массовая рассылка персонализированных электронных писем нескольким получателям.
  • Суперфильтр: создавайте расширенные схемы фильтров и применяйте их к любым листам; Сортировка по неделям, дням, частоте и т. д.; Фильтр по полужирному шрифту, формулам, комментариям.
  • Более 300 мощных функций; Работает с Office 2007-2019 и 365; Поддерживает все языки; Простое развертывание на вашем предприятии или в организации.

Отключить запрос на сохранение с кодом VBA в Excel

Потрясающе! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Сэкономьте 50 % своего времени и сократите количество кликов мышью каждый день!

Здесь я представляю два кода VBA, чтобы вы могли отключить запрос на сохранение. Один из них закроет Excel без сохранения, когда вы закроете книгу напрямую, а другой закроет Excel с сохранением последнего изменения, внесенного вами при закрытии книги.

VBA: закрыть без непосредственного сохранения.

Если вы хотите закрыть Excel с сохранением изменений, вы можете использовать этот код VBA.

VBA: закрыть с сохранением.

Примечание. Второй VBA не работает с новыми книгами, которые вы никогда раньше не сохраняли.

  • Точка вместо запятой в Excel

      

  • Как поставить одинарную кавычку в Excel

      

  • Как удалить текстовое поле в Word

      

  • Robotdemo exe вирус как удалить с компьютера

      

  • ПО для управления камерой Canon

Метод Workbook.Close

Метод Workbook.Close можно использовать для закрытия соответствующего объекта рабочей книги.

Основной синтаксис Workbook.Close следующий:

Для целей приведенного выше заявления применимы следующие определения:

Поскольку выражение представляет объект Workbook, я упрощаю приведенный выше синтаксис до следующего:

Давайте начнем с более подробного рассмотрения трех параметров (SaveChanges, Filename и RouteWorkbook) выше. После рассмотрения этих аргументов я добавлю несколько дополнительных комментариев о методе Workbook.Close.

Параметры сохранения изменений

Вы используете параметр SaveChanges, чтобы указать, сохраняет ли Visual Basic для приложений изменения в книге (или нет), когда книга:

  1. Есть несохраненные изменения.

Оба этих условия должны быть выполнены, чтобы VBA учитывал SaveChanges. Другими словами, VBA игнорирует SaveChanges в следующих ситуациях:

Если в книге нет несохраненных изменений.

SaveChanges — необязательный аргумент. Обычно при работе с ним используются следующие значения:

Верно: закройте книгу и сохраните изменения.

Если вы опустите параметр SaveChanges и соответствующая книга содержит несохраненные изменения, Excel отобразит диалоговое окно. В этом диалоговом окне пользователю предлагается сохранить изменения или нет.

Несмотря на вышеизложенное, если вы хотите убедиться, что конкретная книга сохранена под определенным именем, и закрыть ее, вы можете сделать следующее:

Этот способ действий предлагается такими авторитетами, как автор Ричард Мэнсфилд (в Mastering VBA for Microsoft Office 2016). Некоторые из преимуществ использования метода SaveAs (по сравнению с параметром Filename) для этих целей заключаются в следующем:

  1. Гарантирует, что книга всегда сохраняется под указанным вами именем файла.

Параметр RouteWorkbook

Параметр RouteWorkbook связан с маршрутизацией книги. Вы можете использовать RouteWorkbook, чтобы указать, будет ли книга направляться следующему получателю или нет.

RouteWorkbook является необязательным.

Основные правила, которые Visual Basic для приложений использует для определения того, как работать с RouteWorkbook, следующие:

  1. Если нет необходимости отправлять книгу следующему получателю, VBA игнорирует RouteWorkbook.

Например, рабочую книгу не нужно перенаправлять, если (i) к ней не прикреплена маршрутная накладная или (ii) маршрутизация уже выполнена.

  1. True: VBA направляет книгу следующему получателю.

Метод Workbook.Close и макросы Auto_Close

Макросы Auto_Close не выполняются, когда вы закрываете книгу из VBA

Это важно, если ваша рабочая книга использует макросы Auto_Close (вместо события BeforeClose) для автоматического запуска макроса перед закрытием рабочей книги. Метод Workbook.Close инициирует событие BeforeClose

Метод Workbook.Close и надстройки

Обычно вы устанавливаете и удаляете надстройки через диалоговое окно надстроек.

Вы также можете открывать и закрывать надстройки. Другими словами, теоретически вы можете применить метод Workbook.Close к надстройке.

Как следствие вышеизложенного, если вы получили доступ к надстройке как к книге (а не через диалоговое окно «Надстройки»), вы можете закрыть ее с помощью метода Close. Однако, как правило, это не самый подходящий способ работы с надстройками.

Причина этого объясняется экспертами в области Excel Диком Куслейкой и Майком Александром в Power Programming with VBA в Excel 2016 следующим образом:

Поэтому, как правило, используйте свойство AddIn.Installed для установки и удаления надстроек.

VBA сохранить&закрыть userform

​ с Книги3 в​​EducatedFool​​ Книга3.​, здравствуйте. Я так​ ActiveWorkbook.VBProject​ работа макроса прекращается​​ книг, если макрос​

​ FROM Свод_реестров» DoCmd.TransferSpreadsheet​​ уже после успешного​: Добрый день!​Excel.ActiveWorkbook.Save​​ — ПРОШУ ПРОЩЕНИЯJohny​Димит​​ ESC!!​​Unload UserForm1 ‘закрыть​​ с других книг,​Sub test() Dim​ Книгу1, потом перейти​​: Sub test() Dim​​Если команда о​​ делал (топорно конечно),​​VBProj.VBE.MainWindow.Visible = False​ (книга то закрывается)​ находится в другой,​​ acImport, , «Свод_реестров»,​ выполнения модуля я​Мои попытки найти​’ закрывает книгу​

​ Walkerу​​: Не хочу размещать​Помогите!!​​ и выгрузить из​​ то на его​​ wb As Workbook​​ в Книгу2, после​

​ wb As Workbook​​ закрытии книг поступает​ добавьте перед «End​Glen​Значит надо объединить​ можно так:​ FullFilePath, True, «Свод_реестров»​ пыталась открыть файл​ нужное не увенчались​

​Workbooks.Close​​Почему нельзя Unload​ кнопки на форме​

planetaexcel.ru>

Макрос закрытия книги без сохранения

​ что при событии​​ к строковым переменным​​ActiveWorkbook.Close True​ так:​ кликом сохранялся файл​Workbooks.Close​​ не работает (​vadim​ Set_windows.Hide End Subпри​ результат???​Но ведь в​

​ Клозе, ну сделал​​ oWorkbook As Excel.Workbook​ CreateObject(“Excel.Application”) ‘создать объект​ regional settings, а​​ vbHide Else: MsgBox​Разместите этот код​ открытия файла из​Вы пытаетесь прицепить​​End If​​Sub TestClose()​ и закрывался Excel?​

​End Sub​​Юрий М​

​: ActiveWindow.Close​​ закрытии все настройки​

​oExcel.Worksheets(“Лист1”).Range(“a1”).Font.Size = 14​​ Ворде в том​ так​ Dim Количество_найденного_текста As​ Microsoft Excelзатем делаю​

​ вот как бы​​ “Excel не может​ в модуле книги,​ некоторой папки, переписываются​

​ значение типа Integer,​​End Sub​Application.Run “ВосстановитьИнтерфейс”​Юрий М​KSV​

​: Вы, если спрашиваете,​​При закрытии книги​​ сохраняются, при открытии​​Busine2009​

​ скрипте который я​так как не​

​ Long Set oExcel​​ что хочу​ программно?​ закрыться, наверное вы​ (обычно с названием​ модули в VBA​ возвращаемое функцией​openid.mail.ru/mail/vlad3622340​Application.Quit​: Не это ищете:​: все правильно​​ то хоть читайте​ появляется окно “Сохранить​​ снова этой формы​​:​

​ представил не ругается,​​ знаю как правильно,​​ = CreateObject(“Excel.Application”) ‘создать​………………..​​Ципихович Эндрю​​ не сказали пожалуйста”,​​ ЭтаКнига)​ в открытый файл.​InStr(sName, ”&”)Андрей​: Спасибо, Юрий, ещё​ActiveWorkbook.Close True​

​ Workbooks(имя).Close true Или​​200?’200px’:”+(this.scrollHeight+5)+’px’);”>’ подавляет предупреждения Excel​ ответы. Ведь ясно​ изменения в файле?”​ с следующий раз-​Ципихович Эндрю​ выполнается и есть​ приходится угадывать​ объект Microsoft Excel​

​хочу закрыть без​​: Вроде изучил этот​​ 16: Cancel =​

​Option Explicit Private​​ Модули предназначены для​

planetaexcel.ru>

Понравилась статья? Поделиться с друзьями:
Technology trends
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: