Я учусь использовать макросы Excel и нашел этот код:
Dim fd As Office.FileDialogSet fd = Application.FileDialog (msoFileDialogFilePicker) With fd. AllowMultiSelect = False .Title = "Пожалуйста, выберите файл, чтобы убить его неокрашенные ячейки" .Filters.Add "Excel", "* .xls" .Filters.Add "All", "*. *" If .Show = True Then txtFileName = .SelectedItems (1) End IfEnd With
Этот код открывает FileDialog. Как я могу открыть выбранный файл Excel, не перезаписывая ранее открытый?
Спасибо, Франк. Я понял идею. Вот рабочий код.
Option ExplicitPrivate Sub CommandButton1_Click () Dim directory As String, fileName As String, sheet As Worksheet, total As Integer Dim fd As Office.FileDialog Set fd = Application.FileDialog (msoFileDialogFilePicker) With fd .AllowMultiSelect = False .Title = "Пожалуйста, выберите файл." .Filters.Clear .Filters.Add "Excel 2003", "* .xls?" Если .Show = True, то fileName = Dir (.SelectedItems (1)) End If End With Application.ScreenUpdating = False Application.DisplayAlerts = False Workbooks.Open (fileName) For Every Sheet In Workbooks (fileName) .Worksheets total = Workbooks ( "import-sheet.xlsm"). Worksheets.Count Workbooks (fileName) .Worksheets (sheet.Name) .Copy _ after: = Workbooks ("import-sheet.xlsm"). Worksheets (total) Next sheet Workbooks (fileName) .Close Application.ScreenUpdating = True Application.DisplayAlerts = TrueEnd Sub
Если я не правильно понял ваш вопрос, вы можете просто открыть файл только для чтения. Вот простой пример, без каких-либо проверок.
Чтобы получить путь к файлу из пользователь использует эту функцию:
Частная функция get_user_specified_filepath () As String 'или используйте другой пример кода здесь. Dim fd As Office.FileDialog Set fd = Application.FileDialog (msoFileDialogFilePicker) fd.AllowMultiSelect = False fd.Title = "Пожалуйста, выберите файл." get_user_specified_filepath = fd.SelectedItems (1) End Function
Затем просто откройте файл только для чтения и назначьте его переменной:
dim wb as workbookset wb = Workbooks.Open (get_user_specified_filepath (), ReadOnly: = True)
-
6Отсутствует инструкция для отображения FileDialog: fd.Show — Alex 20 фев. 2018 в 21:44
Если я не понимаю ваш вопрос, вы можете просто открыть файл только для чтения. Вот простой пример, без каких-либо проверок.
Чтобы получить путь к файлу от пользователя, используйте эту функцию:
Частная функция get_user_specified_filepath () Как String 'или используйте здесь другой пример кода. Dim fd As Office.FileDialog Set fd = Application.FileDialog (msoFileDialogFilePicker) fd.AllowMultiSelect = False fd.Title = "Пожалуйста, выберите файл." get_user_specified_filepath = fd.SelectedItems (1) End Function
Затем просто откройте файл только для чтения и назначьте его переменной:
dim wb as workbookset wb = Workbooks.Open (get_user_specified_filepath (), ReadOnly: = True)