Перейти к публикации

Запуск макроса по всем файлам


Рекомендованные сообщения

Привет, земляне!

Скоромный вопрос.

У меня есть макрос.

Я хотел бы применить его ко всем файлам деталей в папке проекта его подкаталогах.

Не открывая каждую деталь по отдельности.

Спс.

Ссылка на сообщение
Поделиться на других сайтах


И кто мешает???

Ты ничё не понял ))

Надо так:

Запуск макроса и применение его ко всем файлам деталей в папке проекта его подкаталогах,

не открывая каждую деталь по отдельности...

ОТ ИМЕНИ ВСЕХ ЗЕМЛЯН,

РАЗРЕШАЮ!

Ссылка на сообщение
Поделиться на других сайтах

У меня есть макрос.

Я хотел бы применить его ко всем файлам деталей в папке проекта его подкаталогах.

Если уж вы до макросов доросли, то собственно в чём проблема? :
Sub main()

Dim swApp As Object

Dim Part As Object

Dim longstatus As Long, longwarnings As Long

'Необходима ссылка на библиотеку Microsoft Scripting Runtime (scrrun.dll)

Dim fso As Scripting.FileSystemObject, f As Scripting.Folder

Dim fileList As Files, fileSelect As File



Set swApp = Application.SldWorks

Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.GetFolder("C:\") 'Ваша папка

Set fileList = f.Files

For Each fileSelect In fileList

	'открыть файл детали

	Set Part = swApp.OpenDoc6(fileSelect, swDocPART, 0, "", longstatus, longwarnings)

	If Part Is Nothing Then Exit Sub

	'выполнить макрос

	'swApp.RunMacro filePathName, ModuleName, ProcedureName

	swApp.RunMacro "C:\Macros.swp", "ModuleMacros", "Main"

	'сохранить файл

	Part.Save2 False

	Set Part = Nothing

	'закрыть файл

	swApp.CloseDoc fileSelect

Next

End Sub
Ссылка на сообщение
Поделиться на других сайтах

Ну зачем так.

Таких "рецептов" и я могу много написать.

Марос у меня не мой. (неможко подправил, глядя на его собстенные внутренности)

Я не макрописатель. Учить если честно очень некогда...

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

Sub main()

Dim swApp As SldWorks.SldWorks

Dim Part As Object

Dim pPartName As String

Dim longstatus As Long, longwarnings As Long

'Необходима ссылка на библиотеку Microsoft Scripting Runtime (scrrun.dll)

Dim fso As Scripting.FileSystemObject, f As Scripting.Folder

Dim fileList As Files, fileSelect As File

Dim boolstatus As Boolean

Set swApp = Application.SldWorks

Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.GetFolder("C:\Мои чертежи") 'Ваша папка

Set fileList = f.Files

For Each fileSelect In fileList

'открыть файл детали

Set Part = swApp.OpenDoc6(fileSelect, swDocPART, 0, "", longstatus, longwarnings)

'If Part Is Nothing Then Exit Sub

Set swModel = swApp.ActiveDoc

boolstatus = swModel Is Nothing

If boolstatus = False Then

'выполнить макрос

'swApp.RunMacro filePathName, ModuleName, ProcedureName

swApp.RunMacro "C:\Macros.swp", "ModuleMacros", "Main"

'сохранить файл

Part.Save2 False

Set Part = Nothing

'закрыть файл

swApp.CloseDoc fileSelect

End If

Next

End Sub

Вот позволил себе немного отредактировать макрос от Kelny. :unsure: Теперь макрос работает даже если в папке есть не только детали *.sldprt :smile:
Ссылка на сообщение
Поделиться на других сайтах

Не выходит из меня программист...

В референсы добавил модуль. (скачал, положил в папку с макросами и добавил к нему пудь)

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

post-19648-1248438081_thumb.png

Ссылка на сообщение
Поделиться на других сайтах

В референсы добавил модуль.

Если и добавили, то похоже не тот.

Замените:

Dim fso As Scripting.FileSystemObject, f As Scripting.Folder

Dim fileList As Files, fileSelect As File
этим:
Dim fso As Object, f As Object

Dim fileList As Object, fileSelect As Object
Ссылка на сообщение
Поделиться на других сайтах

ТЭКС...

Макрус запустился... но выполнился на открытом документе (сборки).

Другие фаилы в папке не тронул...

В коде я вижу место (зеленым отметил) я не понял, скрипт получает путь к директории, или его надо вбивать руками.

Вроде GetFolder- это типа получить папку? Что в скобках указать?

post-19648-1248441536_thumb.png

Ссылка на сообщение
Поделиться на других сайтах

ТЭКС...

Макрус запустился... но выполнился на открытом документе (сборки).

Другие фаилы в папке не тронул...

В коде я вижу место (зеленым отметил) я не понял, скрипт получает путь к директории, или его надо вбивать руками.

Вроде GetFolder- это типа получить папку? Что в скобках указать?

... надо вбивать ручками. Вот держи не мучайсяПакетная_обработка_файлов.rar :smile:
Ссылка на сообщение
Поделиться на других сайтах

ТЭКС...

Макрус запустился... но выполнился на открытом документе (сборки).

Другие фаилы в папке не тронул...

В коде я вижу место (зеленым отметил) я не понял, скрипт получает путь к директории, или его надо вбивать руками.

Вроде GetFolder- это типа получить папку? Что в скобках указать?

Там же в коменнтариях написано: "Ваша папка"

Если она постоянная или одна-единственная, то и надо вбить туда путь к ней.

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

Все очень просто :-)

