こんにちは。よろしくおねがいいたします。
まず、"「年齢」は3桁以内、「特技」は5桁以内等の項目入力チェック"ということの意味が、よくわかりませんでした。
CSVを読み込んでExcelシートに展開する段階で項目チェックをしても仕方ないと思うのですが。。
逆に、Excelのこの表に入力させるときに"年齢は3桁以内で記入してください"などとワーニングさせるなら、それはExcelの"入力規則"でやらせたほうがいい、と思いました。
それはともかく・・
このCSVをインポートして、エクセルシートに展開するVBAだけは作ってみました。以下のとおりです。
VBA
1Option Explicit
2
3Sub ImportCSV_and_Make_Table()
4'CSVをインポートして、表形式にします
5
6Dim ReportSheet As Worksheet
7Set ReportSheet = ThisWorkbook.Worksheets("まとめシート")
8
9'インポートするデータCSVです
10Dim DataCSV As String
11'CSVの1行ぶんを、配列に格納するためのものです
12Dim ArrCSV As Variant
13
14Dim r As Long 'まとめシートの行番号です
15
16'まとめシートは1行目からスタートするものとします
17r = 1
18
19'DataCSVを選択します
20DataCSV = Application.GetOpenFilename("CSVファイル,*.csv", Title:="データCSVを選択してください")
21
22'うっかりキャンセルボタンを押された場合の処理
23If DataCSV = "False" Then
24 MsgBox "キャンセルされました"
25 Exit Sub
26End If
27
28'DataCSVファイルを開きます
29Open DataCSV For Input As #1
30
31Do Until EOF(1)
32 Line Input #1, DataCSV
33
34 'DataCSVの一行分を、配列に格納します
35 ArrCSV = Split(DataCSV, ",")
36 With ReportSheet
37 .Cells(r, 1) = "名前"
38 .Cells(r, 2) = "性別"
39 .Cells(r, 3) = "年齢"
40 .Cells(r, 4) = "趣味"
41 .Cells(r, 5) = "特技"
42 .Cells(r, 6) = "出身地"
43 .Cells(r + 1, 1) = ArrCSV(0) '"名前"
44 .Cells(r + 1, 2) = ArrCSV(1) ' "性別"
45 .Cells(r + 1, 3) = ArrCSV(2) ' "年齢"
46 .Cells(r + 1, 4) = ArrCSV(3) ' "趣味"
47 .Cells(r + 1, 5) = ArrCSV(4) ' "特技"
48 .Cells(r + 1, 6) = ArrCSV(5) ' "出身地"
49
50 'ラベル行に色をつけます
51 .Range(Cells(r, 1), Cells(r, 6)).Interior.Color = RGB(189, 215, 238)
52 End With
53
54 'ここで行送りします。2行送りです。
55 r = r + 2
56
57'CSVファイルの次の行へシフトします
58Loop
59
60'DataCSVファイルを閉じます
61Close #1
62
63'まとめシートをアクティベートします
64ReportSheet.Activate
65
66End Sub
67
68