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

Макрос. Хочу создать


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

В модуле.

дома создавал hide/show в модуле, писал имя формы-точку-а он ничего не предлагал выбрать. Просто вспоминая бейсик, там в свойствах проекта можно было выбрать первую форму, в дельфи каждую под форму нужно декларировать чтоб увидеть. Тут как-то всё еще проще.

На работе всё получилось.

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


Да, надо показывать(show) нужную в данный момент форму, а остальные прятать (hide). Форма которая должна появляться первой "прописывается" в модуле

Насколько я понял модальных форм у вас не будет.

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

дома создавал hide/show в модуле, писал имя формы-точку-а он ничего не предлагал выбрать. Просто вспоминая бейсик, там в свойствах проекта можно было выбрать первую форму, в дельфи каждую под форму нужно декларировать чтоб увидеть. Тут как-то всё еще проще.

На работе всё получилось.

hide/show - это только спрятать/показать, а требуется еще и загрузка формы! :

---

This example uses the Load statement to load a Form object. To try this example, paste the code into the Declarations section of a Form object, and then press F5 and click the Form object.

Sub Form_Click ()

Dim Answer, Msg ' Declare variable.

Unload Form1 ' Unload form.

Msg = "Form1 has been unloaded. Choose Yes to load and "

Msg = Msg & "display the form. Choose No to load the form "

Msg = Msg & "and leave it invisible."

Answer = MsgBox(Msg, 4) ' Get user response.

If Answer = 6 Then ' Evaluate answer.

Show ' If Yes, show form.

Else

Load Form1 ' If No, just load it.

Msg = "Form1 is now loaded. Choose OK to display it."

MsgBox Msg ' Display message.

Show ' Show form.

End If

End Sub

---

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

hide/show - это только спрятать/показать, а требуется еще и загрузка формы! :

Для полноты картины.

При использовании метода Show, если форма не была загружена, форма всегда сначала автоматом загружается, а потом отображается. То есть, как бы вполняется Load + Show.

Поэтому, для загрузки и отображения формы часто можно использовать просто Show без специальной загрузки.

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

Всем привет.

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

Надо считать строку, и дописать в нее какую-то инфо, НО с сохранением старой, в определенном порядке.

Для примера выбрал обозначение крепежа по ГОСТ.

Поясню:

Есть запись:

Болт М 6 х 8 ГОСТ 7798-70

Надо:

Болт М6-6gх8.58.016 ГОСТ7798-70

с учетом ненужных пробелов.

Макрос мне написал:

Range("C3").Select

ActiveCell.FormulaR1C1 = "'Болт М6-6gх8.58.016 ГОСТ7798-70"

Range("C4").Select

End Sub

Он действует только на эту строку и только эту форму записи.

Что делать дальше - :confused_1:

Посоветуйте книгу доступную для "чайника" для выполнения моей задачи, что-ли.

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

Всем привет.

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

Надо считать строку, и дописать в нее какую-то инфо, НО с сохранением старой, в определенном порядке.

Для примера выбрал обозначение крепежа по ГОСТ.

Поясню:

Есть запись:

Болт М 6 х 8 ГОСТ 7798-70

Надо:

Болт М6-6gх8.58.016 ГОСТ7798-70

с учетом ненужных пробелов.

Макрос мне написал:

Range("C3").Select

ActiveCell.FormulaR1C1 = "'Болт М6-6gх8.58.016 ГОСТ7798-70"

Range("C4").Select

End Sub

Он действует только на эту строку и только эту форму записи.

Что делать дальше - :confused_1:

Посоветуйте книгу доступную для "чайника" для выполнения моей задачи, что-ли.

Приобретите одну из книг Гарнаева. Для начинающих самое то.
Ссылка на сообщение
Поделиться на других сайтах

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

Для этого придется научится разбираться в программировании в целом, вероятно вам надо будет сначала ознакомится с каким нибудь языком програмирования. Советую занятся бейсиком, т.к. он изначально разрабатывлася как язык для обучения и к тому же используется для написания макросов под MSOficce.

В интернете достаточно много статей и учебных пособий по нему с примерами и исходными кодами.

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

В интернете достаточно много статей и учебных пособий по нему с примерами и исходными кодами.

