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

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

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

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

Q&A

解決済

1回答

5150閲覧

フォルダー内のファイル名を取得し、半角の片仮名と記号もしくは全角のアルファベットと数字があった場合をIFで判断したい。

Yukiyama7.4

総合スコア20

VBA

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

0グッド

0クリップ

投稿2017/01/28 05:15

編集2017/01/29 04:30

閲覧ありがとうございます。
質問内容は大凡タイトル通りです。

作りたいマクロ
指定したフォルダーパス内のファイル名を取得し、装飾して指定したセルに格納していく。
ファイル名に半角の片仮名か記号、もしくは全角のアルファベットか数字が含まれていた場合、格納したセルと同じ行にエラー文を入れる。

2017-01-29追記
回答ありがとうございます。
それぞれのIFで判別はできるようになりましたが、ファイル名の先頭の文字のみを参照しているようで、途中や最後に含まれている場合にIFに掛かりません。
記号はこちらで使いそうな物だけにまとめました。

VBA

1Sub Test() 2 Cells.Clear 3 Dim buf As String, cnt As Long 4 Const Path As String = "ここにフォルダーパス" 5 buf = Dir(Path & "*.wav") '.wavファイルのみを抽出 6 Do While buf <> "" 7 buf = Left(buf, Len(buf) - 4) 8 cnt = cnt + 1 9 Cells(cnt, 1) = Len(buf) 10 Cells(cnt, 2) = "N" 11 Cells(cnt, 3) = buf 12 Cells(cnt, 4) = "(Soundw " & buf & ")" 13 14 If buf Like "[ア-ン]*" Then 15 Cells(cnt, 5) = "半角片仮名有り" 16 Cells(cnt, 5).Font.Color = RGB(255, 0, 0) 17 End If 18 If buf Like "[/! ・ 。 、 ( )]*" Then 19 Cells(cnt, 5) = "半角記号有り" 20 Cells(cnt, 5).Font.Color = RGB(255, 0, 0) 21 End If 22 If buf Like "[A-z]*" Then 23 Cells(cnt, 5) = "全角アルファベット有り" 24 Cells(cnt, 5).Font.Color = RGB(255, 0, 0) 25 End If 26 If buf Like "[0-9]*" Then 27 Cells(cnt, 5) = "全角数字有り" 28 Cells(cnt, 5).Font.Color = RGB(255, 0, 0) 29 End If 30 31 buf = Dir() 32 Loop 33End Sub

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

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

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

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

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

guest

回答1

0

ベストアンサー

すべての文字を確認していませんが、下記のコードで問題ないかと思います。

VBA

1 'ファイル名に使用できる記号 2 Const KIGOU As String = "[ !#$%&'()+-,.;=@^_‘{}~[[][]]]" 3 4 '半角のカタカナ 5 If buf Like "[ア-ン]" Then 6 'エラー処理 7 End If 8 9 '半角の記号 10 If buf Like KIGOU Then 11 'エラー処理 12 End If 13 14 '全角のアルファベット 15 If buf Like "[A-z]" Then 16 'エラー処理 17 End If 18 19 '全角の数字 20 If buf Like "[0-9]" Then 21 'エラー処理 22 End If

記号は下記のサイトを参考にし、ファイル名に使用できる記号のみを対象にしています。
参考サイト

ちなみに、Yukiyama7.4さんのコードは半角のカタカナ以外が含まれていたらエラー処理をするようになっていました。(!を付けたら~以外という意味になります)

####追記
ワイルドカードを入れないと先頭文字しか検索しないのですね。すみません…
[の前と]の後ろに*を入れて実行してみて下さい。すべての文字を検索してくれるはずです。

VBA

1If buf Like "*[ア-ン]*" Then

投稿2017/01/29 02:25

編集2017/01/29 05:10
N-u-u

総合スコア113

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

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

Yukiyama7.4

2017/01/29 23:36

ありがとうございます! 無事に目的の動作になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問