전체 글

식자재 유통회사 재직중인 일반인 입니다. 회사에서 사용하는 발주 관리 프로그램 개발중입니다. (비전공자) 전문 프로그래머가 아닙니다.
엑셀 vba/발주관리(OLD)

발주관리#7 매입처 수정

이번 포스팅은 지난 발주관리#3에서 만들어둔 수정 버튼에 프로시저를 만들어 연결하겠습니다. 역시 지난 포스팅에서 만들었던 유저관리폼과 함께 사용하게 됩니다. 우선 수정 버튼을 눌렀을때 실행될 프로시저 입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Sub 매입처_수정() '복수셀 선택시 종료 If Selection.Count > 1 Then MsgBox "수정할 하나의 셀만 선택해 주세요!", vbCritical, "오류" Exit Sub End If 'A:C열이 아니거나 1:3행일경우 종료 If Intersect(Columns("A:C"), Selection) Is Nothing Or Not Intersect(Rows("1:..

엑셀 vba/기타

날짜를 요일로 반환받기

오늘 파일 작업을 하다 갑자기 정해진 날짜를 요일로 반환받는게 필요해서 검색해보고 이것저것 실험해보고 알게되었네요. 1 WeekdayName(Weekday(Sheets("시트1").Range("A1"), vbSunday), True) cs 시트1 시트의 A1에 날짜가 적혀있다는 가정하에 위의 코드를 사용하면 적혀진 날짜의 요일을 반환합니다. Weekday는 날짜를 요일에 해당하는 숫자로 반환해주는 명령어구요. WeekdayName는 요일에 해당하는 숫자를 요일로 반환해주는 명령어 입니다. 각 명령어를 클릭하시면 영문 설명/예제 링크로 연결됩니다. 마지막의 True 부분은 옵션인데, 예를들어 A1의 요일이 월요일이라 가정하면 True일 경우 월이라고 표시가 되고, False일 경우 월요일로 표시가 됩니다.

SQL Server(MS-SQL)

테이블 비우기 MSSQL(SQL SERVER)

예전에 필요해서 찾아봤던 내용인데 테이블 비우는 명령어 입니다. TRUNCATE TABLE [테이블명] 테이블의 모든 내용을 삭제하며, IDENTITY를 초기화 해줍니다 테이블 내용을 삭제하는 명령어는 DELETE 명령어도 있습니다. DELETE FROM [테이블명] DELETE의 경우에는 IDENTITY의 초기화는 시켜주지 않습니다. 예를들어 1,2,3이라는 일련번호가 있는 테이블을 삭제했을경우 DELETE로 삭제한후 새로운 데이터를 입력하면 일련번호가 4부터 시작을 합니다. (일련번호 자동증가 설정을 했을경우) TRUNCATE로 삭제했을때는 일련번호가 1번부터 다시 시작합니다.

엑셀 vba/기타

중복 데이터값 합산하기 #2

이전 포스팅에서 썼던 중복 데이터값 합산을 SQL을 이용해서 좀더 스마트하게 만들수 있더군요. 좌측의 데이터를 맨 우측의 양식으로 뽑아냅니다. 코드는 아래와 같습니다. Option Explicit Sub add_each_code() Dim rowsCnt As Long Dim strSQL As String, strConn As String, code As String Dim Rs As ADODB.Recordset Dim i As Integer rowsCnt = Cells(Rows.Count, "A").End(3).Row strSQL = "SELECT 코드, SUM(수량) AS 수량 " strSQL = strSQL & "FROM [$A1:B" & rowsCnt & "] " strSQL = strSQL & "..

엑셀 vba/기타

중복 데이터값 합산하기

종종 방문하는 카페에 질문글이 올라와서 한번 만들어 봤습니다. 왼쪽에 있는 데이터의 중복코드를 1개로 표시하고 각 코드의 수량을 합산해달라는 내용이었습니다. 세번째처럼 합산 표시하는 매크로를 만들어 봤어요. 코드는 아래와 같습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Option Explicit Sub add_each_code() Dim r As Long Dim rowsCnt As Long Application.ScreenUpdating = False Columns("A:B").Copy 'A:B열을 복사 Columns("E:E").Insert Shift:=xlToRight 'E열에 삽입 Application.CutCopyM..

엑셀 vba/발주관리(OLD)

발주관리#6 매입처 추가(등록)

