Определить имя файла word

I have code that extracts the full path of a file, minus the extension, and I’m trying to modify it to only store the name of the file, once again without the extension.

Sub ShowFilename()

Dim pathName As String
With ActiveDocument
If Len(.Path) = 0 Then
.Save
End If
If Right(.Name, 1) = "x" Then
pathName = Left$(.FullName, (Len(.FullName) - 5))
Else
pathName = Left$(.FullName, (Len(.FullName) - 4))
End If
End With
MsgBox pathName

End Sub

This displays C:Userstest, and the document’s name is test.docm. How can I modify this to only display the filename? Do I need to split the string along and extract the last part?

asked Jul 19, 2012 at 16:05

Ricardo Altamirano's user avatar

Sub ShowFilename()
Dim pathName As String
Dim o As Document
Set o = ActiveDocument
If InStrRev(o.Name, ".") <> 0 Then
    MsgBox Left(o.Name, InStrRev(o.Name, ".") - 1)
Else
    MsgBox o.Name
End If
End Sub

I initially posted this without the if, which would error if the file had never been saved, or had no extension.

answered Jul 19, 2012 at 16:15

Daniel's user avatar

As I was not able write code using FSO (isn’t it only for VB, is it?), I wrote this one, quite self explanatory :)

Dim oldFilename As String

oldFilename = ActiveDocument.Name
If Right(oldFilename, 5) = ".docx" Then
    MsgBox ("subtract .docx")
    oldFilename = Left(oldFilename, Len(oldFilename) - 5)
ElseIf Right(oldFilename, 4) = ".doc" Then
    MsgBox ("subtract .doc")
    oldFilename = Left(oldFilename, Len(oldFilename) - 4)
Else
    MsgBox ("no extension yet")
End If

answered Jan 21, 2014 at 23:02

Mad VBA Coder's user avatar

1

Yeish, I wouldn’t do it like that!

Hypothetically, you have a whole folders worth of word and you don’t need the extensions, you just want the names. What you would do is go through the word docs and parse them through this function with the type of extension you want removed from the file name

Function removeExtension(myDoc as Document, extension as String)
Dim documentWithoutExtension as String

documentWithoutExtension = replace(myDoc.Name, extension, "")

removeExtension = documentWithoutExtension

End Function

egor.zhdan's user avatar

egor.zhdan

4,5156 gold badges42 silver badges53 bronze badges

answered Aug 28, 2015 at 10:00

Ben Segar's user avatar

This one works for me.

Sub ShowFilename()
MsgBox ActiveWindow.Parent
End Sub

answered Oct 4, 2017 at 23:56

Shane Sibbett's user avatar

An easy way would be:

Sub Test1()
Dim DocName As Document
Set DocName = ActiveDocument
end sub

Paul Roub's user avatar

Paul Roub

36.3k27 gold badges82 silver badges92 bronze badges

answered Apr 26, 2019 at 16:41

MWCA44's user avatar

  • #1

Подскажите, други, как узнать исходное имя файла с изображением, помещенным в Word? И возможно ли это в принципе?

JAW


  • #2

Ответ: Как узнать исходное имя файла с изображением, помещенным в Word?

Если изображение прилинкованно, то Shift+F9 на самом изображении.
Если внедрено, то невозможно.

  • #3

Ответ: Как узнать исходное имя файла с изображением, помещенным в Word?

Если изображение прилинкованно, то Shift+F9 на самом изображении.
Если внедрено, то невозможно.

Думаю, внедрены. Shift+F9 не срабатывает. (А как осуществляется линкование в Ворде?)
Пока решил задачу так. Сохранил как веб-страницу, при этом в отдельную папку сложились и оригинальные изображения — байт в байт. Имена потерялись, но для поставленной цели это не проблема.

suntory


  • #4

Ответ: Как узнать исходное имя файла с изображением, помещенным в Word?

http://www.pcreview.co.uk/forums/do-find-name-picture-file-inserted-word-t2393044.html

