• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Çözüldü Procedure too large uyarısı, ama private sub içerisinde

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

akn

Yeni Üye
Katılım
2 Haz 2023
Mesajlar
5
Çözümler
1
Aldığı beğeni
0
Excel V
Office 2016 TR
Konu Sahibi
Merhabalar. Excel makrolarda yeniyim. İş yerimde işleri kolaylaştırmaya çalışıyorum. Procedure too large uyarısı aldım ama private sub içerisinde çalışıyorum. bunun içinde call komutu ile kodu bölme imkanım var mı? ya da alternatif bir yol kullanılabilir mi?
 
Çözüm
call komutu ile bölünebiliyormuş :) chatgpt ile sabahtan beri atışıyorum. yardımlarınız için çok teşekkürler. tek yapmam gereken call ile çağırdığım yeni sub ları word.document şeklinde belirtmekmiş.

kod kısaca bu şekilde tamamlandı:



HTML:
Apache config:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Merhaba.
Koda yazılanlarmı uzun olduğu için hata veriyor?
Belki sub içinde parametre kullanıp kısaltılabilinir.
Örnek eklerseniz bakarız.
 
Konu Sahibi
Excel den şablon worde veri gönderip rapor çıkartıyorum. adım adım ilerledim. sorunsuz çalıştı. sonra kodu uzattım. ama çok fazla eklenecek yer var. çok fazla komut oldu mecburen. biraz bakınca call komutu ile sub ları bölebileceğimi gördüm ama kendim private sub da çalıştığım için uygulayamadım.
yaptığım iş büyükçe bir excel tablosu doldurup, değişmez verilerin olduğu word şablonuna belirtilen tuşa basarak verileri aktarmak.

doc.Bookmarks("ilce").Range.InsertAfter Cells(5, 1)

içerikte tek kullandığım komut bu. bunun gibi çok fazla satır var. satırlar artınca hata aldım. private sub düzelmeyecekse,
private sub harici aynı işi farklı bir yol ile yapabilir miyim?
 
Private sub içerisindeki kodlarınızı modül içerisine almayı denediniz mi?
Örnek;
uygulamanızda worde veri gönderme kısmını bir modül içerisinde Sub WordeGonder() yordamı ile kodlayın.
Daha sonra hangi işlemi yaptıracaksanız aynı modül içerisine Sub YordamAdi() içerisine kodlayın.
Bunu bu şekilde fazlalaştırabilirsiniz.
Bu yordamların içerisinde ortak değişkenler (Sayfa adı, word dosyası adı, gibi ) varsa, değişkenleri prosedür dışında Public olarak belirtip, Sub Degiskenler() prosedürü ile ilk önce çağırabilirsiniz.

Public SayfaAdi as worksheet
Public Word as string

Sub Degiskenler()
Set SayfaAdi = thisworkbook.worksheets("SayfaAdi")
Word = "c:\word\word.doc"
end sub

Private Sub içerisine ;

Private Sub Bilmemne()
Degiskenler
WordeGonder
YordamAdi
end sub
yazdığınızda tüm yordamlar sırasıyla çalışacaktır.
 
Konu Sahibi
Hocam muhtemelen basit bir çözümü var. Yardım için çok teşekkür ederim ama bilmediğim için kafamda bağlayamıyorum. kod aşağıda ki gibi. sadece yüzlerce satır bookmarks var. amacım butona tıkladıktan sonra raporu elde etmek. bu yüzden de benim bu bookmarksların hepsini aynı şablonu etkilemesini sağlayarak tek bir yeni word çıktısı olarak alabilmem gerekiyor. bookmarks fazlalığını bir şekilde bölmeliyim.


HTML:
JavaScript:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Dosyanızı ekleyin word ilede bölelim.Array ile yapılır döngülerle.
 
Konu Sahibi
call komutu ile bölünebiliyormuş :) chatgpt ile sabahtan beri atışıyorum. yardımlarınız için çok teşekkürler. tek yapmam gereken call ile çağırdığım yeni sub ları word.document şeklinde belirtmekmiş.

kod kısaca bu şekilde tamamlandı:



HTML:
Apache config:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Çözüm
Böylede fazla bence ve o şekildede gereksiz.Her neyse örneğinizi eklerseniz bskarız değilse o şekilde kullanın abey.
 
Böylede fazla bence ve o şekildede gereksiz.Ben bari kısaltayım sizden örnek geleceği yok.Bu durumda deneyemen konu uzayacak.Kısaca böldüğünüz tam uygun değil.
 
Konu Sahibi
hocam gönderdiğim örnekti zaten. iş yeri ile ilgili bilgiler içerdiğinden daha fazlasını paylaşamam doğru olmaz. bende de yaklaşık 600 satırı bölerek çalıştırdığı için rahat geldi açıkcası
 
sub parca2(doc As Word.Document)
doc.Bookmarks("ilce").Range.InsertAfter Cells(5, 1)
end sub
Böyle bir tane yeter içine üç parametre alıp ve bunun içindekini silip.Neyse birazdan yollarım eve geçince hazırlayıp.
 
Son düzenleme:
Geri
Üst