이번 포스팅은 지난 발주관리#3에서 만들어둔 버튼에 프로시저를 만들어 연결하겠습니다. 지난 포스팅에서 만들었던 유저관리폼과 함께 사용하게 됩니다. 우선 추가버튼에 연결할 프로시저를 만듭니다. 1 2 3 4 5 6 7 8 9 10 11 '매입처등록폼 불러오기 Public Sub show_매입처등록폼() With 매입처등록폼 .StartUpPosition = 0 .Left = 400 .Top = 200 .Show '매입처등록폼 불러오기 End With End Sub Colored by Color Scripter cs 추가버튼에 매크로 연결을 해주세요. 이제 매입처등록폼에 내용을 채워줘야 합니다. 좌측 프로젝트창에서 폼>매입처등록폼을 우클릭 한뒤 코드보기를 눌러주세요. 매입처등록폼에 아래의 코드를 입력해 줍니..

엑셀 vba/발주관리(OLD)

발주관리#5 매입처 등록, 수정 폼 만들기

오늘은 지난 발주관리#3에서 만들어 두었던 추가,수정 버튼에 연결할 유저폼을 만들겠습니다. 우선 매입처등록폼 입니다. 매입처명은 textbox로 구분은 combobox로 만들어주시고 명령단추로 저장, 취소를 만들어주세요. 그다음 매입처수정폼 입니다. 번호, 매입처명은 textbox로 구분은 combobox로 명령단추로 저장, 취소를 만들어주세요. 매입처등록폼에 번호만 추가된겁니다. ㅎㅎ 매입처수정폼에서 번호 textbox의 속성에서 Enabled를 false로 설정해주세요. 일련번호가 들어가는 부분이기 때문에 수정을 할수 없게 만들어 줘야 합니다. 이번 포스팅은 조금 짧지만 여기까지 입니다. 다음 포스팅은 추가, 수정, 삭제에 해당하는 DB 제어 프로시저를 작성하도록 하겠습니다.

엑셀 vba/발주관리(OLD)

발주관리#4 DB연결, 데이터 불러오기

Alt+F11을 눌러 VBA를 열어주세요. 도구 > 참조를 선택한뒤 참조에서 Microsoft ActiveX Data Object 6.1 Libary 체크박스를 체크해주세요. 이 참조를 선택해야 DB를 연결해서 사용할 수 있습니다. 이제 엑셀 파일을 열었을때 데이터를 불러오도록 Workbook_Open() 프로시저를 설정해 줍니다. 1 2 3 4 5 Option Explicit Private Sub Workbook_Open() Call 매입처DB불러오기 End Sub cs 엑셀 파일을 열었을때 실행시켜주는 프로시저 입니다. 모듈을 하나 만들어 DataBase연결() 프로시저를 만듭니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Option Explicit..

엑셀 vba/발주관리(OLD)

발주관리#3 매입처관리 시트 만들기

이전시간에 DB에 매입처 테이블을 만들었으니 이제 매입처 테이블을 제어할 엑셀 시트를 만들겠습니다. 우선 매입처관리 시트를 만들어 주세요. 3번째 열에 A,B,C행에 각각 번호, 매입처명, 구분으로 타이틀을 적어주시구요. 위에 2개의 열을 비워둔것은 버튼을 배치하기 위함입니다. 개발도구 > 삽입 > 단추(양식 컨트롤)을 눌러 버튼을 3개 추가해주세요. 버튼의 이름을 각각 추가, 수정, 삭제로 변경합니다. 4번째 행을 선택한뒤 보기 > 틀고정 으로 틀고정을 시켜주세요. 틀고정은 굳이 안해도 상관은 없지만 매입처수가 많아지면 틀고정을 하는게 보기&관리하기 편합니다. 이걸로 기본 준비는 되었네요. 다음 포스팅에서는 DB와 연결을 시켜보도록 할께요.

엑셀 vba/발주관리(OLD)

발주관리#2 매입처 테이블 만들기

번호는 일련번호이며 ID 사양을 "예"로 선택해주면 1번부터 1씩 증가하는 일련번호가 자동으로 생성됩니다. 매입처명은 단순하게 매입처 이름. 구분은 차후 출력 설정 및 정렬을 위한 구분자 입니다. 번호는 int 매입처명과 구분은 nvarchar로 설정해주세요. nvarchar뒤어 (50)은 문자형의 길이를 나타냅니다. 즉, 50자의 문자형 데이터가 됩니다. 데이터 형식에서 문자형은 nvarchar을 사용하는데 저는 유니코드(중국어, 일본어등 외국어)를 사용하기 위해서 nvarchar을 사용합니다. 일반적으로는 varchar을 사용하셔도 무방합니다. 번호열은 기본키로 설정해 주세요. 일련번호는 기본키로 설정을 해줘야 중복 없이 데이터가 저장됩니다.

SweetCookie
엑셀 VBA 공부