Macro VB aynı anda birden çok tasarımda ihracat yapmak için

alxG88

Guest
İyi sabaha,

İşimde beni kolaylaştırmak için, çoğu zaman çalıştığım operasyonları basitleştiren sağlam kenarlar için bir dizi makro yazıyorum.
göndermek istediğim sorun şu şekildedir: Her biri için, belirli bir dizi içinde bir makro yazmaya çalışıyorum.
Daha önce aynı işlemi bir seferde bir dft ile çalışan bir makro yazdım, ama şimdi bu kavramı tüm açık dftlere uzatamam.
Yazdığım kodu koydum:
Kod:
modül modülü

dim objapp as solidedgeframework. Uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama
dim objdft as solidedgedraft.draftdocument
dim filename as string
dim roadname_1 as string
dim roadname_2 as string

alt ana()
Hatada bir sonraki sefere devam ediyor

objapp = getobject (, "solidedge.application") " belirli özellikleri ile bir uygulama oluşturur

Eğer objapp bir şey değilse o zaman
msgbox ("solid kenar açık değil! Açık sağlam kenar.”, vb.
çıkış alt alt alt
Sonunda, eğer sona erirse

Eğer objapp.activedocumenttype < solidedgeframework.documenttypeconstants.igdraftdocument O zaman sonra
msgbox ("no draft belgesi açık! Bir taslak açın.", vb., "attention"
çıkış alt alt alt
Sonunda, eğer sona erirse

objdft = objapp.activedocument
Eğer objdft bir şey değilse o zaman
msgbox("no açık belge!", vb., "attention"
çıkış alt alt alt
Sonunda, eğer sona erirse

Açık draftlar olduğu sürece döngüyü takip edin
objdft.save() 'in adından önce koymak, çünkü yeni dosyalar doğru bir şekilde isim vermek istenmiştir.

Dosya adı = sol(objdft.name, len(objdft.name) - 4) sadece dosya adı ile yazılır
Yol adı_1 = "s:\ug\dxf\" yol dosyası dxf
roadname_2 = "s:\ug\dati\" dosya yolu pdf

objapp.displayalerts = false 'overwrites dosyaları otomatik olarak aynı adı sormadan

objdft.saveas (pathname_1 + dosya adı + ". + "dxf" adı ile tasarruf
objdft.saveas (pathname_2 + dosya adı + ". + "pdf" adı ile tasarruf edin

objapp.displayalerts = gerçek 'aktif pencereler uyarı mesajları

objdft.close() 'sadece pdf ve dxff'ı yarattığı taslak dosyayı kapat

objdft = Hiçbir şey
objapp = Hiçbir şey
objapp.activedocumenttype <> sağlam çerçeve çalışması.documenttypeconstants. igdraft
end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end
end modülü
Gördüğünüz gibi bir do yaratmaya çalıştım... döngüye kadar, o zaman zaman açık dft arıyor, ama işe yaramıyor: Sonuç sadece ilk aktif dft ve sonra beni her dosya için tekrar makroa başlamam.

Bana yardım edebilir misin? Nerede yanlışım?

Her şeyden teşekkürler

Alex
 
Bu işe yaramıyor çünkü "objapp = hiçbir şey" döngü döngüsü içinde.
Sonuç olarak, artık devam etmek için geçerli bir objapp yok.
Ayrıca döngü içinde objdft yüklemeniz gerekir, aksi takdirde bu da size hata verecektir.

Eğer sonra açık belgeleriniz arasında, döngünüzün erken sona ereceğini 3d modeliniz varsa.

Merhaba.
 
Cevap için teşekkürler.
Kodunuzu yönlerinizi takip ederek değiştirmeye çalıştım: Daha iyi çalışır, ancak bazen tüm dfts üzerinde operasyon gerçekleştirmiyor, ancak beni açık bırakıyor. Ne olabilir?

Bu arada size soruyorum: eğer sağlam kenarın hızlı menüsüne makro eklemek istiyorsanız, hangi ortamda onu eklemeliyim? Bunu draft ortamında koymaya çalıştım ama işe yaramıyor, sadece başladıktan sonra operasyon gerçekleştiriyor.
Kod:
modül modülü

dim objapp as solidedgeframework. Uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama
dim objdft as solidedgedraft.draftdocument
dim filename as string
dim roadname_1 as string
dim roadname_2 as string

alt ana()
Hatada bir sonraki sefere devam ediyor

objapp = getobject (, "solidedge.application") " belirli özellikleri ile bir uygulama oluşturur

Eğer objapp bir şey değilse o zaman
msgbox ("solid kenar açık değil! Açık sağlam kenar.”, vb.
çıkış alt alt alt
Sonunda, eğer sona erirse

Eğer objapp.activedocumenttype < solidedgeframework.documenttypeconstants.igdraftdocument O zaman sonra
msgbox ("no draft belgesi açık! Bir taslak açın.", vb., "attention"
çıkış alt alt alt
Sonunda, eğer sona erirse

Açık draftlar olduğu sürece döngüyü takip edin
objdft = objapp.activedocument
objdft.save() 'in adından önce koymak, çünkü yeni dosyalar doğru bir şekilde isim vermek istenmiştir.

Dosya adı = sol(objdft.name, len(objdft.name) - 4) sadece dosya adı ile yazılır
Yol adı_1 = "s:\ug\dxf\" yol dosyası dxf
roadname_2 = "s:\ug\dati\" dosya yolu pdf

objapp.displayalerts = false 'overwrites dosyaları otomatik olarak aynı adı sormadan

objdft.saveas (pathname_1 + dosya adı + ". + "dxf" adı ile tasarruf
objdft.saveas (pathname_2 + dosya adı + ". + "pdf" adı ile tasarruf edin

objapp.displayalerts = gerçek 'aktif pencereler uyarı mesajları

objdft.close() 'sadece pdf ve dxff'ı yarattığı taslak dosyayı kapat
objapp.activedocumenttype <> sağlam çerçeve çalışması.documenttypeconstants. igdraft

Eğer objdft bir şey değilse o zaman
msgbox("no açık belge!", vb., "attention"
çıkış alt alt alt
Sonunda, eğer sona erirse

objdft = Hiçbir şey
objapp = Hiçbir şey
end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end
end modülü
Teşekkür ederim.

Alex
 
Nasıl kodunuzu yapılandırıyorsun ki, döngünüz ilk non-melede biter Karşılaştığınız taslak belge.
Bir sonraki kontrole sahip olduğunuz belgeleri kapat, bu nedenle neden daha önce sona erebileceğine dair aktif bir neden haline gelir.

"do - döngü" yerine, objapp.documents üzerinde "her biri için" bir döngü yapacağım.

Merhaba.
 
Bu gibi bir şey:
Kod:
objdft = objapp. belgeler
Her objdft için objapp. Belge belgeleri
...
...
Bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki bir sonraki
Ancak bu şekilde tüm belgeleri ele alıyorum, hatta dft olmayanlar bile. Bu nedenle onu görmezden gelmek için bir talimat vermeliyim (ya da yakın) tüm dft dosyaları görmezden gelmek ve sadece dfts ummak.
Bunun demek istiyorsun?

Teşekkür ederim.

Alex
 
Kod:
Her belge için objapp. Belge belgeleri

Eğer belge.

objdft = belgesi
...

Sonunda, eğer sona erirse

Bir sonraki belge
 
Çok teşekkür ederim.
Şimdi program çalışmak gibi görünüyor ve bu şekilde yazılmıştır:
Kod:
modül modülü

dim objapp as solidedgeframework. Uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama
dim objdft as solidedgedraft.draftdocument
dim filename as string
dim roadname_1 as string
dim roadname_2 as string

alt ana()
Hatada bir sonraki sefere devam ediyor

objapp = getobject (, "solidedge.application") " belirli özellikleri ile bir uygulama oluşturur

Eğer objapp bir şey değilse o zaman
msgbox ("solid kenar açık değil! Açık sağlam kenar.”, vb.
çıkış alt alt alt

Başka bir objapp.activedocument daha sonra hiçbir şey değildir
msgbox("no açık belge!", vb., "attention"
çıkış alt alt alt

Başka bir objapp.document.type <> Katıleştirme.documenttypeconstants.igdraftdocument. O zaman sonra
msgbox ("no draft belgesi açık! Bir taslak açın.", vb., "attention"
çıkış alt alt alt
Sonunda, eğer sona erirse

Her belge için objapp. Belgelerin döngüsü açık taslaklar olduğu sürece çalışır

Eğer belge.type = solidedgeframework.documenttypeconstants.igdraftdocument O zaman sonra
objdft = belgesi
objdft.save() 'in adından önce koymak, çünkü yeni dosyalar doğru bir şekilde isim vermek istenmiştir.

Dosya adı = sol(objdft.name, len(objdft.name) - 4) sadece dosya adı ile yazılır
Yol adı_1 = "s:\ug\dxf\" yol dosyası dxf
roadname_2 = "s:\ug\dati\" dosya yolu pdf

objapp.displayalerts = false 'overwrites dosyaları otomatik olarak aynı adı sormadan

objdft.saveas (pathname_1 + dosya adı + ". + "dxf" adı ile tasarruf
objdft.saveas (pathname_2 + dosya adı + ". + "pdf" adı ile tasarruf edin

objapp.displayalerts = gerçek 'aktif pencereler uyarı mesajları
objdft.close() 'sadece pdf ve dxff'ı yarattığı taslak dosyayı kapat
Sonunda, eğer sona erirse

Bir sonraki belge

objdft = Hiçbir şey
objapp = Hiçbir şey
end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end
end modülü
Programı daha doğru hale getirmek için bana başka bir tavsiyeniz var mı yoksa iyi hissettiriyor musunuz? Hala görsel temel emi programlama ile çok fazla deneyimim yok, kim bir programın iyi taslağı için bana tavsiye vermekten daha fazla deneyime sahip.

Tekrar teşekkürler

Alex
 
Çok teşekkür ederim.
Şimdi program çalışmak gibi görünüyor ve bu şekilde yazılmıştır:
Kod:
modül modülü

dim objapp as solidedgeframework. Uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama uygulama
dim objdft as solidedgedraft.draftdocument
dim filename as string
dim roadname_1 as string
dim roadname_2 as string

alt ana()
Hatada bir sonraki sefere devam ediyor

objapp = getobject (, "solidedge.application") " belirli özellikleri ile bir uygulama oluşturur

Eğer objapp bir şey değilse o zaman
msgbox ("solid kenar açık değil! Açık sağlam kenar.”, vb.
çıkış alt alt alt

Başka bir objapp.activedocument daha sonra hiçbir şey değildir
msgbox("no açık belge!", vb., "attention"
çıkış alt alt alt

Başka bir objapp.document.type <> Katıleştirme.documenttypeconstants.igdraftdocument. O zaman sonra
msgbox ("no draft belgesi açık! Bir taslak açın.", vb., "attention"
çıkış alt alt alt
Sonunda, eğer sona erirse

Her belge için objapp. Belgelerin döngüsü açık taslaklar olduğu sürece çalışır

Eğer belge.type = solidedgeframework.documenttypeconstants.igdraftdocument O zaman sonra
objdft = belgesi
objdft.save() 'in adından önce koymak, çünkü yeni dosyalar doğru bir şekilde isim vermek istenmiştir.

Dosya adı = sol(objdft.name, len(objdft.name) - 4) sadece dosya adı ile yazılır
Yol adı_1 = "s:\ug\dxf\" yol dosyası dxf
roadname_2 = "s:\ug\dati\" dosya yolu pdf

objapp.displayalerts = false 'overwrites dosyaları otomatik olarak aynı adı sormadan

objdft.saveas (pathname_1 + dosya adı + ". + "dxf" adı ile tasarruf
objdft.saveas (pathname_2 + dosya adı + ". + "pdf" adı ile tasarruf edin

objapp.displayalerts = gerçek 'aktif pencereler uyarı mesajları
objdft.close() 'sadece pdf ve dxff'ı yarattığı taslak dosyayı kapat
Sonunda, eğer sona erirse

Bir sonraki belge

objdft = Hiçbir şey
objapp = Hiçbir şey
end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end end
end modülü
Programı daha doğru hale getirmek için bana başka bir tavsiyeniz var mı yoksa iyi hissettiriyor musunuz? Hala görsel temel emi programlama ile çok fazla deneyimim yok, kim bir programın iyi taslağı için bana tavsiye vermekten daha fazla deneyime sahip.

Tekrar teşekkürler

Alex
Bu makro olduğundan, sağlam kenarın varlığını ve kaçınabileceğiniz bir taslak belgeyi doğrulamaya başlayacaksınız.
Buna ek olarak "on hata özgeçmişini" kullanmaktan kaçınmalısınız ve ortaya çıkabilecek çeşitli hata türlerini yönetmelisiniz.

Gerçekten çeşitli taslakları bir kez kurtardığınıza kadar kapatmanızı sevmiyorum, ancak bu iş akışınızın bir parçası olduğunu hayal ediyorum.

Merhaba.
 

Forum İstatistikleri

Konular
58,521
Mesajlar
499,056
Kullanıcılar
104,110
Son Üye
ChristianR

Çevrimiçi Üyeler

Şu anda çevrimiçi üye yok.
Geri
Üst