Примеров подходящих не нашел, а так азы изучаю.

Некоторые моменты мне понятны, но вот мозгов немного не хватает.

Например как из 1 ячейки считать всю надпись, и дописать то, что надо только после определенной инфо, которая тоже меняется?

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

Примеров подходящих не нашел, а так азы изучаю.

...

Это удивительно - примеров по VB - тысячи...

Посмотрите специализированные сайты по VB и VBA.

Например тут:

<noindex>http://bbs.vbstreets.ru/</noindex>

<noindex>http://www.sql.ru/forum/actualtopics.aspx?bid=22</noindex>

<noindex>http://www.google.ru/custom?hl=ru&inla...%E5%ED%ED%EE%EC</noindex>

Можно еще сделать поиск по фразе типа "VBA в Excel"...

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

Например как из 1 ячейки считать всю надпись, и дописать то, что надо только после определенной инфо, которая тоже меняется?

Я опишу алгоритм словами а Вы уже сами переведети в программный код, заодно и потренеруетесь.

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

Берем надпись из ячейки

Смотрим есть ли вхождение в надпись элемента Массива (сначала первого, потом второго и так далее)

Если есть то

..................разделяем надпись на две части: первая -все что до вхождения, вторая - все остальное.

..................записываем в ячейку = первая часть + то что надо дописать + вторая часть

..................выходим

Если нету то переходим на след элемент массива.

Если все элементы масива перебраны то выходим.

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

Я опишу алгоритм словами а Вы уже сами переведети в программный код, заодно и потренеруетесь.

Во первых у вас ...

Вот мой ранний пример(набросок), когда я этим занимался:

to_kobold.zip

Исполняемый файл: `XLS_v3_WS2007.exe`. Если какие ошибки будут, то надо иметь VB и запускать файл `SP_XLS_WS2007.vbp` (можно прямо из ТС).

А так, весь код в файлах " *.bas "...

Ну и желательно изучить работу этой программки в пошаговом режиме(`F8`).

А также изучить систему адресации к ячейкам таблицы Excel...

Например:

"Public Sub ExpExcel()

'======================================================= иициализация Excel

If xl Is Nothing Then

Set xl = CreateObject("Excel.Application")

Else

Set xl = GetObject(, "Excel.Application")

End If

xl.Visible = True

fileTMPL = "C:\Program Files\SolidWorks\data\templates\SpA4_1.xlt" ' проверка есть ли шаблон

