Vba excel путь к текущему файлу - IT Справочник
Llscompany.ru

IT Справочник
98 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel путь к текущему файлу

Microsoft Excel

трюки • приёмы • решения

Как в Excel отобразить полный путь файла книги

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

Переход к представлению Backstage

Один из способов увидеть путь активной книги — выбрать команду Файл ► Сведения. Путь активной книги отображается в верхней части представления Backstage.

Использование формулы

Другой вариант заключается в том, чтобы ввести следующую формулу в ячейку: =ЯЧЕЙКА(«имя_файла») . Формула показывает путь книги, в том числе имя листа, содержащего формулу.

Добавление элемента управления на панель быстрого доступа

Элемент управления под названием Размещение документа недоступен на ленте, но вы можете добавить его на свою панель быстрого доступа (рис. 177.1). К сожалению, вы не можете изменить ширину элемента, но если щелкнете на отображаемом имени, то увидите весь путь.

Рис. 177.1. Элемент управления Размещение документа, добавленный на панель быстрого доступа, позволяет увидеть полный путь активной рабочей книги

Чтобы добавить этот элемент управления на панель быстрого доступа, выполните следующие действия.

  1. Щелкните правой кнопкой мыши на панели быстрого доступа и выберите Настройка панели быстрого доступа.
  2. В разделе Панель быстрого доступа диалогового окна Параметры Excel в раскрывающемся списке слева выберите пункт Команды не на ленте.
  3. Прокрутите список вниз и выберите Размещение документа.
  4. Нажмите кнопку Добавить, чтобы добавить выбранный элемент управления на панель быстрого доступа.
  5. Нажмите кнопку ОК для закрытия окна Параметры Excel.

Отображение панели свойств документа

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

Вы, возможно, захотите добавить элемент управления Свойства на панель быстрого доступа. Делайте это так, как описано в предыдущем разделе, только в данном случае выберите раздел Файл в шаге 2 и команду Свойства в шаге 3. Элемент управления Свойства будет включать/выключать отображение панели свойств документа, так что вы можете просто щелкнуть на нем один раз, чтобы увидеть путь книги, а затем щелкнуть еще раз, чтобы скрыть панель.

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

Если вас интересует использование VBA-макросов, введите следующую процедуру в модуль VBA:

Sub ShowPath() MsgBox ActiveWorkbook.Path End Sub

Добавьте макрос ShowPath на панель быстрого доступа. Когда эта процедура выполняется, путь активной книги отображается в окне сообщения.

Vba excel путь к текущему файлу

Задача состоит в том, чтобы вызвать в Word/Excel с помощью VBA меню «Сохранить как» но при этом сделать это так

1. Чтобы в поле имя файла уже автоматически занеслось заранее вычисленное в программе значение (это уже сделано, например имя будет в виде New[текущая дата].doc).
2. Чтобы автоматом меню «Сохранить как» предлагало сохранить файл в заранее известном каталоге.
Например есть структура каталогов D:MaxIXBTNew1 D:MaxIXBTNew2 и т .д.
Так вот нужно чтобы сразу открывался подкаталог «IXBT» а то в каком из каталогов New сохранять файл будет выбирать пользователь сам.

Excel (XP):
Достаточно ознакомиться, желательно внимательно, с методом GetSaveAsFilename объекта Application.

Нижеследующее можно найти под F1.
цитата (MS Excel help):
GetSaveAsFilename Method

Displays the standard Save As dialog box and gets a file name from the user without actually saving any files.

expression.GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title, ButtonText)

expression Required. An expression that returns an Application object.

InitialFilename Optional Variant. Specifies the suggested file name. If this argument is omitted, Microsoft Excel uses the active workbook’s name.

FileFilter Optional Variant. A string specifying file filtering criteria.

