Visual Basic 6.0과 VBA의 차이점


208

둘의 차이점은 무엇입니까? 나는 항상 VBA가 VB의 다소 '파괴 된'버전이라고 생각했지만 친구가 다른 날에 물었을 때 실제 차이점이 무엇인지 전혀 몰랐습니다.

또한 예를 들어 Excel을 사용하면 VB 또는 VBA입니까?

답변:


175

거의 모든 프로그래밍 목적으로 VBA와 VB 6.0은 동일합니다.

VBA는 프로그램을 실행 가능한 바이너리로 컴파일 할 수 없습니다. 프로젝트를 포함하고 실행하려면 항상 호스트 (예 : Word 파일 및 MS Word)가 필요합니다. VBA를 사용하여 COM DLL을 만들 수도 없습니다.

그 외에도 IDE에는 차이가 있습니다. VB 6.0 IDE는 비교할 때 더 강력합니다. 반면 VBA에서 호스트 응용 프로그램을 긴밀하게 통합했습니다. 응용 프로그램 전역 개체 (예 : "ActiveDocument") 및 이벤트는 선언없이 사용할 수 있으므로 응용 프로그램 별 프로그래밍이 간단합니다.

그럼에도 불구하고 Word를 시작하고 VBA IDE를로드하고 Word와 관련이없는 문제를 해결하는 데 방해가되는 것은 없습니다. VB 6.0이 (기술적으로) 할 수있는 일이 있고 VBA가 할 수없는 일이 있는지 확실하지 않습니다. 그래도 MSDN에서 비교 시트를 찾고 있습니다.


7
microsoft.com 페이지에 간결한 비교 페이지가없는 것 같습니다. 물론 VBA와 함께 제공되지 않는 COM 개체에 대한 참조를 만들지 않는 한 VB 6.0 코드는 VBA에서 변경되지 않고 실행된다고 말할 수 있습니다.
Tomalak

7
VBA와 Vb6은 동일한 dll 파일을 사용하므로 코드가 둘 중 하나에서 실행됩니다. 그러나 VB6에는 VBA에없는 Printer 객체와 같은 것이 있으며 그 이유를 모르겠습니다. 그렇지 않으면 기본 언어에는 차이가 없다고 생각합니다.
Dick Kusleika 2016 년

46
그렇기 때문에 Office 문서를 열면 실행 파일을 열 때와 거의 동일한 위험이 따릅니다.
Oorang 2016 년

13
VB에는 프린터 컬렉션 외에 클립 보드, 스크린 및 앱 개체도 있습니다. 양식 패키지는 VB에서 창 컨트롤을 피하기 위해 벗어나야하기 때문에 완전히 다릅니다. 그러나 VBA에서는 컨트롤이 대부분 창에 없기 때문에 hWnd 지향 API 호출을 사용하기가 훨씬 어렵습니다. 또한 컨트롤에 대해 VB에서 직접 작성하여 VBA와 다른 곳에서 사용할 수 있습니다. 다른 많은 틈새-개체 브라우저를 참조하십시오 (IDE에서 F2를 누름).
Karl E. Peterson

3
이것은 구식입니다. VBA는 64 비트 데이터 유형 (LongLong, LongPtr) 및 추가 변경 사항을 지원하여 VBA 7로 업데이트되었습니다. VB는 버전 6에서 중단되었으므로이 새로운 기능을 지원하지 않습니다. 이 답변 은 더 많은 변경 사항에 대해 설명합니다. 요컨대, VB는 할 수 없지만 VBA는 할 수없는 일이 있습니다.
Erik A

47

VBA는 Visual Basic for Applications의 약자 이며 VB의 작은 "응용 프로그램"스크립팅 형제입니다. VBA는 실제로 Excel뿐만 아니라 다른 사무실 응용 프로그램에서도 사용할 수 있습니다.

VB를 사용하면 VBA에서는 불가능한 독립 실행 형 Windows 응용 프로그램을 만들 수 있습니다.

그러나 개발자는 해당 응용 프로그램을 자동화하기위한 스크립팅 언어로 VBA를 자체 응용 프로그램에 "포함"할 수 있습니다.

