Откройте книгу с помощью FileDialog и управляйте ею в Excel VBA

Я учусь использовать макросы 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  

7

Если я не правильно понял ваш вопрос, вы можете просто открыть файл только для чтения. Вот простой пример, без каких-либо проверок.

Чтобы получить путь к файлу из пользователь использует эту функцию:

  Частная функция 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)  

Поделиться
Улучшить этот ответ
ответил 06 августа 2014 в 7:02
  • 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)  

Оцените статью
Botgadget.ru
Добавить комментарий