5월 25 2016
엑셀(EXCEL) – 수십만행의 자료를 특정행만큼 분리해서 엑셀 워크북 만들기
제목처럼 수십만, 수백만행의 자료를 다룰려면 속도와 메모리때문에 힘든데 이것을 특정행만큼
잘라서 워크북을 만들어 주는 기능입니다.
Sub Split_File_By_Row()
Dim wrk As Workbook
Dim sht As Worksheet
Dim cols As Integer, dcnt As Integer, WorkbookCounter As Integer
Dim Rng2Cp As Range
Dim p As Long
Dim TempStr As String, strFullPath As String
strFullPath = FileNameNoExtensionFromPath(ThisWorkbook.FullName)
TempStr = Right(strFullPath, Len(strFullPath) – (InStrRev(strFullPath, “\”)))
dcnt = InputBox(“분할할 행 갯수를 입력하세요”)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set sht = ThisWorkbook.ActiveSheet
cols = sht.UsedRange.Columns.Count
WorkbookCounter = 1
Rows(1).Delete xlUp
For p = 1 To sht.UsedRange.Rows.Count Step dcnt
Set wrk = Workbooks.Add
Set Rng2Cp = sht.Range(sht.Cells(p, 1), sht.Cells(p + dcnt – 1, cols))
Rng2Cp.Copy wrk.Sheets(1).Range(“A1”)
wrk.SaveAs ThisWorkbook.Path & TempStr & “_” & WorkbookCounter
wrk.Close
WorkbookCounter = WorkbookCounter + 1
Set Rng2Cp = Nothing
Next p
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Set wrk = Nothing
End Sub
Function FileNameNoExtensionFromPath(strFullPath As String) As String
Dim intStartLoc As Integer
Dim intEndLoc As Integer
Dim intLength As Integer
intStartLoc = Len(strFullPath) – (Len(strFullPath) – InStrRev(strFullPath, “\”) – 1)
intEndLoc = Len(strFullPath) – (Len(strFullPath) – InStrRev(strFullPath, “.”))
intLength = intEndLoc – intStartLoc
FileNameNoExtensionFromPath = Mid(strFullPath, intStartLoc, intLength)
End Function
첨부 화일 :
6월 2 2016
엑셀(EXCEL) – 불 특정한 스페이스로 분리된 셀을 스페이스 앞 뒤로 문자열 분리
업무를 진행하다 보면 참 애매한 경우가 많습니다. 갑님이 보내오신 메일의
양식을 바꾸어 달라고 할 수가 없어 을님들이 하지 않아도 될 일들을 해야할
경우인데요. 아래의 질문처럼 그냥 주문서를 엑셀로 받아서 처리하면 될 것
같은데 그냥 메일 내용속에 Text를 그냥 붙여서 오는 경우입니다.
http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3740799
——————————————————————————————
아웃룩메일로 들어온 데이터를 엑셀로 옮기고 싶은데요.
품번 수량
X4567890 20개
X4567891 20개
X4567892 20개
X4567893 30개
X4567894 20개
이런식으로 데이터가 들어오는데요.
——————————————————————————————
참 이런 것을 몇 백개씩 하루에 지속적으로 하고 계시는 것 같습니다.
시작합니다.
개발도구 > VBA Editor 열고 Module하나 삽입하시고 아래 코드를
붙여 넣습니다. 그리고 ActiveX 명령 버튼 하나 삽입하시고 매크로를
연결 시킵니다. 물론 제 블로그에 원본 자료 올려 놓으니 오셔서
내려 받고 그냥 사용하시면 됩니다.
첨부 화일 : 불 특정한 스페이스로 분리된 셀을 스페이스 앞 뒤로 문자열 분리-20160602
By vinipapa • 무른모 • 0 • Tags: 문자열 분리, 스페이스, 엑셀