This string consists of pairs of file filter strings followed by the MS-DOS wildcard file filter specification, with each part and each pair separated by commas. Each separate pair is listed in the Files of type drop-down list box. For example, the following string specifies two file filters, text and addin: «Text Files (*.txt), *.txt, Add-In Files (*.xla), *.xla».

Читать еще:  Инкремент в excel

To use multiple MS-DOS wildcard expressions for a single file filter type, separate the wildcard expressions with semicolons; for example, «Visual Basic Files (*.bas; *.txt),*.bas;*.txt».

If omitted, this argument defaults to «All Files (*.*),*.*».

FilterIndex Optional Variant. Specifies the index number of the default file filtering criteria, from 1 to the number of filters specified in FileFilter. If this argument is omitted or greater than the number of filters present, the first file filter is used.

Title Optional Variant. Specifies the title of the dialog box. If this argument is omitted, the default title is used.

ButtonText Optional Variant. Macintosh only.

Remarks
This method returns the selected file name or the name entered by the user. The returned name may include a path specification. Returns False if the user cancels the dialog box.

This method may change the current drive or folder.
Необходимый каталог и имя файла задается в первом параметре InitialFilename. Т.е. до вызова данного метода следует сгенерировать полный путь к файлу. В этом случае Excel при вызове метода отобразит каталог, указанный до имени файла, и предложит то имя файла, которое указано после пути.
Вот так все запутанно

Как получить текущий рабочий каталог с помощью vba?

Я использую MS Excel 2010 и пытаюсь получить текущий каталог, используя приведенный ниже код,

Но ActiveWorkbook.Path возвращает пустое.

Я тестировал это:

Когда я открываю документ Excel D:dbtmptest1.xlsm :

CurDir() возвращает C:Users[username]Documents

ActiveWorkbook.Path возвращает D:dbtmp

Итак, CurDir() имеет системную настройку и может быть изменен.

ActiveWorkbook.Path не изменяется для одной и той же сохраненной рабочей книги.

Например, CurDir() изменяется, когда вы выполняете команду «Файл/Сохранить как» и выбираете случайный каталог в диалоговом окне выбора файла/каталога. Затем нажмите «Отмена», чтобы пропустить сохранение. Но CurDir() уже изменился на последний выбранный каталог.

У вас есть несколько вариантов в зависимости от того, что вы ищете. Workbook.Path возвращает путь к сохраненной книге. Application.Path возвращает путь к исполняемому файлу Excel. CurDir возвращает текущий рабочий путь, вероятно, по умолчанию используется папка «Мои документы» или аналогичная.

Вы также можете использовать свойство оболочки оболочки сценариев .CurrentDirectory.

Но это должно получить тот же результат, что и просто

Казалось бы, что ActiveWorkbook не был сохранен.

Ваш код: path = ActiveWorkbook.Path

возвращает пустое значение, так как вы еще не сохранили свою книгу.

Чтобы решить проблему, вернитесь к листу Excel, сохраните свой листок и снова запустите свой код.

На этот раз он не будет отображаться пустым, но покажет вам путь, где он находится (текущая папка)

Я надеюсь, что это помогло.

Используйте Application.ActiveWorkbook.Path только для самого пути (без имени книги) или Application.ActiveWorkbook.FullName для пути с именем книги.

Это VBA, который я использую, чтобы открыть текущий путь в окне проводника:

Документация Microsoft:

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

Решение А:

Но если нет, этого должно быть достаточно.

Решение Б:

Извините за невнимательность, ребята,

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

целью является создание инструмента объединения для нескольких фиксированных именованных листов,

мне нужно скопировать инструмент моего листа (Макро) в папку, содержащую (День 1, День 2, День 3. ), нажмите на кнопку Consalidate, связанную макросом копирования и вставки, и она объединит лист,

Я создал все это, но я не могу сделать так, чтобы он автоматически определял файлы День 1, День 2, День 3 в другой папке. Мне нужно вручную настраивать пути, по возможности, мне нужно автоматизировать эту часть,