Ссылка на сообщение
Поделиться на других сайтах

Там же в коменнтариях написано: "Ваша папка"

Если она постоянная или одна-единственная, то и надо вбить туда путь к ней.

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

Все очень просто :-)

Ну я вписал руками. Но ничево чота там не произошло в этой папке...

Ссылка на сообщение
Поделиться на других сайтах

Может настало время освежить техтребование к сабжу.

- Запустить сабж.

- Сабж спрашивает какой макрос запустить?

- Сабж не просит указывать папку. А выполняет макрос в текущей и всех вложенных папках, применительно к деталям.

Текущей папкой считаем папку открытой модели.

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

После того, как сборка готова, я запускаю этот скрипт (пока руками) в каждой детали.

Везде где это требуется, в чертежах, спецификациях, комментариях есть соответствующие ячейки. Автоматом прописываются размеры, масса, меняются названия... кароче полный КОММУНИЗМ!!!!!!!!

Понятно, что если я вношу изменения и детали меняются, то мне нужно опять руками их искать и применять макрос. (но я могу что-то и пропустить)

Хочу просто в конце работы над проектом или после внесения изменений, нажать на ОДНУ кнопку и обновить все данные.

Ссылка на сообщение
Поделиться на других сайтах

Вот держи не мучайся Пакетная_обработка_файлов.rar ( 6,19 килобайт )

эта програмуля у тебя работает?
Ссылка на сообщение
Поделиться на других сайтах

Не могу запустить.

Я положил ее в папку с проектом.

Вот такое сообщение.

Как она должна работать?

post-19648-1248451300_thumb.png

Ссылка на сообщение
Поделиться на других сайтах

Как она должна работать?

Как минимум должна иметь указанную библиотеку, а поскольку поисковики о ней не знают, то она, вероятно, самописная и без автора вам её не найти.

Макрус запустился... но выполнился на открытом документе (сборки).

Другие фаилы в папке не тронул...

Вероятно в папке не было файлов. Макрос не проверяет содержимое подпапок, для этого нужно вводить рекурсивный перебор, когда в случае обнаружения папки функция поиск снова ссылается на себя и продолжает поиск в подпапках, например, в VB реализуется следующим образом (достаточно просто): <noindex>http://www.vbnet.ru/faq/showtopic.asp?id=36</noindex>

