CSV 파일(UTF-8, Shift-JIS)을 Excel로 가져오는 간단한 VBA 매크로
간단한 VBA 매크로의 예입니다.
UTF-8, Shift-JIS용 양쪽 모두를 준비했습니다.
더블 쿼테이션이 있어도 읽을 수 있습니다.
※2020.10.11추기 서식을 모두 문자열로 하는 ver를 추가
잘 깨져서 수동으로 가져올 수 있습니다.
가면과 같은 때에 활용합시다.
프로그램 개요:
· CSV 파일을 지정하여 파일 경로 얻기 (Explorer에서 선택)
· 결과 출력 시트는 일단 클리어한다
・파일을 읽어 출력 시트에 기입(VBA 코드에 초기설정)
UTF-8용, Shift-JIS용은 별도로 하고 있다
■ 샘플: 매크로 내장된 Excel 파일
h tp : // / l 응 try. 사쿠라. 네. jp / 비 · 코데 / v 바 / cs ゔ x x l / CSV_ 암포 rt. xlsm
※상용 이용도 개인용으로도 자유롭게 이용해 주십시오.
모든 열의 서식이 문자열 ver
h tp : // / l 응 try. 사쿠라. 네. jp / 비 · 코데 / v 바 / cs ゔ ぇ x 세 l / CSV_ 암포 rt_에서 x 톤 ly. xlsm
▼도쿄도의 오픈 데이터로 테스트
■UTF-8의 CSV
도쿄도 메구로구구 유시설(소재지, 명칭, 연락처)
h tp // w w. 해 ty. 메구로. 가끔. jp / 오다 타타 / 131105_pu b c_fueshi ty. CSV
■SHITF-JIS의 CSV
도쿄의 공립 도서관 정보
h tp // w w. 어쩌다. 메 t로. 가끔. jp / 쿄이쿠 / 어 l_ 횃불 ぃ b 등 ry_ 구이로. CSV
VBA 코드
주요 그런 부분을 해설합니다.
이번에는 QueryTables라는 메서드를 사용하고 있습니다.
외부 데이터의 취득에 이용하는 것입니다.
속도도 빠르고 간단합니다.
・파일 패스를 취득(대입):
SettingFileName =Application.GetOpenFilename~
· CSV 연결 :
QueryTables.Add(Connection:="text;" & SettingFileName,
・문자 코드 지정(65001→UTF-8, 932→Shift-Jis)
.TextFilePlatform = 65001
Public Const targetsheet = "result"
'結果を出力するシート名を指定
Sub CSV取り込みUTF8()
Dim SettingFileName As Variant
Sheets(targetsheet).Cells.Clear
'ファイルクリア
SettingFileName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", _
Title:="CSVファイルの選択")
If SettingFileName = False Then
Exit Sub
End If
With Sheets(targetsheet).QueryTables.Add(Connection:="text;" & SettingFileName, Destination:=Sheets(targetsheet).Range("A1"))
.TextFilePlatform = 65001 'UTF-8
.AdjustColumnWidth = False '列の幅を自動計算しない
.TextFileCommaDelimiter = True 'コンマ区切り
.Refresh BackgroundQuery:=False 'シートに出力
.Delete
End With
Sheets(targetsheet).Activate
End Sub
Sub CSV取り込みSHIFTJIS()
Dim SettingFileName As Variant
Sheets(targetsheet).Cells.Clear
SettingFileName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", _
Title:="CSVファイルの選択")
If SettingFileName = False Then
Exit Sub
End If
With Sheets(targetsheet).QueryTables.Add(Connection:="text;" & SettingFileName, Destination:=Sheets(targetsheet).Range("A1"))
.TextFilePlatform = 932 'SHIFTJIS
.AdjustColumnWidth = False '列の幅を自動計算しない
.TextFileCommaDelimiter = True 'コンマ区切り
.Refresh BackgroundQuery:=False 'シートに出力
.Delete
End With
Sheets(targetsheet).Activate
End Sub
모든 열의 서식을 문자열로 만드는 ver
0부터 시작하는 숫자만의 데이터(하이픈 없음 전화번호 등)
그렇다면 큰 자릿수의 데이터에 해당하도록,
아래에서는 서식을 문자열로 받아들이도록 합니다.
TextFileColumnDataTypes
로 설정합니다.
Public Const targetsheet = "result"
'結果を出力するシート名を指定
Sub CSV取り込みUTF8()
Dim SettingFileName As Variant
Dim Tcount(120) As Long
For i = 0 To 120
Tcount(i) = 2 '文字列の意
Next
'文字列の書式用に配列を作成
Sheets(targetsheet).Cells.Clear
'ファイルクリア
SettingFileName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", _
Title:="CSVファイルの選択")
If SettingFileName = False Then
Exit Sub
End If
With Sheets(targetsheet).QueryTables.Add(Connection:="text;" & SettingFileName, Destination:=Sheets(targetsheet).Range("A1"))
.TextFilePlatform = 65001 'UTF-8
.AdjustColumnWidth = False '列の幅を自動計算しない
.TextFileCommaDelimiter = True 'コンマ区切り
.TextFileColumnDataTypes = Array(Tcount) '文字列にする
.Refresh BackgroundQuery:=False 'シートに出力
.Delete
End With
Sheets(targetsheet).Activate
End Sub
Sub CSV取り込みSHIFTJIS()
Dim SettingFileName As Variant
Dim Tcount(120) As Long
For i = 0 To 120
Tcount(i) = 2 '文字列の意
Next
'文字列の書式用に配列を作成
Sheets(targetsheet).Cells.Clear
SettingFileName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", _
Title:="CSVファイルの選択")
If SettingFileName = False Then
Exit Sub
End If
With Sheets(targetsheet).QueryTables.Add(Connection:="text;" & SettingFileName, Destination:=Sheets(targetsheet).Range("A1"))
.TextFilePlatform = 932 'SHIFTJIS
.AdjustColumnWidth = False '列の幅を自動計算しない
.TextFileCommaDelimiter = True 'コンマ区切り
.TextFileColumnDataTypes = Array(Tcount) '文字列にする
.Refresh BackgroundQuery:=False 'シートに出力
.Delete
End With
Sheets(targetsheet).Activate
End Sub
마지막으로
Excel의 사양상, 문자 코드나, 더블 쿼테이션의 유무로,
CSV 파일은 그대로 열거나 그렇지 않습니다.
경우가 있기 때문에 이러한 것이 필요합니다.
장래적으로는 사양이 바뀔지도 모르겠네요.
Reference
이 문제에 관하여(CSV 파일(UTF-8, Shift-JIS)을 Excel로 가져오는 간단한 VBA 매크로), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/YUTA_NARIKAWA_MEM/items/9ea2beff4837f5f7b93e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)