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

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


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

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

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

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

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

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

Спс.

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


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

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

Надо так:

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

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

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

РАЗРЕШАЮ!

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

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

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

Если уж вы до макросов доросли, то собственно в чём проблема? :
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 пользователей

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




  • Сообщения

    • Torin
      Есть вопрос по Лоцману, а где он хранит данные? К примеру в Windchill это vaults, а тут где?
    • Guhl
      Точно, я был неправ Разрешение дает сигнал с оптопары, которую, как я сейчас вспоминаю, включает падение напряжение на диоде в звене постоянного тока
    • Alexey8107
      Чем это плохо? А то что станок стоит, так что ему делать? На данный момент да, сижу с блоком разбираюсь и плохого ничего в этом не вижу, в отличие от вас... А параллельно еще решаю десяток задач, в том числе и по заказу нового блока. Кстати, этот блок в сборе стоит 640 000, силовая плата 320, сигнальная плата 180, IGBT модули по 27 каждый, тиристорный блок 17. Почти все есть в наличии. И да, на Али это все можно купить гораздо дешевле, но без каких либо гарантий, привезти с Китая проблема даже окольными путями и у нас на заводе этой хренью никто страдать не будет. Так что ОМТС проверяет контрагента... То, что я чего то не пишу, это не означает что я этого не делаю, вы сами писали о том, что я слишком много пишу. По вашей просьбе сокращаю.  Мы уже говорили на эту тему. Я не спрашиваю, что у меня сломалось и дайте мне ответ что. Я знаю что сломался PSM, так как SPM работает, если ему подкинуть заведомо исправный PSM, описываю симптомы и спрашиваю Чувствуете разницу?  Вот и сижу разбираюсь, пока решается вопрос с новым. Вот лично я не вижу ничего в этом плохого. Лично мне это интересно, делаю заметки на будущее для себя и выкладываю в открытый доступ(видимо тоже не хорошо), может кому-то будет полезно. Да, я хоть и инженер электронщик, но всего знать просто невозможно, так что простите что вот таких элементарных для вас вещей не знал, что на IGBT модулях тут собран и выпрямитель и рекуператор одновременно
    • gudstartup
      постоянно оно не фигачит так как есть сигнал разрешения импульсы никогда не приходят постоянно а имеют определенную длительность и фазу относительно напряжения прикладываемого между a и к
    • maxx2000
      конечно есть, apt это  cldata в котором к траекториям может быть добавлено и описание геометрии. 
    • gudi
      там же виндовс  или я ошибаюсь? 
    • Guhl
      Там есть неуправляемый мост на диодах и мост на тиристорах для рекуперации Тиристоры молотят постоянно. Не могу сказать в какой именно момент приходит импульсы на открытие - в начале полуволны или в около ее пика, но зажигание на тиристорах я видел и когда рекуперация не происходила Если вы открыли тиристор, то закроется он только тогда, когда через него прекратится ток, поэтому неважно постоянно приходят импульсы или нет. То есть если даже вы открыли тиристор в момент превышения постоянки, то закрыть вы его все равно не сможете так просто    
    • gudstartup
      они открываются тогда когда напряжение на шине dc выше допустимого иначе они будут вам просто так dc линию просаживать даже когда она в номинале а зачем это надо ? а я понял  чтобы на dc линии дополнительные пульсации создавать  вам может схему привести или вы сами найдете? @Guhl у вас не зародилась в голове мысль зачем ставить управляемый вентиль если он всегда сливает. угол уэ управления меняется можете проверить на ваших любимых древних приводах
    • Guhl
      Аргумент приведете в пользу своего утверждения?
    • AlexKaz
      Выложен конвертер файлов результатов Radioss/OR в d3plot-файлы LS-Prepost. Конвертер позволяет очень сильно упростить жизнь при постобработке, т.к. удобного фриварного нативного просмотрщика результатов OR фактически нет, а юзать Paraview то ещё удовольствие, в основном, из-за отсутствия в Paraview огромного количества фич LS-Prepost.   https://www.vortex-cae.com/vortex-radioss https://github.com/orgs/OpenRadioss/discussions/2361 Видео.
×
×
  • Создать...