Можно реализовать тоже самое и без компонентов для VB, используя алгоритм рекурсивного перебора и Scripting.FileSistemObject

а так же можно посмотреть:

<noindex>http://www.microsoft.com/Rus/Msdn/Activ/MS...ve/VBA/367.mspx</noindex>

<noindex>http://www.visual.2000.ru/develop/ms-vb/tips/0001-2.htm</noindex>

Ссылка на сообщение
Поделиться на других сайтах
  • 7 месяцев спустя...

Использование RunMacro (и RunMacro2) трудностей не вызывает, а вот можно ли передать параметры вызываемым из них Sub?

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • Мрачный
      При пользовании народным макросом RecordDimM когда корректируешь резьбовое отверстие дважды вылазит в размере М, ММ14х1. Одно М ставит макрос, второе из обозначения отверстия с модели. Как сделать чтоб только одно М было? Забить первое ручками можно, только повторно макрос уже не воспринимает нормально такой правленый размер.
    • mamomot
      Я в свой адрес никогда не употреблял словосочетание "супер профи". Непонятно, чего Вы ко мне прилипли... Если у Вас есть какая-то конкретная критика по содержанию книги, оформлению, то от чего бы не высказать? Какой смысл в Вашем таком проведении?
    • maxx2000
      ну тогда делайте отдельно модель заготовки, либо отдельным файлом через публикацию геометрии, либо отдельным телом. Работайте, дураков работа любит 
    • maxx2000
      как нет? есть ГОСТ на резьбы в целом, канавки, и фаски и т.п. А ссылаться на него или нет это как фломастеры  по желанию
    • lem_on
      Мамомот, а ты и в самом деле не супер профи, просто понторез. 
    • lem_on
      09.02.2024 в 20:22, mamomot сказал: Я со сваркой конкретно имею дело с 1990 года   Чувствуешь что чем то, запахло, учитывая что запах не передаётся через интернет?  Я тебе ещё в той теме сказал, что свой опыт можешь намазать вазелином и засунуть куда подальше. И в этой теме сказал, что годы не значат опыт или мастерство. Так что можешь и дальше прикидываться дурачком. 
    • A_1
      Да, мы использовали её и на токарных и на фрезерных станках.
    • mamomot
      1. Ну, если попросить тебя привести мою цитату, где  я говорил о себе: "опытный супер профи", - ты же обгадишься. Что, в общем, для тебя обычное дело... 2. В 2020 году был карантин, и фирма, в которой я работал, обанкротилась, поэтому в конце апреля того года я выложил резюме, а в июне уже работал на новом месте. 3. Картинки обычные, вырезанные из 3Д редактора.
    • lem_on
      Не, ну ладно бы мужик был, а то сексуальное меньшинство, ему на Евровидение надо, там таких любят. А я то что, глупенький, мне и с бабами хорошо. 
    • Bot
      Оригинал — на сайте компании C3D Labs Результатом проекта стала модернизация первой в России системы комплексной автоматизации для мебельной отрасли «Базис», которая целиком основана на российском ПО и охватывает весь жизненный цикл мебельной продукции — от приема заказа до отгрузки. Компания «Базис-Центр» внедрила в основу конструкторских модулей системы «Базис» геометрическое ядро C3D, которое стало одним из ключевых элементов, определивших ее успех в сегменте мебельных САПР. Заказчик: «Базис-Центр» — ведущий российский разработчик автоматизированных систем проектирования, технологической подготовки и управления производством для предприятий мебельной отрасли и некоторых смежных отраслей, а также программного обеспечения для центров дистрибуции мебельных изделий. Основные направления деятельности: разработка программного обеспечения; подготовка специалистов в области автоматизации бизнес-процессов мебельных предприятий; консалтинговые услуги в области [...] View the full article
×
×
  • Создать...