Читать еще:  Счетеслимн в excel

Объект FileSystemObject для работы с файлами. С примерами на VBA

Объект FileSystemObject

Ниже приведен справочник по объекту FileSystemObject, который умеет работать с файлами, каталогами, файловыми потоками. Данный объект позволяет читать файлы, писать в файлы, получать информацию о файлах и др. Данный объект используется в ОС Windows, в некоторых скриптовых языках.

1. Создание объекта

2. Свойства

2.1. Drives

Возвращаемое значение: объект-коллекция «Drives».

Замечание: только чтение.

3. Методы

3.1. CreateFolder

Назначение: создаёт каталог с указанным именем.

  • — строка, путь к каталогу. Если такой каталог уже существует, произойдёт ошибка.

3.2. CopyFile

Назначение: копирует один или несколько файлов.

  • — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • — строка, путь назначения (куда копировать).
  • — необязательный, булево (число). Перезаписывать существующие файлы, или нет. По умолчанию — True (перезаписывать). Если файл, который нужно перезаписать, имеет атрибут read-only, возникнет ошибка (независимо от установки этого параметра).

3.3. CopyFolder

Назначение: рекурсивно копирует каталог.

  • — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • — строка, путь назначения (куда копировать).
  • — необязательный, булево (число). Перезаписывать существующие файлы, или нет. По умолчанию — True (перезаписывать). Если файл, который нужно перезаписать, имеет атрибут read-only, возникнет ошибка (независимо от установки этого параметра).

Описание: процесс копирования прерывается после первой возникшей ошибки.

3.4. MoveFile

Назначение: перемещает один или несколько файлов.

  • — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • — строка, путь назначения (куда копировать).

Описание: процесс перемещения прерывается после первой возникшей ошибки. Если перемещаемый файл уже существует или является папкой в Destination, возникнет ошибка.

3.5. MoveFolder

Назначение: рекурсивно перемещает один или несколько каталогов.

  • — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • — строка, путь назначения (куда копировать).

Описание: процесс перемещения прерывается после первой возникшей ошибки. Если перемещаемый каталог уже существует или является файлом в Destination, возникнет ошибка.

3.6. DeleteFile

Назначение: удаляет указанный файл.

  • — строка, путь к файлу. В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • — необязательный, булево (число). Определяет, удалять или нет файлы с атрибутом read-only. По умолчанию — False (не удалять).

3.7. DeleteFolder

Назначение: удаляет указанную папку.

  • — строка, путь к папке. В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • — необязательный, булево (число). Определяет, удалять или нет файлы с атрибутом read-only. По умолчанию — False (не удалять).

3.8. BuildPath

Назначение: добавляет к заданному пути новое имя. Если необходимо, вставляется «».

