質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

3390閲覧

csvファイル取込時の項目チェックについて

Tannnnnnnnnnn

総合スコア24

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

1クリップ

投稿2019/07/24 16:29

添付画像の通り、左側のcsvファイルから、右側のエクセルファイルへ読み込みを行います。
その際に「年齢」は3桁以内、「特技」は5桁以内等の項目入力チェックを備えた、csv入力マクロを教えてください。

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BeatStar

2019/07/27 03:15

完全に丸投げですね。 もう、依頼したほうがいいかもしれません。 ここは質問をするところであって、依頼する場所ではないです。
Tannnnnnnnnnn

2019/09/03 09:30

申し訳ございません。承知しました。
BeatStar

2019/09/05 02:06

同じ質問であっても、「自分なりに工夫したこと」「自分なりのコード」「どういう風に調べた(が、どこが自分がやりたい処理と違うか)」等のように書き方を変えるだけでも相当違いますよ。 質問者は確か編集ができるはずなので、編集してください。
guest

回答1

0

ベストアンサー

こんにちは。よろしくおねがいいたします。

まず、"「年齢」は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

投稿2020/02/16 07:54

AkiSaito

総合スコア110

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問