source

VBA와 Net을 사용한 Excel 자동화의 장단점

manysource 2023. 8. 13. 09:49

VBA와 Net을 사용한 Excel 자동화의 장단점

저는 Excel에서 사용자 정의 기능/매크로의 혜택을 받을 수 있는 재무 계획 도구를 만드는 일을 맡았습니다.

저의 초기 반응은 VBA를 사용하는 것이었습니다.전에 엑셀을 운전할 때 사용한 적이 있습니다(예: 5년 전).하지만 저는 VSTO를 사용하는 것이 더 나을 것인지 궁금하기 시작했습니다.

두 가지 기술을 모두 사용한 경험이 있는 사람은 누구나 장점과 단점을 나열하여 어떤 과정이 가장 좋은지 평가할 수 있습니다.

저는 당신이 엑셀로 당신의 표준 개발을 위해 VBA를 고수하고 배우는 것을 제안하고 싶습니다.이쪽에 NET.사용.NET은 확실히 다음 단계이지만, 그것은 당신의 엑셀 개발을 훨씬 더 어렵게 만듭니다.

또한 VSTO에서는 사용자 정의 워크시트 기능("UDF")을 생성할 수 없으므로 이를 위해 VBA 프런트엔드가 필요하거나 VSTO를 사용하지 않고 관리되는 COM 추가 기능을 생성해야 합니다.이에 비해 VBA를 사용하면 거의 노력 없이 UDF를 만들 수 있습니다.

.NET을 사용하면 대부분 강력한 유형화, 완전한 OOP 기능 및 대규모 프로젝트를 구성할 수 있는 능력과 관련하여 많은 이점이 있지만 VBA는 이에 비해 엄청난 이점을 가지고 있습니다.배포와 관련하여 NET, 이는 Excel과 거래할 때 상당히 복잡합니다.NET 또는 VSTO.VBA는 또한 배우고 시작하기에 더 쉬운 언어입니다.

전반적으로 일상적인 개발을 위해 VBA를 사용하되 VB를 배우는 것이 좋습니다.프로그래밍 기술이 Excel 영역 밖에서 성장할 수 있도록 측면에 NET 또는 C#이 있습니다.결국, 당신의.NET 기술은 VBA보다 사용하는 것을 선호할 정도로 충분히 강해질 수 있지만 에 상당히 능숙해져야 합니다.앞으로 다가올 그날을 위한 NET.

(이에 대한 비슷한 의견은 Visual Studio에서 Excel 앱을 개발하면 매크로 기록의 이점을 잃게 됩니까?참조하십시오.)

편집: 아래 앤디의 코멘트에 대한 업데이트:

배포, 디버깅 및 UDF와 같은 문제는 제가 비교 정보를 찾고 있던 문제입니다.질문에 대한 답변으로 판단해 볼 때, 저는 C#에 대해 5년 이상의 경험이 있지만 VBA 기술(또는 부족함)은 10년에 3~4번밖에 나오지 않습니다.

그래요, 그래요, 당신은 말했어야 했어요!이런 질문을 하는 대부분의 사람들은 VBA 프로그래머입니다.NET. 그래서 제가 오해를 했어요.

당신의 경우 C#을 사용해야 하지만 이를 위해 Visual Studio 2010에서 C# 4.0을 사용하는 것이 좋습니다. 그러면 Excel과 같은 COM 개체 모델에서 작동할 때 필요한 구문이 크게 향상됩니다.VS 2010은 현재 베타 2에 있으며 RTM 날짜가 4월 12일로 정해져 있어 거의 다 왔습니다.

배포의 경우, 설치 패키지 등에 큰 문제가 없을 것이며 VSTO(Visual Studio Tools for Office)는 두 가지 측면에서 매우 유용합니다.

  1. 드래그 앤 드롭 디자이너를 통해 추가 기능에 대한 사용자 지정 리본 배열 만들기끌어서 놓기 디자이너가 없으면 XML을 대신 제공해야 합니다.XML은 괜찮지만 드래그 앤 드롭 디자이너는 정말로 사용할 수 있는 꿈입니다.

  2. 활용.워크시트의 NET 컨트롤입니다.이것이 귀사가 계획하고 있는 작업의 일부인지는 모르겠지만 VSTO를 통해 알 수 있습니다.워크시트에 사용할 NET 컨트롤.이 기능은 A에 매우 적합합니다.NET 프로그래머는 이러한 컨트롤이 약간 더 매끄럽게 보이고 작업할 수 있도록 특별히 설계되었습니다.그물.