If you activate the script editor (ALT+SHIFT+F11), each inserted picture has a reference in the html file displayed that looks like:
<v:imagedata src=»Document4_files/image001.jpg» o:title=»IMG_0255_1_3″/>
where image001.jpg is the new name for the image and IMG_0255_1_3 is the original filename without the extension.

suntory


  • #5

Ответ: Как узнать исходное имя файла с изображением, помещенным в Word?

Сохранил как веб-страницу, при этом в отдельную папку сложились и оригинальные изображения

Если docx, то не надо сохранять в html, это zip архив, картинки в папке media лежат.

  • #6

Ответ: Как узнать исходное имя файла с изображением, помещенным в Word?

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

Если docx, то не надо сохранять в html, это zip архив, картинки в папке media лежат.

Docx не используется ни автором вордовского документа, ни мною.

suntory


  • #7

Ответ: Как узнать исходное имя файла с изображением, помещенным в Word?

Достаточно просто пересохранить в docx и взять картинки, потом можно не использовать и удалить раз не используется.

JAW


  • #8

Ответ: Как узнать исходное имя файла с изображением, помещенным в Word?

А как осуществляется линкование в Ворде?

Через причинное место, как всё в Microsoft. Там при вставке можно выбрать, линк, вставить и оставить линк или просто вставить.
Если вставлять EPS, то есть шанс протянуть наружу CMYK :)
И по комбинациям F9 есть возможность редактировать линки, что тоже полезно.

  • #9

Ответ: Как узнать исходное имя файла с изображением, помещенным в Word?

Спасибо всем за участие в моем вопросе.

Как узнать автора документа Microsoft Word 2013

06.03.2020

В этом руководстве я покажу Вам, как узнать автора документа Microsoft Word 2013. Начнем с нажатия на раздел «Файл».

Как узнать автора документа Word 2013 пошаговая инструкция

В поле «Связанные пользователи» просматриваем автора документа. Есл информация оказалась Вам полезной – жмите Спасибо!

Как узнать автора документа Word 2013 пошаговая инструкция

Оценка статьи:

1 звезда2 звезды3 звезды4 звезды5 звезд (Пока оценок нет)

Загрузка…

Как посмотреть название файла?

3 ноября 2014 г. Просмотров: 2503

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