'''' fileTMPL = "F:\Program Files\SolidWorks\data\templates\SpA4_1.xlt"

If Dir(fileTMPL) <> "" Then

Set wb = xl.Workbooks.Add(fileTMPL)

Else

Set wb = xl.Workbooks.Add

MsgBox "Файл шаблона не найден!", , "Error587!"

Set xl = Nothing

Exit Sub

End If ' нет шаблона - завершение работы!

On Error Resume Next

Set ws = wb.Worksheets("Sheet1")

Set ws = wb.Worksheets("Лист1")

'======================================================= иициализация Excel END

'======================================================= запсиь в Excel

ws.Range("B1").Value = "Comp Name from FM" <<<<====заполнение ячеек Excel`a

ws.Range("C1").Value = "Configuration"

ws.Range("D1").Value = "File of compоnent"

ws.Range("E1").Value = "Quantity"

ws.Range("F1").Value = "Pid"

............

"

Чтобы считать значение ячейки, нужно указать ее адрес (например "B1") и выполнить:

val1=ws.Range("B1").Value <= считывание

val1=val1+".Изменено!"

ws.Range("B1").Value = val1 <= заполнение ячейки...

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • vad0000
      Не важно, Не нужен output при зелёной и красной кнопки.
    • ispite
      Всем привет, спасибо за ответы, но просто так не удалось создать сборку, солид выдавал ошибку. Пришлось Сохранить как IGES (файл разросся до 920 МБ), потом открыл как деталь (в нейстало шустрее работать), нажал "создать сборку" и она создалась! НО она создалась без поверхностей, а они тоже нужны Всем привет, спасибо за ответы, но просто так не удалось создать сборку, солид выдавал ошибку. Пришлось Сохранить как IGES (файл разросся до 920 МБ), потом открыл как деталь (в ней появились Тела и Поверхности и стало шустрее работать), нажал "создать сборку" и она создалась! НО она создалась без поверхностей, а они тоже нужны. Как создать сборку с телами и поверхностями? Пробовал в детали сохранить поверхности, но оно как будто работает наоборот и все поверхности стирает.  PS удалите плз предыдущий ответ, я его случайно отправил.
    • Alexey8107
      Всем доброго дня. Имеется ивановский обрабатывающий центр ИС-800, в нем установлены: PSM-45HVi A06B-6120-H045 SPM-30HVi A06B-6121-H030#H550 Возникла авария 9030 Overcurrent in the converter input circuit. Если смотреть В-65285 в этом случае на PSM должна отображаться 1, а на SPM - 30. Так оно и есть на самом деле. Документ ссылается на пункт 3.1.1, в свою очередь этот пункт говорит о неисправности PSM и следует проверить Входящее питание. Скорее всего здесь имеется ввиду питание управления, оно 240 В и стабильно Рекомендуют проверить реактор. Сразу откидываем, т.к. дело до включения силового питания еще даже не доходит, МСС отключен. Да и реактор штатный, всю жизнь работал с этим реактором. Проверить IGBT. Проверить проверил как мог, на КЗ, но дело до силовухи еще не доходит, ее питания еще нет и физически включиться не может из за MCC(ну это естественно, блок в аварии). Принципиально все рекомендации. На LEADWELL была похожая ситуация, на торможении шпинделя на PSM помнится выпадала авария 1, а на шпинделе не помню уже что. Тоже думали на PSM, а судя по всему мозг вынимал рекуператор в SPM. Т.к. на шине 500 вольт на торможении шпинделя напряжение вылетало далеко за 500 вольт выше. Здесь тоже нечто подобное, SPM опрокидывает PSM в аварию. Вобщем при включении питания станка, запитывается только управление на PSM, а он в свою очередь раздает 24 вольта на все остальные блоки по CXA2A, если все нормально и ЧПУ включена, замыкается контакт МСС, разрешая подачу силового питания на PSM. Шаги загрузки на полностью исправном станке PSM    SPM   -          A   -         50   -         12(или 18)   -         -- После включения ЧПУ и подачи силового питания   0         0 У нас PSM    SPM   -          A   -         50   -         12(или 18)   1         30 Включение силовухи невозможно. Что было сделано: 1. Проверены все питания, 240 СХ1А, 24 СХА2А, силовое питание, везде порядок. 2. Проверены IGBT на PSM и SPM, явного замыкания нет. 3. Проверены обмотки серво двигателя шпинделя. На всех 0,4 ома(сопротивление щупов 0,2 + обмотки 0,2 ома). Сравнил с заведомо исправным таким же двигателем(он стоит в другом таком же станке и работает), все тоже самое, На массу КЗ нет. Да и силовухи тоже нет, так что это бессмысленно. 4. Откинул от PSM разъем СХА2А(тупо обесточил остальные блоки от 24 вольт), включил питание управления, PSM перестал опрокидываться в ошибку, на дисплее "-". Ждал долго, не опрокидывается. Силовое питание подавать не стал, ибо чревато для остальных блоков, а скидывать шинку постоянного тока честно говоря поленился. 5. С соседнего станка снял плату управления SPM и переставил в неисправный станок, по номерам они идентичные. Станок включился и даже подал силовое питание на PSM без всяких аварий. Гонял пару минут в холостую, все было нормально, но после опрокинулся с той же ошибкой 1 и 30 на PSM и SPM соответственно. 6. Взял плату управления SPM с неисправного станка и установил в исправный. Станок включился и сколько бы не гонял, и даже шпинделем крутил, не опрокидывается. Т.е. к обоим платам претензий ноль. После вернул все обратно. Исправный станок работает как ни в чем не бывало, неисправный сразу опрокидывается в аварию почти сразу после включения управляющего питания. На ЧПУ ошибка 9030 и какие то еще по осям, но они связаны с отсутствием питания на шине постоянного тока если не ошибаюсь, так что это нормально. Итого, силовуха явных признаков неисправности не имеет, и даже на какое то время с другой платой включает силовое питание(скорее всего это связано с разбросом параметров защит на разных платах). К самому PSM тоже вроде претензий не должно быть, хотя В-65285 указывает именно на него. В истории с LEADWELL точно помню, что тоже все указывало на PSM(в том числе 1 на дисплее), и даже сервисный инженер FANUC был уверен в неисправности именно PSM. По факту, неисправен был как раз SPM. К платам управления тоже никаких претензий, обе работают в исправном станке. Единственное логическое объяснение, неисправность силовухи SPM. НО!!! Шина постоянного тока даже не думает запитываться, так что и тут с опрокидыванием сразу после включения есть засада! Ну не тестирует же SPM и PSM силовую часть напряжением 24 вольта??? Ведь до включения силового питания в этом случае даже не доходит из-за аварии! Может у кого есть еще идеи или опыт устранения таких дефектов? Помнится у фанука была типовуха на платах А16В-2203-0623 с датчиками тока, они отгорали и привод отваливался в аварию по одной из фаз. Это были привода шпинделя и двух осей в одном корпусе, были такие у нас на токарных. Сервисники фанука тогда их тучами меняли... Хотя тут я думаю не наш случай
    • Kelny
      Даже при всём при этом оно не всегда корректно работало, так что даже в старых версиях было быстрее удалить размер и потом вставить заново, чем искать эти точки размеров, а потом пытаться их привязать к новому месту.   Возможно это всего лишь глюк новой версии, в последних версиях они похоже штатно закладываются.
    • maxx2000
      @davidovka я их сразу ссыпаю в TEMP,  в тех что живы нет отметок о создании current_session.pro. Интересно что сам current_session.pro создаётся, но не обновляется дата в отличии от даты модели. Может быть и вправду менял какие нить настройки и забывал сохранить
    • Ahito
    • maxx2000
      т.е. доверять разработчикам оснований нет. Ясно-понятно
    • clavr
      все так и было до 2024 версии. размеры не импортировались. теперь вот в 2024 так нельзя. может где-то в настройках поменять что нужно? все перерыл, пока не нашел
    • arsenev
      Первый свободный номер инструмента   int list $toolnumblist = extract(folder('TOOL'), 'Tool.Number.Value') int $newToolNumb = 1 while member( $toolnumblist, $newToolNumb) {     $newToolNumb = $newToolNumb + 1 } Message Info 'Первый свободный номер инструмента - ' + $newToolNumb     Инструменты с повторяющимися номерами   int list $toolnumbers = extract(folder('tool'),'Number.Value') int $i = remove_duplicates($toolnumbers) string $op = '' foreach $n in $toolnumbers {     string list $names = extract(filter(folder('tool'),'this.Number.Value == "' + $n + '"'),'Name')     if size($names) > 1 {         $op = $op + 'Инструменты с повторяющимся номером T ' + $n + CRLF         foreach $name in $names {             $op = $op + $name + CRLF         }         $op = $op + CRLF     } } message info $op     Удаление выбранного   Макрос, который проверяет тип объекта, а затем позволяет выбрать один и удалять выбранные части. Я связал это с ctrl+d.   string list $rootTypes = {'toolpath','featureset','pattern','boundary','model'} string list $selectedTypes = {} foreach $rt in $rootTypes {     if entity_exists(entity($rt,'')) {         entity $ent = entity($rt,'')         if number_selected($ent.RootType, $ent.Name) > 0 {             int $i = add_last($selectedTypes,$rt)         }     } } if size($selectedTypes) <= 0 {     return } int $index = -1 if size($selectedTypes) == 1 {     $index = 0 } else {     $index = input choice $selectedTypes 'Wich Type to remove?' } if $index != -1 {     String $cmd = 'DELETE ' + $selectedTypes[$index] + ' "' + entity($selectedTypes[$index],'').Name + '" SELECTED'         DoCommand $cmd }
    • PETR_1
      Можно переназначить правую и центральную (колесо) кнопки с помощью бесплатной программы X-Mouse Button Control (есть портабельная версия). Это переназначение будет работать только для компаса.
×
×
  • Создать...