안타깝게도 VSTO는 Excel 2003 이상에서만 사용할 수 있으며 Excel 2003과 Excel 2007에 대한 추가 기능을 별도로 생성해야 할 것 같습니다.그러나 VSTO를 사용하지 않고 만든 관리형 COM 애드인은 Excel 2000 이상과 쉽게 호환될 수 있습니다.마지막으로 VSTO는 UDF 생성을 지원하지 않으므로 UDF에 대한 관리형 자동화 추가 기능을 생성하거나 VSTO 기능을 호출하는 VBA 프런트 엔드를 활용해야 합니다.

전체적으로 Excel 2007 이상으로 제한할 수 있다면 VSTO로 하겠습니다.당신의 요구사항이 Excel 2003 이상이면 VSTO를 고려하겠습니다.그리고 Excel 버전 2000 이상에서 실행할 수 있어야 한다면 관리되는 COM 추가 기능을 사용할 것입니다.

UDF 지원을 위해 Excel 2002 이상에서 사용할 수 있는 관리형 자동화 애드인을 만들 것입니다.Excel 2000 이하에서 UDF가 필요한 경우 에서 COM-visible 메서드를 호출하는 VBA 프런트 엔드가 필요합니다.NET 어셈블리.

제가 보기에 이것들은 기본적인 찬성과 반대입니다.당신이 더 알아야 할 것이 있다면 제게 알려주세요.

마이크

C#에 익숙하시니 VSTO 뿐만 아니라 Addin Express(비용)와 Excel DNA(무료)도 살펴보시기를 권합니다.Addin Express에는 배포를 단순화하고, 기능과 명령을 모두 처리할 수 있으며, 자동화 및 XLL 인터페이스를 모두 사용할 수 있는 버전 중립 PIA가 있습니다(XLL은 자동화보다 훨씬 빠름).Excel DNA는 XLL 인터페이스에 더 최적화되어 있지만 워크시트 기능을 개발하는 데 유용합니다.

고지 사항:저는 Addin Express 또는 Excel DNA와 아무런 관련이 없습니다.

저는 이것을 엑셀 내에서 VBA로 코딩하는 것이 본질적으로 잘못된 것이라고 생각하지 않습니다.Excel의 프로세스 공간에서 실행할 수 있는 장점이 있으며 Excel 객체 모델과의 VBA 상호 작용은 매우 간단합니다.그러나 사용자와 사용자는 정말로 도구를 Excel 추가 기능으로 생각해야 합니다.

도구에 Excel의 ID와 별도의 ID를 지정하려면 자동화를 선택해야 합니다.속도가 약간 느리고("프로세스가 중단되었습니다") 객체 모델이 약간 덜 깨끗하지만 도구 자체의 ID가 있습니다.

(C#을 사용하고 VS2010 및 C#4를 사용하는 옵션이 있는 경우 업그레이드할 가치가 있는 자동화 기능이 많이 향상되었습니다.)

여기에 많은 훌륭한 답변들이 있기 때문에 저는 아직 만들어지지 않은 요점을 말씀드리겠습니다.저는 VBA를 고수할 것입니다.여러 가지 이유가 있지만, 저의 주요 요인은 다음과 같습니다.

  • 클라이언트 측에 지정된 버전의 .이 필요하지 않습니다.네트 설치됨

그러나 VBA는 확실히 그다지 보호되지 않으므로 숨기려는 코드가 있으면 함께 사용하는 것이 가장 좋습니다.아마 인터넷일 겁니다.

스프레드시트Gear for.NET을 사용하면 Excel 호환 스프레드시트 구성 요소를 에 추가할 수 있습니다.NET(WinForms, ASP).COM Interop의 단점(성능, 사용 편의성)이 없는 NET 등) 애플리케이션.

스프레드시트Gear Windows Forms 스프레드시트 컨트롤에 대한 자세한 내용은 여기에서 라이브 ASP를 참조하십시오.NET 샘플을 여기에서 다운로드하고 직접 사용해보고 싶다면 여기에서 무료 평가판을 다운로드하십시오.

고지 사항:스프레드시트Gear LLC 소유

언급URL : https://stackoverflow.com/questions/2489846/pros-and-cons-of-automating-excel-using-vba-vs-net