— строка, путь.

  • — строка, имя файла.
  • 3.9. GetAbsolutePathName

    Назначение: возвращает полный путь для заданного относительного пути (из текущего каталога).

    — строка, относительный путь.

    3.10. GetBaseName

    Назначение: возвращает имя (без расширения) последнего компонента в заданном пути.

    3.11. GetExtensionName

    Назначение: возвращает расширение последнего компонента в заданном пути.

    3.12. GetFileName

    Назначение: возвращает имя (с расширением) последнего компонента в заданном пути.

    3.13. GetParentFolderName

    Назначение: возвращает путь к последнему компоненту в заданном пути (его каталог).

    3.14. GetDriveName

    Назначение: возвращает имя диска в заданном пути.

    3.15. DriveExists

    Назначение: возвращает True, если указанный диск сущесвтвует, и False в противном случае.

    3.16. FileExists

    Назначение: возвращает True, если указанный файл сущесвтвует, и False в противном случае.

    3.17. FolderExists

    Назначение: возвращает True, если указанный каталог сущесвтвует, и False в противном случае.

    3.18. GetDrive

    Назначение: возвращает объект «Drive» по указанному имени или пути.

    • — строка, имя диска или путь к корневому каталогу диска, возможно UNC-путь.
    Читать еще:  Подсветить строку в excel

    3.19. GetFile

    Назначение: возвращает объект «File» по указанному пути.

    Описание: если файл не существует, произойдёт ошибка.

    3.20. GetFolder

    Назначение: возвращает объект «Folder» по указанному пути.

    Описание: если каталог не существует, произойдёт ошибка.

    3.21. GetSpecialFolder

    Назначение: возвращает объект «Folder» для некоторых специальных папок Windows.

    • — число, определяет специальную папку. Возможные значения:
      • 0 — Каталог Windows.
      • 1 — Системный каталог библиотек и драйверов.
      • 2 — Каталог временных файлов, путь к которому хранится в переменной среды «TMP».

    Описание: если каталог не существует, произойдёт ошибка.

    3.22. GetTempName

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

    3.23. CreateTextFile

    Назначение: создаёт новый текстовый файл и возвращает объект «TextStream», указывающий на него.

    • — строка, путь к файлу.
    • — необязательный, булево (число). Перезаписывать файл, если он существует (True), или нет (False). По умолчанию — False. Если указано False и файл существует — произойдёт ошибка.
    • — необязательный, булево (число). Файл в формате Unicode (True), или ASCII (False). По умолчанию — False.

    3.24. OpenTextFile

    Бесплатный видеокурс по SQL

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

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

    Я пытаюсь следующее ActiveWorkbook.SaveAs («filePathFormFlow To MSExcel» & Left(Now(), 10)) но получив Run-time error ‘1004’: Method ‘SaveAs’ of object’_Workbook’ failed.

    может кто-нибудь помочь мне с этим? Я все еще очень новичок в разработке для Excel.

    6 ответов

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

    изменить: Лучшим синтаксисом также будет

    самый простой способ использовать эту функцию-начать с «записи макроса». Как только вы начнете запись, сохраните файл в нужном месте с нужным именем, а затем, конечно, установите тип файла, скорее всего, «Excel Macro Enabled Workbook»

    остановить запись, и вы можете начать проверку кода.

    Я написал код ниже, который позволяет сохранить книгу, используя путь, где файл был первоначально расположен, назвав его как » событие [дата в ячейке «А1″]»

    скопируйте код в новый модуль, а затем напишите дату в ячейке» A1″, например 01-01-2016 -> назначьте sub кнопке и запустите. [Примечание] вам нужно сделать файл сохранения, прежде чем этот скрипт будет работать, потому что новая книга сохраняется в папку автосохранения по умолчанию!

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

    OTOH, я не вижу расширения на вашем .Сохранить как имя файла. Возможно, вам нужно предоставить его при выполнении этого программно. Это имеет смысл-не нужно предоставлять расширение из интерфейса GUI удобно, но мы, программисты, должны писать однозначный код. Я предлагаю добавление расширения и соответствующего формата. См.эта страница msdn для списка форматов файлов. Честно говоря, я не узнаю много о descripions.

    xlExcel8 = 56-это .формат xls

    xlExcel12 = 50-это .файл xlsb формате

    xlOpenXMLWorkbook = 51 является .формат xlsx

    xlOpenXMLWorkbookMacroEnabled = 52 является .формата xlsm

    xlWorkbookDefault является и указан со значением 51, что озадачивает меня, так как я думал, что формат по умолчанию может быть изменен.

    Я знаю, что это старый пост, но я искал что-то подобное. Я думаю, ваша проблема заключалась в том, что при использовании Now () выход будет «6/20/2014″. Это проблема для имени файла, поскольку в нем есть»/». Как вы знаете, нельзя использовать определенные символы в имени файла.

    Я успешно использую следующий метод в одном файле

    но с такой же ошибки. Только последняя строка придумывает ошибку

    Ссылка на основную публикацию
    ВсеИнструменты 220 Вольт
    Adblock
    detector