편집 : VBA FAQ에서 :

Q. Visual Basic for Applications 란 무엇입니까?

A. Microsoft VBA (Visual Basic for Applications)는 개발자가 Microsoft Visual Basic의 모든 기능을 사용하여 사용자 지정 솔루션을 구축 할 수 있도록 설계된 포함 가능한 프로그래밍 환경입니다. VBA를 호스팅하는 응용 프로그램을 사용하는 개발자는 응용 프로그램 기능을 자동화하고 확장하여 사용자 지정 비즈니스 솔루션의 개발주기를 단축 할 수 있습니다.

VB.NET은 VB와의 구문 만 공유하는 다른 언어이기도합니다.


9
실제로 Microsoft는 VB.Net을 "Visual Basic"이라고합니다. msdn.microsoft.com/en-us/vbasic/default.aspx를 참조 하십시오 .
DOK

19
예. 그것은 Google을 통해 VB 또는 VBA 관련 도움을 찾을 때마다 머리카락을 꺼내고 싶어한다는 사실입니다. 바보 마케팅 결정.
Tomalak

8
@Tomalak : 그게 내가 방금 주목 한 이유 는 ;-)
fretje

2
@DOK : 그렇습니다. 그러나 VB.NET이 "우리 개발자"가 VB6 또는 이전 버전으로 알고있는 Visual Basic 이외의 언어라는 사실은 바뀌지 않습니다.
fretje 2016 년

4
@j_random_hacker이 경우 MS는 VB.Net을 VB의 변형으로 처리하는 것처럼 느껴집니다. 적어도 Visual Studio VB 페이지를 기반으로하는 것은 정확하지 않습니다. 이상하게도이 위키 기사는 MS Visual Studio 페이지보다 더 많은 정보를 제공합니다 . en.wikipedia.org/wiki/Visual_Basic_.NET 그러나 MSDN 포럼 질문은 다음과 같은 차이점을 적어도 다루는
JackOrangeLantern

41

다음은 이전 질문에 대한보다 기술적이고 철저한 답변입니다. VBA (Visual Basic for Applications)와 .NET 이전의 Visual Basic은 유사한 언어가 아니라 동일한 언어입니다. 구체적으로 특별히:

  • 그것들은 같은 스펙을 가지고 있습니다 : 언어에 포함 된 것과 그 의미에 대한 구현 독립적 인 설명. 여기에서 읽을 수 있습니다 : [MS-VBAL] : VBA 언어 사양
  • 그들은 동일한 플랫폼을 가지고 있습니다 . 둘 다 Microsoft P-Code로 컴파일 되며, dll msvbvm [x.0] .dll에 구현 된 것과 동일한 가상 머신에 의해 실행됩니다.

에서 내가 건너 온 오래된 VB 참조 책 'VBA는'항상 언어 자체의 이름이었다 지난해, 저자 (폴 맥스)도 독립 실행 형 응용 프로그램에서 또는 MS Office와 같은 임베디드 상황 (에 사용 여부, 주장 ) :

"더 나아 가기 전에 기본 요점을 명확히하겠습니다. VBA (Visual Basic for Applications)는 VB (Visual Basic)에서 프로그래밍하는 데 사용되는 언어입니다. VB 자체는 개발 환경입니다. 해당 환경의 언어 요소는 VBA입니다. "

사소한 차이

호스팅 된 독립형 및 독립형 : 실제로 대부분의 사람들이 "VBA"라고 말하면 구체적으로 "MS Office에서 사용되는 경우 VBA"를 의미하고 "VB6"은 "VBA6"이라고 말하여 독립형 VBA의 마지막 버전에 사용됩니다. 컴파일러 (예 : Visual Studio 6) ". MS Office와 함께 번들로 제공되는 IDE 및 컴파일러는 Visual Studio 6과 거의 동일하지만 독립 실행 형 dll 또는 exe 파일로 컴파일 할 수 없다는 제한이 있습니다. 이는 임베디드 VBA 프로젝트에 정의 된 클래스는 등록되지 않은 COM 소비자가 액세스 할 수 없음을 의미합니다.

