Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 21.11.2015
Сообщений: 14
1

Создание макроса

21.05.2017, 11:59. Показов 1051. Ответов 9

Нужен макрос, который будет из определенной папки переименовывать файл excel удалением сначала 16 символов до ключевого слова, а потом 5 символов после, все просмотрел похожего не нашел, если реально такой сделать, помогите
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2017, 11:59
Ответы с готовыми решениями:

Создание макроса
Добрый вечер! Такое задание. Создать макрос, изменяющий шрифт выделенного текста на Arial 16,...

Создание макроса
Помогите. Нужно чтобы при нажатии кнопки "Узнать результат" он переходил на страницу с результатами...

Создание макроса
Доброго времени суток господа. Помогите решить проблему. Есть информация в текстовом виде такого...

Создание макроса new!
Нужно с помощью макроса отсортировать данные так, чтобы ФИО не повторялось, а код (столбец:код)...

9
4119 / 2224 / 939
Регистрация: 01.12.2010
Сообщений: 4,624
21.05.2017, 12:50 2
Реально, но возникает резонный вопрос - что делать, если не будет нужного количества символов до/после ключевого слова …
0
0 / 0 / 0
Регистрация: 21.11.2015
Сообщений: 14
21.05.2017, 13:23  [ТС] 3
разве кол-во символов не мы сами указываем?
альтернативу этому мне нужно определить ячейку А1 с именем файла (указываю сам, но имя файла должно быть из трех цифр), затем выполняем макрос на открытие файла соответствующего этой ячейке, т.е. название ячейки=открытие этого файла, но для этого мне нужен макрос который будет переименовывать имена файлов удаляя строчные значения из имени
0
4119 / 2224 / 939
Регистрация: 01.12.2010
Сообщений: 4,624
21.05.2017, 14:08 4
Лучший ответ Сообщение было отмечено Pavel_Kareev как решение

Решение

Вариант с указанием минимально допустимого количества (16/5) символов до/после ключевого слова.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Test() 'Excel XP
    Dim iPath$, iFileName1$, iFileName2$, iText$, iPos%
    With Application.FileDialog(msoFileDialogFolderPicker)
         If .Show = 0 Then MsgBox "Отказ от выбора папки": Exit Sub
         iPath = .SelectedItems(1) & "\"
    End With
    iText = "Ключевое_слово"
    iFileName1 = Dir(iPath & "*" & String(16, "?") & iText & String(5, "?") & "*.xls*")
    Do Until iFileName1 = ""
       iPos = InStr(1, iFileName1, iText, vbTextCompare)
       iFileName2 = Application.Replace(iFileName1, iPos, 16 + Len(iText) + 5, "")
       Name iPath & iFileName1 As iPath & iFileName2
       iFileName1 = Dir
    Loop
End Sub
1
0 / 0 / 0
Регистрация: 21.11.2015
Сообщений: 14
21.05.2017, 14:35  [ТС] 5
прогресс есть! и за это спасибо, но при переименовании он удаляет все значения после 16 символа и сбрасывает разрешение файла совсем
0
4119 / 2224 / 939
Регистрация: 01.12.2010
Сообщений: 4,624
21.05.2017, 15:31 6
Лучший ответ Сообщение было отмечено Pavel_Kareev как решение

Решение

Visual Basic
1
iFileName2 = Application.Replace(iFileName1, iPos - 16, 16 + Len(iText) + 5, "")
1
0 / 0 / 0
Регистрация: 21.11.2015
Сообщений: 14
21.05.2017, 18:16  [ТС] 7
полностью удаляет название файла
0
4119 / 2224 / 939
Регистрация: 01.12.2010
Сообщений: 4,624
21.05.2017, 20:40 8
Лучший ответ Сообщение было отмечено Pavel_Kareev как решение

Решение

Очевидно, что в этом случае - в имени файла есть только 16 символов до ключевого слова, 5 символов после него, и расширение файла.

В общем, если Вы хотите получить необходимый результат, то нужно просто привести небольшой список имён файлов до и после переименования. Проще говоря, что есть и что нужно.
1
0 / 0 / 0
Регистрация: 21.11.2015
Сообщений: 14
21.05.2017, 21:46  [ТС] 9
всё понял, разберусь, спасибо за помощь)
0
4119 / 2224 / 939
Регистрация: 01.12.2010
Сообщений: 4,624
21.05.2017, 22:11 10
Если имена файлов представляют собой государственную тайну или Вы просто хотите самостоятельно разобраться с макросом, то имейте ввиду, что Application.Replace это всего лишь стандартная функция рабочего листа ЗАМЕНИТЬ, а значит Вы можете узнать результат "переименования" даже без вызова макроса.

Например, введите нижеприведённый текст в ячейку A1 , а формулу в ячейку A2

Код
переименовывать файл excel удалением сначала 16 символов до ключевого слова, а потом 5 символов после
=ЗАМЕНИТЬ(A1;ПОИСК("сначала";A1)-16;16+ДЛСТР("сначала")+5;"")
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2017, 22:11

Создание макроса
Добрый день! Нужно создать такой макрос: - есть 3 файла эксель из одной программы...

Создание макроса
Доброго времени суток! Помогите автоматизировать процесс! Есть две книги : книга1.xlsx и...

Создание макроса
Здравствуйте! Помогите пожалуйста. Создаю макрос , а при выполнении макроса выдает: запрашиваемый...

Создание макроса на кнопку
Пожалуйста мне нужен код макроса который: При нажатии на кнопку заполнял формулами ячейки(ячейки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru