개발노트/VBA

[VBA] 클립보드 값 가져오기/넣기

lovvepearl 2024. 3. 29. 11:01
Function ExtractData()
	On Error GoTo RESULT

Application.ScreenUpdating = False '업데이트 방지'
Application.DisplayAlerts = False '팝업 무시'

Dim ClipboardGet As Object
Dim str As String

Set ClipboardGet = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
ClipboardGet.GetFromClipboard
str = ClipboardGet.GetText '클립보드 값 str 변수에 할당하여 가져오기'

Dim lastRow As Integer
Dim ClipboardPut As Object
Dim Data As String

lastRow = Cells(Rows.count, 2).End(xlUp).Row

Data = ""
    For i = 2 To lastRow
        grade = Range("F" & i).Value '등급'
        Name = Range("B" & i).Value '이름'
        '데이터 개행문자(Chr(10)) 구분'
        '등급과 이름은 탭(Chr(9)) 구분'
        If Data <> "" Then
            Data = Data & Chr(10) & grade & Chr(9) & Name
        Else
            Data = grade & Chr(9) & Name
    End If
Next i

Set ClipboardPut = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

ClipboardPut.SetText Data '클립보드에 넣을 값 정하기'
ClipboardPut.PutInClipboard '클립보드에 값 넣기'

ActiveWorkbook.Save '파일저장'

'업데이트 및 팝업 활성화'
Application.ScreenUpdating = True
Application.DisplayAlerts = True

RESULT:
    If Err.Number <> 0 Then
        ExtractData = "실패" & Err.Number
    Else
        ExtractData = "성공"
    End If
End Function