#excel #vba #batch-file #ms-word
Вопрос:
Для работы по запросам наших клиентов мы создаем документ word, содержащий ГИС-изображение различных местоположений в пределах пояса, адрес и вспомогательную информацию о карте. Нам также предлагается получить спецификации каждого указанного местоположения. Поскольку на поясе может отображаться несколько местоположений, это может привести к асимметричному соотношению документов и изображений
Обычно текущий процесс включает копирование рабочего документа Word, изменение требуемой информации, сохранение, а затем выполнение того же самого, пока мы не закончим.
В попытке упростить этот процесс мой текущий подход включает выполнение пакетной команды для перечисления файлов изображений в каталоге папок
DIR /s *.JPG > ImageList.xls
а затем запустите макрос в Excel, чтобы удалить заголовок, трейлер и ненужные метаданные
Sub ImageList()
Set WS_Input = Worksheets("ImageList")
For i = 5 To 1 Step -1
Rows(i).EntireRow.Delete
Next
'Removes Header Information
'CODE WORKS
Last = Cells(Rows.Count, "A").End(xlUp).Row
Last5 = Last - 5
For i = Last To Last5 Step -1
Rows(i).EntireRow.Delete
Next
'Removes trailer information
'CODE WORKS
Last = Cells(Rows.Count, "A").End(xlUp).Row
For i = Last To 1 Step -1
A_length = Len(Range("A" amp; i))
'Determining the total string length including the leading 39 unneeded characters
A_length39 = A_length - 39
'Determining the total string length removing the leading 39 unneeded characters
Range("A" amp; i).Copy
WS_Input.Range("A" amp; i).Value = Right(WS_Input.Range("A" amp; i), A_length39)
'Removes the unneeded leading characters and repastes them
Next
End Sub
Вот где я застрял; мне лучше запустить пакетную команду (для которой я не уверен, как выполнить цикл командной строки, предоставляя другое имя для каждой итерации, так как в большинстве примеров, похоже, добавляется суффикс или префикс к уже существующему файлу) или написать дополнительный макрос в word (опять же, я не уверен, как заставить vba word ссылаться на очищенный список excel).
Я единственный в своей группе, кто действительно пытается внедрить такие методологии, поэтому, хотя у меня есть поддержка моих боссов, они не знают, как помочь.
Комментарии:
1. Почему вы используете
DIR /s *.JPG > ImageList.xls
? который будет включать в себя множество необязательного контента! Почему бы не открыть окно командной строки, ввестиdir /?
, нажать[ENTER]
клавишу и прочитать информацию об использованииDIR
команды? Вы должны видеть, что это также позволит вам получить «голый» вывод! напримерDir /B /S /A:-D *.jpg 2>NUL 1>"ImageList.txt"
.2. Это помогает немного очистить код (спасибо), помогая сократить пару циклов FOR до команды «найти и заменить» (чтобы удалить ведущую иерархию каталогов. Все еще зависал на ссылках, хотя
3. Почему бы не использовать встроенную
Dir
функцию из VBA или объект файловой системы?4. Перенаправление
dir
команды, безусловно, приведет не к созданию допустимого Excel, а к созданию текстового файла…5. На reddit я закончил с рекомендацией использовать команду копирования файлов с помощью объединения