지속적인 개발 : Microsoft는 선택한 플랫폼으로 .NET 런타임으로 전환하면서 Visual Studio 6을 사용하는 독립형 VBA 컴파일러의 생산을 중단했습니다. 그러나 MS Office 팀은 계속 VBA를 유지 관리하고 MS Office 2010부터 새로운 VM (현재는 VBA7.dll이라고 함)을 사용하여 새 버전 (VBA7)을 출시했습니다. VBA7의 주요 차이점은 64 비트 버전으로, 특히 외부 API 호출과 관련하여 둘 사이의 차이점을 처리하기 위해 몇 가지 기능이 향상되었습니다.


2
나는 Lomax의 책에서 똑같은 인용문을 기억하지만,이 포럼, Wikipedia 등에 반대되는 다른 모든 진술을 주면 누가 옳고 불일치하는지 궁금해합니다! Lomax는 또한 (3 페이지) "VBA는 VB 응용 프로그램을 만들거나 Word 또는 Excel에서 일부 작업을 자동화하기 위해 사용하는 언어와 동일합니다."라고 썼습니다. 또한 "VBA는 호스팅 언어이며 VB 개발 도구 제품군의 일부입니다."
EJ Mak

1
VB6에서 도움말을 선택하면 VBA 언어 참조로 이동하십시오. VB6은 Word와 마찬가지로 VBA 언어를 호스팅합니다. 응용 프로그램 객체는 전역 객체이므로 (자동화 표준). VB6은 독립형 프로그램에 적합한 App 객체를 제공합니다. Word는 Word 매크로에 대한 App 개체를 제공합니다. 언어는 동일하며, 누락 된 항목에 대한 참조는 VB6 프린터 개체와 같은 제공된 개체를 참조하는 것입니다. 언어의 일부가 아닌 호스트의 개체입니다.
ACatInLove

15

VBA를 VB-Classic (VB6 ..) 또는 VB.NET과 비교 하시겠습니까?

VBA (Visual Basic for Applications)는 Microsoft Office 응용 프로그램에 포함 된 vb- 클래식 기반 스크립트 언어입니다. 언어 기능은 VB5의 언어 기능과 비슷하지만 (일부 내장 기능이 거의 없음) 생각합니다.

VBA 스크립트를 작성한 사무실 문서에 액세스 할 수 있으므로

  • 매크로 작성 (= 사무실에서 반복 작업이 거의없는 자동화 된 루틴)
  • 엑셀 셀 공식을위한 새로운 기능 정의
  • 사무실 데이터 처리

예 : 엑셀 셀의 값 설정

ActiveSheet.Cells("A1").Value = "Foo"

VBC 및 -.NET은 스크립트 언어가 아닙니다. VBA로 할 수없는 별도의 IDE로 독립 실행 형 응용 프로그램을 작성하는 데 사용합니다 (VBA- 스크립트는 Office에 "존재")

VBA는 VB.NET과 관련이 없습니다 (유사한 구문 만 있음).


11

실제로 VBA를 사용하여 DLL을 컴파일 할 수 있습니다. Office 2000 및 Office XP Developer 버전에는 COM 추가 기능으로 사용할 DLL을 만드는 데 사용할 수있는 VBA 편집기가 포함되어 있습니다.

이 기능은 VSTO (VS Tools for Office) 소프트웨어의 출현으로 이후 버전 (2003 및 2007)에서 제거되었지만 VSTO (또는 VS.Net)를 사용하지 않고도 비슷한 방식으로 COM 추가 기능을 만들 수 있습니다. VB6 IDE 사용.


10
이 기능은 제거되지 않았습니다. Microsoft는 이후 버전을 지원하기 위해 "Office XP Developer"를 업데이트하지 않았습니다. 여전히 개발자를 설치할 수 있으며 문제없이 작동합니다. Microsoft에서는 지원하지 않습니다. 2003/2007과 함께 제공되는 VBA는 여전히 XP / 2002와 동일한 VBA 버전이기 때문입니다.
AMissico

6

