The_Fog 0 / 0 / 2 Регистрация: 24.02.2016 Сообщений: 75 |
||||||||||||
1 |
||||||||||||
30.01.2017, 12:58. Показов 27682. Ответов 18 Метки нет (Все метки)
Скрипт должен получить имя активного файла, создать его копию, и в копии имени заменить некоторые символы.
т.е. проблема со строчкой
Добавлено через 28 минут
Но пишет ошибку Run-time error ‘424’ Object required. =(
0 |
3217 / 966 / 223 Регистрация: 29.05.2010 Сообщений: 2,085 |
|
30.01.2017, 13:58 |
2 |
Replace(ActiveDocument.Name А причем здесь ActiveDocument?
0 |
The_Fog 0 / 0 / 2 Регистрация: 24.02.2016 Сообщений: 75 |
||||
30.01.2017, 14:15 [ТС] |
3 |
|||
Я так понял
с помощью этой функции можно получить имя файла. Если нет подскажите пожалуйста как получить это имя и заменить в нем пару символов.
0 |
toiai 3217 / 966 / 223 Регистрация: 29.05.2010 Сообщений: 2,085 |
||||
30.01.2017, 14:19 |
4 |
|||
ActiveDocument.Name Это Word документ…
0 |
The_Fog 0 / 0 / 2 Регистрация: 24.02.2016 Сообщений: 75 |
||||
30.01.2017, 14:37 [ТС] |
5 |
|||
Не не не, я тоже думал что так, но не так =( Тоже выдает ошибку =(
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
30.01.2017, 14:40 |
6 |
ThisWorkbook — это не активная книга, а книга с кодом, не факт что они совпадают!
0 |
The_Fog 0 / 0 / 2 Регистрация: 24.02.2016 Сообщений: 75 |
||||
30.01.2017, 15:22 [ТС] |
7 |
|||
обе функции ошибку выдают
0 |
CyberHelp 6 / 6 / 1 Регистрация: 29.01.2017 Сообщений: 29 |
||||
30.01.2017, 15:27 |
8 |
|||
Этот макрос скопирует вам активный файл excel в ту же директорию, где находится активный файл, при этом активный файл (например «файл1») будет закрыт и будет открыто окно сохраненного файла (например «!55файл1»). Если вам необходимо, чтобы копия файла сохранялась отдельно, т.е. без закрытия оригинального файла, то немного другой код будет.
0 |
0 / 0 / 2 Регистрация: 24.02.2016 Сообщений: 75 |
|
30.01.2017, 16:53 [ТС] |
9 |
не получается ошибка…
0 |
6 / 6 / 1 Регистрация: 29.01.2017 Сообщений: 29 |
|
30.01.2017, 17:30 |
10 |
1) Скиньте скриншот. У меня всё отлично работает.
0 |
6 / 6 / 1 Регистрация: 29.01.2017 Сообщений: 29 |
|
30.01.2017, 17:37 |
11 |
Вот вложил файл. Зайдите и нажмите на кнопку.
1 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||
30.01.2017, 18:13 |
12 |
|||
The_Fog, Если проблема только в имени нового файла, то :
1 |
The_Fog 0 / 0 / 2 Регистрация: 24.02.2016 Сообщений: 75 |
||||||||
31.01.2017, 12:51 [ТС] |
13 |
|||||||
Этот макрос скопирует вам активный файл excel в ту же директорию, где находится активный файл, при этом активный файл (например «файл1») будет закрыт и будет открыто окно сохраненного файла (например «!55файл1»). Если вам необходимо, чтобы копия файла сохранялась отдельно, т.е. без закрытия оригинального файла, то немного другой код будет. Ваш код работает, а у меня почему то нет
0 |
Hugo121 6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
||||
31.01.2017, 12:52 |
14 |
|||
The_Fog, что напишет
0 |
6 / 6 / 1 Регистрация: 29.01.2017 Сообщений: 29 |
|
31.01.2017, 17:11 |
15 |
Попробуйте заменить & на + везде
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
31.01.2017, 17:15 |
16 |
CyberHelp, вообще обычно рекомендуют делать наоборот
0 |
6 / 6 / 1 Регистрация: 29.01.2017 Сообщений: 29 |
|
31.01.2017, 17:24 |
17 |
Мой код тоже не работал пока я & не заменил на +
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
31.01.2017, 17:26 |
18 |
Это интересно, не слышал о таком казусе. Это на какой системе такое?
0 |
The_Fog 0 / 0 / 2 Регистрация: 24.02.2016 Сообщений: 75 |
||||
01.02.2017, 17:12 [ТС] |
19 |
|||
Ошибка в моем коде была…
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
01.02.2017, 17:12 |
19 |
Say, I’m writing a VBA inside my excel file sample.xls. Now I want to get the full path of sample.xls in my VBA. How do I do it?
asked Dec 13, 2009 at 5:12
2
If you mean VBA, then you can use FullName, for example:
strFileFullName = ThisWorkbook.FullName
(updated as considered by the comments: the former used ActiveWorkbook.FullName
could more likely be wrong, if other office files may be open(ed) and active. But in case you stored the macro in another file, as mentioned by user @user7296559 here, and really want the file name of the macro-using file, ActiveWorkbook
could be the correct choice, if it is guaranteed to be active at execution time.)
answered Dec 13, 2009 at 9:57
FionnualaFionnuala
90.1k7 gold badges110 silver badges148 bronze badges
3
this is a simple alternative that gives all responses, Fullname, Path, filename.
Dim FilePath, FileOnly, PathOnly As String
FilePath = ThisWorkbook.FullName
FileOnly = ThisWorkbook.Name
PathOnly = Left(FilePath, Len(FilePath) - Len(FileOnly))
answered Mar 13, 2017 at 9:44
APWAPW
2913 silver badges3 bronze badges
1
strScriptFullname = WScript.ScriptFullName
strScriptPath = Left(strScriptFullname, InStrRev(strScriptFullname,""))
answered Dec 13, 2009 at 5:18
Mitch WheatMitch Wheat
294k43 gold badges465 silver badges540 bronze badges
1
If you need path only this is the most straightforward way:
PathOnly = ThisWorkbook.Path
lucascaro
15.9k3 gold badges37 silver badges47 bronze badges
answered Oct 27, 2018 at 5:39
LouisLouis
392 bronze badges
if you need path only without file name:
ActiveWorkbook.Path
it would return D:Folder
if you need file path with file name also:
ActiveWorkbook.FullName
it would return D:Foldersample.xls
if you need file name only:
ActiveWorkbook.Name
it would return sample.xls
so if you want combine file path and file name to get full directory don’t forget to add «» between. otherwise its simpler using .Path
Reeno
5,69911 gold badges39 silver badges50 bronze badges
answered Mar 17, 2021 at 4:17
ActiveWorkbook.FullName would be better I think, in case you have the VBA Macro stored in another Excel Workbook, but you want to get the details of the Excel you are editing, not where the Macro resides.
If they reside in the same file, then it does not matter, but if they are in different files, and you want the file where the Data is rather than where the Macro is, then ActiveWorkbook is the one to go for, because it deals with both scenarios.
Emil
7,20117 gold badges77 silver badges134 bronze badges
answered Dec 14, 2016 at 12:41
There is a universal way to get this:
Function FileName() As String
FileName = Mid(Application.Caption, 1, InStrRev(Application.Caption, "-") - 2)
End Function
answered May 15, 2018 at 16:46
1
Irbis_evs
Пользователь
Сообщений: 337
Регистрация: 30.03.2017
частично, забыл уточнить, что код открывает другой файл, необходимо вернуться обратно.
начало кода:
Код |
---|
Dim sh 'As Worksheet, i&, lRow Dim lSpisok, itable, dSpisok, prod, dd book = ThisWorkbook.Name ' Настройка списка фильтров Filt = ("XLS Files(*.xl*),*.xl*") 'Получение имени файла FileName1 = Application.GetOpenFilename(FileFilter:=Filt) ' При отмене выйти иэ окна If FileName1 = False Then MsgBox "Файл не выбран." End If Set objCloseBook = GetObject(FileName1) 'objCloseBook.Close False Windows("123.xlsm").Activate Worksheets("Список").Select ActiveSheet.Unprotect ' Отображение полного имени и пути 'MsgBox OpenWorkbook(GetObject(FileName1).Name) |
Инженер не тот, кто все знает, а тот кто знает где найти ответ.
Return to VBA Code Examples
This short tutorial will demonstrate how to use the GetFileName method of the FileSystemObject.
Get File Name with VBA FileSystemObject
This lesson uses the FileSystemObject. In order to use it, you will need to set a reference to the VB script run-time library.
For getting the file name from any path, you can use:
Sub FSOGetFileName()
Dim FileName As String
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
'Get File Name
FileName = FSO.GetFileName("C:ExamplePathExampleFile.txt")
'Get File Name no Extension
FileNameWOExt = Left(FileName, InStr(FileName, ".") - 1)
End Sub
FileName variable will then hold the value of “ExampleFile.txt”, FileNameWOExt variable will be without the extension “ExampleFile”.
Get File Name Without Extension
As noted above, to get the file name without extension use this line of code:
FileNameWOExt = Left(FileName, InStr(FileName, ".") - 1)
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More!
|
|
|
Популярные разделы FAQ: Общие вопросы Особенности VBA-кода Оптимизация VBA-кода Полезные ссылки
1. Старайтесь при создании темы указывать в заголовке или теле сообщения название офисного приложения и (желательно при работе с Office 95/97/2000) его версию. Это значительно сократит количество промежуточных вопросов.
2. Формулируйте вопросы как можно конкретнее, вспоминая (хотя бы иногда) о правилах ВЕЛИКОГО И МОГУЧЕГО РУССКОГО ЯЗЫКА, и не забывая, что краткость — сестра таланта.
3. Не забывайте использовать теги [сode=vba] …текст программы… [/code] для выделения текста программы подсветкой!
4. Темы с просьбой выполнить какую-либо работу полностью за автора здесь не обсуждаются и переносятся в раздел ПОМОЩЬ СТУДЕНТАМ.
как получить имя текущего открытого файла?
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Junior Рейтинг (т): 1 |
Уважаемые форумчане, знаю в ВБА функция CurDir возвращает строковый параметр, определяющий текущую директорию файла. А есть ли функция возвращающая просто имя текущего открытого документа? (например, документа с расширением xls) |
Old Bat |
|
Moderator Рейтинг (т): 128 |
ActiveWorkbook.Name |
goodass |
|
Junior Рейтинг (т): 1 |
2 Old Bat добавлено |
Alex77 |
|
Full Member Рейтинг (т): 20 |
Myfle = Dir(DIRECTORY & «» & NAME & «.xml» ) ‘ Проверяем наличие файла If Myfle = «» Then ‘код если нет End If |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- VB for Application
- Следующая тема
[ Script execution time: 0,0367 ] [ 16 queries used ] [ Generated: 14.04.23, 16:54 GMT ]