프로젝트 및 실습 59

[VBA] 엑셀을 열지 않고 Userform을 실행하는 방법

VBA로 개발된 프로그램을 실행하기 위해서는 엑셀을 열어야 합니다. 하지만 자주 쓰는 매크로의 경우 이러한 과정이 귀찮을 수 있죠. VBS를 활용해서 바로 Userform을 열 수 있는 방법을 소개드리겠습니다. 참고로, exe 파일과는 다르게 해당 컴퓨터에 실행을 원하는 매크로 엑셀 파일이 존재해야 합니다. 우선 아래와 같이 간단한 계산기 프로그램을 만들었습니다. 이제 왼쪽 메뉴 중 Microsoft Excel 개체의 현재_통합_문서에 가서 다음과 같은 코드를 작성합니다. Private Sub Workbook_Open() UserForm1.Show End Sub 엑셀을 열면 바로 UserForm이 나오게 하는 간단한 코드죠? 이제 메모장을 하나 열어줍니다. 그리고 아래의 코드를 메모장에 적어줍니다. Di..

[VBA] 우클릭 Command Bar 메뉴 편집하기

엑셀뿐 아니라 많은 프로그램에서 우클릭을 통해 메뉴를 띄우고 기능을 사용할 수 있습니다. 엑셀에서는 VBA를 통해 우클릭 메뉴를 추가하고 삭제할 수 있습니다. 메뉴 추가하기 Sub AddMenu() Dim CmdBar As CommandBar Set CmdBar = Application.CommandBars("Cell") With CmdBar.Controls.Add .Tag = "My_Tag" '추가할 메뉴의 태그 .Caption = "추가된 메뉴" '추가할 메뉴의 이름 .FaceId = 137 '함께 표시할 아이콘 .OnAction = "ExecuteFn" '실행할 함수 End With End Sub Sub ExecuteFn() MsgBox "실행되었습니다" End Sub 위와 같이 코드를 작성하고 실..

[PyQt] Ctrl + KeyPressEvent 사용법

KeyPressEvent 이벤트 핸들러를 사용하면 키보드 입력을 쉽게 받아와서 특정 기능을 수행하도록 구현할 수 있습니다. 그렇다면 [Ctrl + X]처럼 Ctrl 또는 Shif와 같은 버튼과 함께 키보드 입력을 받아오려면 어떻게 해야할까요? 아래는 Ctrl + 특정 Key를 눌렀을 때 이벤트가 실행되도록 하는 예제입니다. import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QWidget class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle('KeyPressEvent..

[PyQt] Table Widget 열 너비를 Text 길이에 맞추기

Table Widget을 만들어 사용하다 보면 열 너비가 Text 길이보다 짧아 내용이 생략되는 경우가 종종 있습니다. 아래의 캡처와 같은 상황입니다. 2행 2열의 내용을 보면 "United States of America"라는 문자열을 넣어 주었는데, 기본 세팅된 테이블 열의 너비보다 문자열의 길이가 길어 생략되어 출력되는 것을 확인할 수 있습니다. 이러한 경우 단 한 가지 속성 값으로 쉽게 이를 해결할 수 있습니다. [QTableWidget].resizeColumnsToContents() 위의 코드를 붙여 넣기만 하면 자동으로 테이블 열의 너비를 문자열 중 가장 긴 텍스트에 맞춰줍니다. import sys from PyQt5.QtWidgets import * class MyApp(QWidget): d..

[PyQt] Checkbox StateChanged 시그널

Checkbox에 체크를 하거나 체크를 풀어줄 때 어떤 이벤트를 실행하고 싶다면 stateChanged 시그널을 사용할 수 있습니다. 바로 코드를 살펴보겠습니다. import sys from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox class MyApp(QWidget): def __init__(self): super().__init__() self.button1 = QCheckBox('Checkbox 1', self) self.button2 = QCheckBox('Checkbox 2', self) self.button3 = QCheckBox('Checkbox 3', self) self.checkbox_example() def checkbox_ex..

[PyQt] Tri-state Checkbox

일반적으로 체크박스를 사용하면 체크된 상태(True)와 체크되지 않은 상태(False) 두 가지를 많이 생각합니다. 하지만 PyQt에서는 아래의 사진과 같이 체크된 상태와 체크되지 않은 상태, 그리고 그 중간 상태까지 세 종류를 사용할 수 있습니다. 이를 세 가지 상태를 가지는 체크박스라 하여 Tri-state Checkbox라고 합니다. 일반적으로는 순서대로 Unchecked, Partially Checked, Checked라고 부릅니다. 예제 코드를 살펴보면서 사용법을 알아보겠습니다. import sys from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox class MyApp(QWidget): def __init__(self): super()...

[VBA] TreeView(1): File Structure 출력

TreeView를 이용해 File Structure를 출력하기 위해선 먼저 두 가지 작업을 해주어야 합니다. 1. Userform 도구 상자에 TreeView 추가하기 1. 도구 상자에서 우클릭 후 [추가 컨트롤]을 클릭. 2. "Microsoft TreeView Control, version 6.0"에 체크 후 [확인] 실행하면 도구 상자에서 TreeView를 사용할 수 있습니다. 2. Microsoft Scripting Runtime 참조하기 1. VBA 창 상단의 [도구] 탭에서 [참조]를 클릭. 2. "Microsoft Scripting Runtime"에 체크 후 [확인] 여기에 체크를 해주어야 File System과 관련된 라이브러리를 사용할 수 있습니다. 이제 본격적으로 프로그램을 만들어 보겠..

[PyQt] Qt Designer 설치 및 실행 (in Pycharm)

Qt Designer란 위지위그 방식으로 UI 화면을 손쉽게 제작할 수 있도록 도와주는 프로그램입니다. 여기서 위지위그(WYSIWYG: What You See Is What You Get)란, 화면에 나오는 내용이 출력물에 그대로 나오는 방식을 말합니다. 이번 글에서는 Qt Designer를 설치하고 실행하는 법에 대해 알아보겠습니다. 우선 파이참에서 터미널을 열어줍니다. 터미널은 Pycharm 하단에서 [Terminal] 버튼을 클릭하면 열 수 있습니다. 이제 터미널에 아래의 명령어를 작성해줍니다. pip install pyqt5 pyqt 뒤에 숫자는 본인이 사용하고 싶은 PyQt의 버전을 작성하면 됩니다. 2022년 기준 가장 최신 버전은 PyQt6입니다. 엔터를 눌러 명령어를 실행하면 다음과 같이 ..

[VBA] Choose Function

Choose 함수는 여러 argument 중 하나를 선택하는 함수입니다. 사용법은 다음과 같습니다. Choose(index, argument1, [argument2, argument3, argument4...]) index: 뒤에 작성된 argument의 위치 argument: 선택될 값. Variant 자료형이기 때문에 어떠한 값도 올 수 있다. 하나 이상의 값이 존재해야 한다. Choose 함수는 argument들 중 index의 위치에 있는 값을 반환합니다. 만일 argument의 개수를 넘어서는 index를 사용할 시 Null 값을 반환합니다. Sub Choose_Example() Debug.Print Choose(1, "Lee", 2, True, 112.3, Empty) Debug.Print C..