VBA입니다. VBA는 Visual Basic for Applications를 의미 하며 Office 문서의 매크로에 사용됩니다. VB.NET 기능에 액세스 할 수 없으므로 VB6의 수정 된 버전과 비슷하며 추가 기능 (예 : Excel 용 VBA의 워크 시트)을 사용할 수있는 추가 기능이 있습니다.


7
아니요, VBA는 VB5 / 6의 수정 된 버전이 아니라 하위 집합입니다. VB5 / 6 IDE에서 Object Browser를 살펴보면 사용하고 남용 할 수있는 완전한 VBA 객체 라이브러리를 볼 수 있습니다. 즉, VBA에는 기본적으로로드되는 추가 객체 라이브러리가 있으며 기본적으로 전역 환경을 제공하는 호스트 객체와 관련된 전역 객체를 제공합니다.
Karl E. Peterson

5

VB는 언어가 아닙니다 . VB는 Office가 VBA를 호스팅하는 것처럼 VBA를 호스팅하는 프로그램입니다. VB는 Word 및 Excel과 마찬가지로 App 개체 집합이며 Office와 마찬가지로 양식 패키지입니다.

따라서 VB에서만 VBA 코드를 작성할 수 있습니다.

추신 : 이 정보는 VB 에 대한 VB 질문 페이지 의 정보 탭에 있습니다.

VBA 정보에서

VBA 6은 1998 년에 출시되었으며 Office 2000-2010, AutoCAD, PI Processbook 및 독립형 Visual Basic 6.0 등 수많은 라이센스 호스트를 포함합니다.


3
이 답변은 잘못되었습니다. VBA는 VB6이 아니며 많은 기능을 공유하는 개별 엔티티입니다. 그 짧은 인용문은 아무 것도 증명하지 못합니다. 호스트에서 실행되기 때문에 언어가 아니라고 말하면 JavaScript와 같은 언어를 언어 이외의 언어로 비난하는 것은 사실이 아닙니다. 또한 VB6 프로그램을 독립 실행 형 프로그램으로 컴파일 할 수 있으므로 호스트 외에 Windows가 필요하지 않습니다.
Erik A

@ErikA 아니요 당신은 그들이 말하는 것을 오해했습니다. VB6에서와 같은 VB는 Office 응용 프로그램과 마찬가지로 VBA를 실행하는 호스트 응용 프로그램입니다. VB6은 바이너리를 해제하여 독립형을 만들 수있는 응용 프로그램입니다. 세부 사항을 설명하는 다른 답변이 있습니다.
typedef Miles_Williams MILO

4

VBA는 VBA (Visual Basic For Applications)의 약자이며 Office Suite에서 사용하기위한 Visual Basic 구현입니다.

차이점은 VBA가 Office 문서 (Office 기능)에 포함되어 있다는 것입니다. VB는 응용 프로그램 개발을위한 아이디어 / 언어입니다.


1

VB (Visual Basic은 최대 6.0)는 VBA (Visual Basic for Applications)의 상위 집합입니다. 나는 다른 사람들이 이것에 대해 회피하는 것을 알고 있지만 VBA의 의미 (즉, 어휘)가 VB6에 포함되어 있기 때문에 (Office 제품과 관련된 객체 제외) VBA는 VB6의 하위 집합입니다. 구문 (즉, 단어가 작성되는 순서)은 VBA에서 VB6에서와 동일하지만 VBA 또는 VB6에서 사용 가능한 오브젝트는 목적이 다르기 때문에 차이점이 다릅니다. 특히 VBA의 목적은 MS Office에서 수행 할 수있는 작업을 프로그래밍 방식으로 자동화하는 것이며 VB6의 목적은 독립 실행 형 또는 MS Office 또는 Windows와 같은 다른 프로그램에서 작동 할 수있는 표준 EXE, ActiveX 컨트롤, ActiveX DLL 및 ActiveX EXE를 만드는 것입니다.


VB6은 VBA 언어를 호스팅합니다. 동일합니다. VB6은 호스트로서 Word가 호스팅 할 때와 같이 특정 개체를 제공합니다.
ACatInLove
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.