왜 Microsoft가 .NET을 직접 통합하는 대신 여전히 VBA를 Office 제품에 제공합니까? [닫은]


12

VBA 코드에서 .NET 코드를 호출하는 것이 가능하다는 것을 알고 있지만 왜 VBA가 계속 존재합니까? 내가 생각할 수있는 유일한 이유는 레거시입니다.

방금 정렬해야 Scripting.Dictionary했고 필요한 코드 양이 무서웠습니다.

IDE는 Visual Studio 2003처럼 보입니다. 그리고 줄을 바꾸거나 컴파일 오류로 인해 경고를받는 것처럼 약간의 세부 사항도 있습니다. 또는 두 개 이상의 스프레드 시트를 열면 "VBAProject"가 혼합되어 실제로 혼동됩니다.

전체 모듈 / 클래스 모듈 / 양식 나누기는 실제로 그렇게 나쁘지는 않지만 양식에 직접 논리를 쓰거나 모든 것을 처리하는 하나의 거대한 모듈을 사용하여 매번 끝납니다.

Alt + F11을 누르고 C #을 해킹 할 수없는 이유는 무엇입니까?


11
"내가 생각할 수있는 유일한 이유는 유산이다." 그리고 그것은 당신에게 충분하지 않습니까?
Euphoric

3
Microsoft는 레거시 응용 프로그램의 왕이자 이전 버전과의 호환성입니다 ... 우리가 이야기하고있는 Microsoft라는 점에서 다른 대답은 놀랍습니다.

2
@Kiril "우리는 항상 그렇게했을 것"이 아닐 가능성이 높습니다. 아마도 "우리는 이전 버전과의 호환성을 잃어 버릴 때 얻는 이익과 잃어 버릴 정도를 비교하여 그만한 가치가 없다는 것을 알았습니다."
Doval

1
@Kiril-VBA 대신 ".NET"을 사용하여 Office를 배송하라는 질문이 있습니다. 이를 포기해야합니다.
JeffO

3
@ Kiril : 매우 까다로운 캐릭터도 문서에 dll을 포함시키는 것이 매우 행복하지만 이익을 얻지는 못합니다.
whatsisname

답변:


15

Microsoft Office에는 프로그래밍 방식으로 기본 동작을 변경 / 향상시킬 수있는 여러 가지 방법이 있습니다. VBA는 문서 내 스크립팅을위한 전투 테스트를 거쳤으며 널리 보급 된 언어입니다. 많은 사무실 사람들이 VBA를 알고 사용하지만 C #과 같은 더 복잡한 프로그래밍 언어는 모릅니다. 고객이 새로운 언어 등을 배우고 나서 비즈니스에 중요한 일을하는 오래된 매크로 지원 문서를 다시 작성해야한다면 Office는 그다지 팔리지 않을 것입니다. 이전 버전과의 호환성이 핵심 기능입니다!

Office 용 전체 .NET 스택에는 일부 종속성 관리 (dll : s 등)가 필요할 수 있으며 간단한 작업을 위해 관리하기가 무거워 질 수 있습니다. 경량 스크립팅의 대안은 아닙니다. VSTO는 C #을 사용할 수 있지만 더 무거운 플러그인 개발주기의 가격으로 제공합니다.

Microsoft의 프로그램 관리자가 여기 에 대해 작성 했습니다 . VBA가 아직 소규모 스크립팅 목적으로 존재하고있을 것이라는 것이 분명합니다.


이 기사의 설명은 매우 좋습니다. 감사.
Kiril

6
전직 스 태퍼로서 일부 고객은 스피드 다이얼에서 게이트 / 볼머 / 나 델라 등을 사용할 수 있도록 많은 돈을 지불하고 정기적 인 채팅을 할 수 있으며 VBA는 VBA 동작을 방해하는 변경 사항 (특히 Excel에서)에 대해 VBA가 중요하다고 간주합니다. 그리고 심지어 버전들 사이에서도) 예외적으로 빠르게 주목을받습니다. 또한 미숙련자를위한 것도 아닙니다. 그것을 사용하는 전문 개발자 군대가 있습니다. C #은 VBA에서 실무 지식으로 널리 사용됩니다.
James Snell

이 주장은 MS가 VB6을 더 이상 사용하지 않는 것을 막지 못했습니다.
Mike Lowery

3

글쎄요, 그 대답은 엄격히 "레거시"가 아닙니다. 대답은 VBA가 VB6 또는 VB.Net이 아니라 VBA입니다. 분리되었지만 관련 언어 VBA를 VB.Net으로 바꾸면 필연적으로 많은 문서가 깨질 것입니다.

VBA를 VB.Net으로 교체하면 상당량의 주요 제품 사용자에게 데이터 손실이 발생할 수 있습니다.

그리고 VBA의 목표 시장은 프로그래머가 아닙니다.


7
VBA는 VB6의 매우 가까운 사촌입니다. 유일한 중요한 차이점은 API와 관련이 있습니다. 즉 Excel 또는 Word 개체 모델 대신 VBForms입니다. 이러한 차이점이 없으면 VBA 코드를 VB6에 복사 / 붙여 넣기 (또는 그 반대로) 할 수 있으며 여전히 99 %의 시간 동안 작동합니다.
Robert Harvey

3
VBA 및 VB.Net/C#에 대한 지원은 상호 배타적 일 필요는 없습니다.
Joel Coehoorn

2

사람들이 Office를 구입하는 주된 이유는 매크로와 VBA가 포함 된 기존의 모든 문서와의 호환성을 유지하는 것이므로 VB6 군중과 같이 사용자를 처리하고 지시하는 것은 매우 용감한 Microsoft입니다 빨라서 .NET에서 코딩을 시작하십시오. # 1 사용자 음성 요청을 살펴보십시오 !

나는 LibreOffice 직원들이 무의식 상태로 자신을 응원 할 것이라고 상상합니다!

VBA는 "프로그래밍"이 아닌 Office의 생산성을위한 것입니다. 문서에서 더 많은 힘을 필요로하는 날은 모든 것을 다시 작성하기 위해 프로그래머를 고용하는 날입니다. 또 다른 이유는 Visual Studios 매크로가 .NET이 아닌 이유입니다. devenv4 COM 객체를 VBA와 크게 다르지 않은 것으로 생각하십시오.


그는 그들에게 VBA를 버리지 말라고 요구하지 않았습니다. 그는 추가 옵션으로 .Net을 요구합니다.
Joel Coehoorn

1

나는 레거시인기 사이에 약간의, 그러나 중요한 차이점이 있다고 생각 합니다. 그리고 내가 계약을 많이 맺었을 때 VBA가 대단한 인기를 얻었습니다. :) 프로그래밍에 대해 잘 모르지만 "엑셀 자키"에 대해 얼마나 많은 계약을했는지 말할 수 없습니다. 삶이나 죽음의 문제처럼 VBA를 분쇄 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.