2010-09-03 20 views
31

İşlemler yapmak için excel'te yaklaşık 25 sayfayı geçmem gerekiyor. Vba kullanarak bunu yapıyorum ve gerçekten yavaş buluyorum, dolayısıyla C# kullanıp kullanamayacağımı bilmek istedim. Bu süreci hızlandırmamda yardımcı olur.C# için bir makro yazabiliriz

+0

C# yi doğrudan makroda kullanabileceğinizi sanmıyorum. Sayfa ile çalışmak için C# ile yazılmış bir AddIn oluşturabilirsiniz. İşlem hızlandırırsa, yaptığınız işi açıklayana kadar işleminiz yanıtlanamaz. – Khh

+0

@gizgok: Excel ile oluşturulmuş merhaba, lütfen kabul cevabım – abatishchev

cevap

-1

Tam olarak hangi işlemleri yapıyorsunuz? Öncelikle VBA kodunu kendiniz yazmanız için bir etkinlik yapmanız gerekmez. Bir çalışma kitabındaki bir makroyu basitçe kaydedebilir ve C: \ Program Files \ Microsoft Office \ Office12 \ Xlstart'a kaydedebilirsiniz. Excel bir makroyu kaydeder ve açtığınız tüm sayfalarda kullanılabilir hale getirir.

Ayrıca, otomatik olarak oluşturulan VBA kodunu yukarıda belirtilen işlemde gereksiniminize uyacak şekilde de ayarlayabilirsiniz.

Şahsen, işi yapmak için bir C# eklentisi yazmayı düşünmüyorum. VBA, özellikle Office Nesne Modeli ile çalışmak için hazırlanmış bir dildir. Eğer bu yeterince hızlı çalışmazsa, hangi işlemi yaptığınıza bakmanız gerekir.

Excel Nesne Modeli'ni işlemek ve sürdürmek için çok fazla bir C# eklentisi oluşturmayı düşünüyorum. Ayrıca büyük bir öğrenme eğrisi de içerecektir. VBA makro gibi Excel çalışma kitabından

+1

Makrolar macro_ özelliği gereksiz _activate_ ve _select_ komutların bir ton sorunu nedeniyle ** ** çok yavaş olma eğilimindedir _record. Bir şeyin nasıl yapılabileceğini görmek için kısa bir makro kaydetmek yararlı olabilir, ancak yürütme hızı endişe duyuyorsa, kaydedilen makroyu yeniden yazmanız gerekir. – riderBill

28

Çağrı C# - yapabilirsiniz C# uygulamasından değil

Erişim Excel çalışma kitabı - yapabilirsiniz. Bu, Microsoft Visual Studio Araçları için Office (VSTO)

+40

Yoda gibi konuş - –

+0

yaparsın Bu kabul edilen cevap olmalı – Arijoon

+0

Katılmıyorum. Bir makro aracılığıyla bir (C#) web servisini arayabilirsiniz. Aynı şey webapi içinde yazılmış huzurlu uç noktaları için de geçerli olduğunu düşünüyorum ... – cs0815

7

olarak adlandırılır VSTO kullanarak geçerli VBA makrosuna C# eşdeğerini yazabilmenize rağmen, performans açısından önemli bir fark yaratabileceğinden çok şüphe duyuyorum. Her iki durumda da, aynı Excel COM nesnelerini işlemiş olursunuz ve yürütme süresinin çok benzer olması olasıdır. Üste |

Performansınız, temel olarak Excel nesnelerini işlemek için kullandığınız tekniklere bağlı olacaktır. Basit bir örnek olarak, Excel Aralığından 2 boyutlu bir diziye değerleri tek bir deyimde atayabilirsiniz: bu, koddaki satır ve sütunlar arasında yinelemekten ve değerleri dizinize tek tek kopyalamaktan çok daha hızlıdır.

Çok yavaş bulduğunuz VBA kodunun bitlerini yayınlamanızı ve performansınızı iyileştirme konusunda ipuçları almanızı öneririz.

4

C# içinde bir Excel otomasyon komutu yazmak için benim ESharper eklenti deneyebilirsiniz. Ayrı bir C# uygulaması veya bir eklenti oluşturmaktan daha kolaydır ve performans optimizasyonu için daha fazla seçenekle hem Excel nesne modeline hem de Excel C API'sine erişebilirsiniz.