Excel에서 범위 선택한 내용을 Python 목록 초기화 코드로 변환하는 매크로 (VBA)
개요
엑셀의 선택 범위 내용을 파이썬 목록 초기화 코드로 변환하여 클립 보드에 복사하는 VBA 코드입니다. 다음 그림과 같이 선택 영역의 선두행을 변수명, 이후의 행을 리스트의 요소로 하는 Python 프로그램을 생성합니다.
클립보드에 텍스트를 복사하는 방법에 대해서는 「 VBA 실패하지 않는 문자열을 클립 보드에 복사하는 방법 」로 소개되고 있는 코드를, 그대로 이용했습니다.
코드
선택 범위 (Range)를 Python 목록 (초기화 코드)로 변환Sub Range2PythonList()
If TypeName(Selection) <> "Range" Then
Exit Sub
End If
sCol = Selection(1).Column '範囲開始列
eCol = Selection(Selection.Count).Column '範囲終了列
sRow = Selection(1).Row '範囲開始行
eRow = Selection(Selection.Count).Row '範囲終了行
If sRow = eRow Then
Exit Sub
End If
pCode = ""
For c = sCol To eCol
pCode = pCode & Cells(sRow, c).Value & "=["
For r = sRow + 1 To eRow
v = Cells(r, c).Value
Select Case TypeName(v)
Case "String"
pCode = pCode & "'" & v & "'"
Case "Empty", "Null", "Nothing"
pCode = pCode & "None"
Case "Date"
pCode = pCode & "datetime.datetime(" _
& Year(v) & "," _
& Month(v) & "," _
& Day(v) & "," _
& Hour(v) & "," _
& Minute(v) & "," _
& Second(v) & ")"
Case Else
pCode = pCode & v
End Select
pCode = pCode & ","
Next r
pCode = Left(pCode, Len(pCode) - 1) & "]" & vbCrLf
Next c
Debug.Print pCode
SetClip (pCode)
End Sub
'クリップボードにテキストをコピー
' https://info-biz.club/windows/vba/vba-set-clipboard.html
Sub SetClip(S As String)
With CreateObject("Forms.TextBox.1")
.MultiLine = True
.Text = S
.SelStart = 0
.SelLength = .TextLength
.Copy
End With
End Sub
실행 방법
Excel을 시작하고 Alt+F11에서 VBA 코드 편집기를 시작하고 대상 통합 문서를 두 번 클릭하여 선택합니다.
VBA 코드를 작성하는 창이 열리므로 거기에 위의 코드를 복사합니다.
Excel로 돌아가서 범위를 선택한 다음 Alt+F8에서 매크로를 시작한 다음 ThisWorkbook.Range2PythonList를 선택하여 실행합니다.
선택 영역의 내용이 파이썬 목록의 초기화 코드로 변환되어 클립보드에 복사됩니다. 그런 다음 적절한 편집기에 붙여서 사용하십시오 (필요한 경우 import datetime
를 추가하십시오).
참고 자료
선택 범위 (Range)를 Python 목록 (초기화 코드)로 변환
Sub Range2PythonList()
If TypeName(Selection) <> "Range" Then
Exit Sub
End If
sCol = Selection(1).Column '範囲開始列
eCol = Selection(Selection.Count).Column '範囲終了列
sRow = Selection(1).Row '範囲開始行
eRow = Selection(Selection.Count).Row '範囲終了行
If sRow = eRow Then
Exit Sub
End If
pCode = ""
For c = sCol To eCol
pCode = pCode & Cells(sRow, c).Value & "=["
For r = sRow + 1 To eRow
v = Cells(r, c).Value
Select Case TypeName(v)
Case "String"
pCode = pCode & "'" & v & "'"
Case "Empty", "Null", "Nothing"
pCode = pCode & "None"
Case "Date"
pCode = pCode & "datetime.datetime(" _
& Year(v) & "," _
& Month(v) & "," _
& Day(v) & "," _
& Hour(v) & "," _
& Minute(v) & "," _
& Second(v) & ")"
Case Else
pCode = pCode & v
End Select
pCode = pCode & ","
Next r
pCode = Left(pCode, Len(pCode) - 1) & "]" & vbCrLf
Next c
Debug.Print pCode
SetClip (pCode)
End Sub
'クリップボードにテキストをコピー
' https://info-biz.club/windows/vba/vba-set-clipboard.html
Sub SetClip(S As String)
With CreateObject("Forms.TextBox.1")
.MultiLine = True
.Text = S
.SelStart = 0
.SelLength = .TextLength
.Copy
End With
End Sub
실행 방법
Excel을 시작하고 Alt+F11에서 VBA 코드 편집기를 시작하고 대상 통합 문서를 두 번 클릭하여 선택합니다.
VBA 코드를 작성하는 창이 열리므로 거기에 위의 코드를 복사합니다.
Excel로 돌아가서 범위를 선택한 다음 Alt+F8에서 매크로를 시작한 다음 ThisWorkbook.Range2PythonList를 선택하여 실행합니다.
선택 영역의 내용이 파이썬 목록의 초기화 코드로 변환되어 클립보드에 복사됩니다. 그런 다음 적절한 편집기에 붙여서 사용하십시오 (필요한 경우 import datetime
를 추가하십시오).
참고 자료
VBA 실패하지 않는 문자열을 클립 보드에 복사하는 방법 @ 정보 비즈니스 지원 클럽
Reference
이 문제에 관하여(Excel에서 범위 선택한 내용을 Python 목록 초기화 코드로 변환하는 매크로 (VBA)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/code0327/items/c8f322546373e12e2346텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)