Инструкция

  • Чтобы посмотреть имя файла достаточно щелкнуть правой клавишей мыши по объекту и нажать «свойства». Вы увидите название файла в строчке, напротив пиктограммы. Пиктограмма обозначает, к какому типу относится файл.
  • При открытии окна «свойства» вы увидите расширенное имя файла. Учтите, даже файлы с одинаковыми названиями могут отличаться по типу. Например, файл «название.doc» будет являться документом Word. Файл «название.jpg» является рисунком, а файл «название.avi» — видеофайлом.
  • Поменяйте название файла самостоятельно. Чтобы переименовать файл нажмите правой клавишей мыши по объекту, найдите строчку «переименовать». Пишите название буквами или цифрами, учитывая максимальную длину, которая не должна быть больше 255 символов. Но учтите, в названии нельзя использовать скобки и различные символы.
  • В процессе работы с любыми файлами периодически сохраняйте информацию. Перейдите в меню файл, найдите пункт сохранить. Введите имя файла в соответствующее поле и нажмите параметр сохранить.
  • Выберите место сохранения или оставьте по умолчанию. Добавьте к сохраняемому файлу новые свойства, метки, которые можно применить для дальнейшего поиска файлов.
  • Метки должны содержать слова, которые будут способствовать систематизации файлов. Используйте, например, имя автора и дату создания файла. Таким образом, вы упростите работу с документами, используя фильтрацию по дате и по имени автора.
  • Чтобы добавить файлу новые свойства выберите вкладку «файл» и команду «сохранить как». Введите новые данные в соответствующих полях. Подтвердите новые значения, нажав кнопку сохранить.
  • Для упорядочивания файлов, система использует библиотеку доступа к файлам. В библиотеке есть папки «документы», «изображения», «музыка», «видео». Если вы сохраните файлы по умолчанию, они окажутся в этих папках.
  • Чтобы посмотреть название файла сохраненного в библиотеке воспользуйтесь строкой поиска. Введите в поле поиска часть имени сохраненного файла. Вы увидите только соответствующие запросу.
  • Оцените статью!

    3 / 3 / 0

    Регистрация: 27.02.2016

    Сообщений: 80

    1

    Word

    Как макросом в Ворде определить цифровую часть названия файла?

    28.12.2018, 22:21. Показов 2252. Ответов 14


    Студворк — интернет-сервис помощи студентам

    Здравствуйте. В директории есть группа файлов название которых отличаются тремя цифрами (к примеру Абв124, Абв125, … Абв231). Как макросом в Ворде определить цифровую часть названия файла с самым высоким номером?
    Спасибо.



    0



    fever brain

    oh my god

    1454 / 793 / 161

    Регистрация: 05.01.2016

    Сообщений: 2,307

    Записей в блоге: 8

    28.12.2018, 22:46

    2

    Лучший ответ Сообщение было отмечено Skreper как решение

    Решение

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    Sub qwerty()
     
        Dim v, s$, max#, Result$
     
        With CreateObject("scripting.filesystemobject")
            For Each v In .GetFolder(ActiveDocument.Path).Files
                s = .GetBaseName(v)
                If s Like "*###" Then
                    If Right$(s, 3) > max Then max = Right$(s, 3): Result = v.Name
                End If
            Next
        End With
        If Result <> "" Then MsgBox Result
    End Sub

    Как макросом в Ворде определить цифровую часть названия файла?



    1



    Святой НякаЛайк

    653 / 246 / 88

    Регистрация: 28.10.2015

    Сообщений: 520

    28.12.2018, 22:52

    3

    По идее есть функция val, которая должна из произвольного текста извлекать число (если оно там есть). Но val мало что может…
    Можно написать свой val:

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    Sub Skreper()
        Const myfile As String = "абв123"
        MsgBox myval(myfile)
    End Sub
     
    Function myval(ByVal text As String) As Long
        Dim l As Long, k As String, boo As Boolean
        For l = 1 To Len(text)
            If IsNumeric(Mid(text, l, 1)) Then k = k & Mid(text, l, 1): boo = True
            If Not IsNumeric(Mid(text, l, 1)) And boo = True Then GoTo ex
        Next
    ex:
        myval = CLng(k)
    End Function

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



    1



    fever brain

    oh my god

    1454 / 793 / 161

    Регистрация: 05.01.2016

    Сообщений: 2,307

    Записей в блоге: 8

    28.12.2018, 23:11

    4

    Цитата
    Сообщение от Святой НякаЛайк
    Посмотреть сообщение

    По идее есть функция val, которая должна из произвольного текста извлекать число (если оно там есть).

    Извлекает передние числа из строки например 34xx = 34
    и наоборот xx34 = 0

    Добавлено через 11 минут

    Цитата
    Сообщение от Святой НякаЛайк
    Посмотреть сообщение

    Можно написать свой val:

    можно ))

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Sub test()
        MsgBox VAL_2("abc987")
    End Sub
     
    Function VAL_2(value) As Double
        Dim q#
        q = Val(value)
        VAL_2 = StrReverse(Val(StrReverse(value)))
        If Abs(q) > Abs(VAL_2) Then VAL_2 = q
    End Function



    1



    Святой НякаЛайк

    653 / 246 / 88

    Регистрация: 28.10.2015

    Сообщений: 520

    28.12.2018, 23:15

    5

    Цитата
    Сообщение от fever brain
    Посмотреть сообщение

    Извлекает передние числа из строки

    Ну да. Это наверное создавалось в расчете на бухгалтеров — извлекать 99,99 из «99,99 rur», но хочется же, чтобы функция работала более универсально, как надо ТС например.

    Добавлено через 1 минуту

    Цитата
    Сообщение от fever brain
    Посмотреть сообщение

    можно ))

    А такое

    Visual Basic
    1
    
    MsgBox VAL_2("abc987.txt")

    уже не проканывает. У ТС файлы начинаются названиями с чего-то нечислового и заканчиваются расширениями…



    0



    oh my god

    1454 / 793 / 161

    Регистрация: 05.01.2016

    Сообщений: 2,307

    Записей в блоге: 8

    28.12.2018, 23:22

    6

    ТС писал что его интересуют три последние цифры

    Цитата
    Сообщение от Skreper
    Посмотреть сообщение

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

    мой пример проигнорирует все что угодно (даже если там две цифры) кроме имен файлов с тремя цифрами в конце )

    Добавлено через 2 минуты

    Цитата
    Сообщение от Святой НякаЛайк
    Посмотреть сообщение

    А такое

    Ну вот поэтому нужно просматривать базовые имена в папке без расширений

    Цитата
    Сообщение от fever brain
    Посмотреть сообщение

    s = .GetBaseName(v)



    0



    3 / 3 / 0

    Регистрация: 27.02.2016

    Сообщений: 80

    29.12.2018, 00:09

     [ТС]

    7

    fever brain, Святой НякаЛайк, спасибо, сейчас попробую вставить в свой макрос.

    Хотя, додумался до более простого решения, только надо величину (цифровое окончание первого и последнего файлов) передать из экселя в ворд.
    Дело в том, что в экселе формируются ряд файлов отличающиеся окончанием, а в ворде собираю эти файлы в один блок, к примеру файл Абс231-278. Хочется автоматизировать этот процесс.



    0



    653 / 246 / 88

    Регистрация: 28.10.2015

    Сообщений: 520

    29.12.2018, 00:21

    8



    1



    oh my god

    1454 / 793 / 161

    Регистрация: 05.01.2016

    Сообщений: 2,307

    Записей в блоге: 8

    29.12.2018, 00:22

    9

    Цитата
    Сообщение от Skreper
    Посмотреть сообщение

    Дело в том, что в экселе формируются ряд файлов отличающиеся окончанием, а в ворде собираю эти файлы в один блок, к примеру файл Абс231-278. Хочется автоматизировать этот процесс.

    Ну твой вопрос был решен или нет ?

    Цитата
    Сообщение от Skreper
    Посмотреть сообщение

    Как макросом в Ворде определить цифровую часть названия файла



    0



    11482 / 3773 / 677

    Регистрация: 13.02.2009

    Сообщений: 11,147

    29.12.2018, 00:23

    10

    Хотя, додумался до более простого решения, …. передать из экселя в ворд.

    Жесть! самое простое решение!



    0



    653 / 246 / 88

    Регистрация: 28.10.2015

    Сообщений: 520

    29.12.2018, 02:16

    11

    Цитата
    Сообщение от Skreper
    Посмотреть сообщение

    После чего открывается и активизируется общий файл «Adv.docx» в ‘котором вносим фактически файл «Adv0.docx» сохраняя форматирование. «Adv0.docx» затем уничтожается, а «Adv.docx» запоминается. И так, пока список не закончится

    Цитата
    Сообщение от Skreper
    Посмотреть сообщение

    в экселе формируются ряд файлов отличающиеся окончанием, а в ворде собираю эти файлы в один блок, к примеру файл Абс231-278. Хочется автоматизировать этот процесс.

    А почему нужно сначала создавать сотню файлов, а потом склеивать их воедино, притом воссоздавая порядок, следовавший при создании? Что мешает сразу в том самом экселе слить всю инфу в один файл «Adv.docx»? (А потом здесь же, всё ещё из экселя, отправить этот реестр всех фамилий на печать и сэкономить кучу времени на создании, открытии, закрытии, сохранении при каждом добавлении кучи файлов)



    1



    3 / 3 / 0

    Регистрация: 27.02.2016

    Сообщений: 80

    29.12.2018, 10:39

     [ТС]

    12

    fever brain, первый ответ (от 23.46) работает нормально, единственное т.к. цифровая часть может быть и 2-х и 4-х значная, то придется откинуть текстуальную. Тут уже додумаюсь как нибудь.
    Святой НякаЛайк, с функциями у меня что-то не получается, не разбираюсь я в них.

    Цитата
    Сообщение от fever brain
    Посмотреть сообщение

    Ну твой вопрос был решен или нет ?

    В принципе да, СПАСИБО.

    Цитата
    Сообщение от Святой НякаЛайк
    Посмотреть сообщение

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

    Потому что бестолковый (возраст далеко за 60 и не специалист в программировании), работаю методом «научного тыка».
    Склеивать не получилось т.к. используются разные шаблоны при формировании одиночных файлов и идет сползание с одной страницы на другой, надо корректировать (разрыв страницы иногда дает пустую страницу). Для более коротких в шаблоне использую закладки, а тут их может быть более сотни.



    0



    fever brain

    oh my god

    1454 / 793 / 161

    Регистрация: 05.01.2016

    Сообщений: 2,307

    Записей в блоге: 8

    29.12.2018, 14:17

    13

    Лучший ответ Сообщение было отмечено Skreper как решение

    Решение

    Цитата
    Сообщение от Skreper
    Посмотреть сообщение

    единственное т.к. цифровая часть может быть и 2-х и 4-х значная, то придется откинуть текстуальную. Тут уже додумаюсь как нибудь.

    А чего додумываться, в моем примере будут просматриваться все имена имеющие маску
    If s Like «*###» тоесть: текст123
    если поставить маску If s Like «*##» то остануться текст123 и текст12

    а если поставить маску If s Like «*#»
    то любая длина текста и любая длина цифр, но так как цифра теперь будет не фиксированна, придется использовать еще и функцию

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
    Function ValM(ByVal S As String) As Double
        '
        'Функция которая возвращает переднее или заднее число в названии
        '
        ValM = Val(S)
        If Abs(ValM) > 0 Then Exit Function Else ValM = ValM(Mid$(S, 2))
    End Function
     
     
    Sub File_name_maximum_numeric_part()
        '
        'Максимальная числовая часть имени файла
        '
        Dim v, S$, max#, Result$
        With CreateObject("scripting.filesystemobject")
            For Each v In .GetFolder(ActiveDocument.Path).Files
                S = .GetBaseName(v)
                If S Like "*#" Then
                    Debug.Print S
                    If ValM(S) > max Then max = ValM(S): Result = v.Name
                End If
            Next
        End With
        If Result <> "" Then MsgBox Result
    End Sub

    Как макросом в Ворде определить цифровую часть названия файла?

    На снимке папка запускаемого документа *новая папка* в ней-же файлики
    изменить папку можно в этой части: .GetFolder(ActiveDocument.Path).Files
    например: .GetFolder(«C:»).Files

    в окне immediate список просмотренных имен
    Сообщение показывает максимальное число в группе



    1



    3 / 3 / 0

    Регистрация: 27.02.2016

    Сообщений: 80

    29.12.2018, 19:53

     [ТС]

    14

    fever brain, спасибо, работает отлично.

    Не по теме:

    Не вижу реакцию на «Лучший ответ»

    Здоровья вам и с наступающим. Всех благ.

    ПС. Как надоел устаревший маркер безопасности. Который не действует и после обновления страницы.



    1



    oh my god

    1454 / 793 / 161

    Регистрация: 05.01.2016

    Сообщений: 2,307

    Записей в блоге: 8

    30.12.2018, 22:48

    15

    Цитата
    Сообщение от Skreper
    Посмотреть сообщение

    Здоровья вам и с наступающим. Всех благ.

    Спасибо ))
    ёлку уже поставили, даже лампочки настроили под синхронизацию, я тоже не молод….
    поэтому диджеями назначил младших родственников(моих дочек)…. ну ёлка отличная получилась



    0



    Понравилась статья? Поделить с друзьями:
  • Определить значение функции с использованием excel
  • Определить доли товарных групп в общих продажах за квартал в excel
  • Определить дни недели в excel
  • Определить диапазон чисел в excel если
  • Определить диапазон используемых ячеек excel