前提・実現したいこと
- 番号リスト 番号リストvbaのstring関数を用いて,指定したシート内の名前データ※(漢字/外字エディタで作成された漢字も含む)からフォルダ名・ファイル名を自動作成したい。(している。)
- 番号リストしかし,名前データに外字エディタで作成された漢字が混在しているとコードが当初予期した目的と異なるエラー処理A(同じフォルダ名があれば,削除して実行してください)に入ってしまう。
- 番号リスト名前データ内に外字が混在してもエラー処理Aに入ることなくプログラムが最後まで実行されるようにしたい。
※ ソースコード中のm.cells(i.5)の部分
質問したいこと。
- リストExcelファイル内のデータ(漢字による名前)をそのまま用いて,フォルダ名とファイル名にしたいと考えています。一応,マクロを組めたのですが,データに外字エディタで作成された文字が混じっていた場合に,プログラムが止まります。(予定していないエラー処理Aに入ってしまう。)
- リストエラー処理に入らないようにするには,どのようなコードを書けばよいのでしょうか?また,解決する考え方はどのようなものなのでしょうか?
該当のソースコード
vba
1Sub FaceSheet() '●●シート作成 2 3 '前処理 4 5 Application.ScreenUpdating = False 6 7 8 9 '前処理 変数宣言 10 11 Dim full_path As String ' 作成するフォルダーのフルパス 12 Dim i As Long 13 Dim ey As String '西暦 14 Dim eey As String '元号 15 Dim SID As String '顧客aa管理番号 16 Dim na As String 'na は顧客名 17 Dim m As Worksheet 18 Dim RC As Integer 19 20 '前処理 メッセージボックで操作確認をする 21 RC = MsgBox("●●シートを作成しますか?", vbYesNo + vbQuestion, "確認") 22 23 24 If RC = vbNo Then 25 MsgBox "●●シート作成は,キャンセルされました" 26 Exit Sub '●●シート作成のキャンセル 27 28 Else 29 30 End If 31 32 MsgBox ("しばらくお待ちください。") 33 34 35 36 37 '個別シートとフォルダの作成 38 39 With Sheets("Face Sheet") 40 ' m.UsedRange.SpecialCells (xlCellTypeVisible) '可視セルのみにしたいができない。 41 42 43 For i = 2 To m.Cells(Rows.Count, 1).End(xlUp).Row 44 na = m.Cells(i, 5) 45 SID = m.Cells(i, 1) 46 On Error GoTo myError 'エラー処理 47 48 **MkDir ThisWorkbook.Path & "\" & SID & "_【 " & na & " 】_●●フォルダ" **'個人フォルダの作成 49 **__**full_path = ThisWorkbook.Path & "\" & SID & "_【 " & na & " 】_●●フォルダ" 'フルパスの取得**__** 50 51 ' 実行部分① Face Sheetへの基本事項入力 52 53 54 .Range("C7") = m.Cells(i, 5) ' 漢字名 55 .Range("C6") = m.Cells(i, 6) 'ふりがな名 56 .Range("H7") = m.Cells(i, 11) '顧客bb名 57 .Range("G6") = m.Cells(i, 7) '性別 58 .Range("H6") = m.Cells(i, 8) '生年月日 59 .Range("C8") = m.Cells(i, 9) & m.Cells(i, 10) '住所 60 61 '実行部分② A1からB3までの年次シートを 必要人数分コピーする。 62 63 Application.DisplayAlerts = False 64 Sheets(Array("入力シート", "Face Sheet", "A1", "A2", "A3", "A4", "A5", "A6", "B1", "B2", "B3", "カテゴリリスト")).Copy 65 ActiveWorkbook.SaveAs full_path & "\" & SID & "_" & "【 " & na & " 】" & "_●●シート" & ".xlsm", xlOpenXMLWorkbookMacroEnabled 66 67 68 ActiveWorkbook.Close savechanges:=True 69 70 71 72 Next i 73 74 75 76 '後処理 Face Sheet雛形の値クリア 77 78 79 .Range("A4").Clear 80 .Range("A5").Clear 81 .Range("A1").MergeArea.ClearContents 82 .Range("C6").MergeArea.ClearContents 83 .Range("C7").MergeArea.ClearContents 84 .Range("C8").MergeArea.ClearContents 85 .Range("H6").MergeArea.ClearContents 86 .Range("H7").MergeArea.ClearContents 87 End With 88 89 Call beep 90 91 Application.ScreenUpdating = True 92 MsgBox "完了しました" 93 Exit Sub 94 95 96myError: 97 98'Call BeepAPI(262, 600) 'ド 99'Call BeepAPI(262, 600) 'ド 100MsgBox "既に同じ名前のフォルダがあるので新規に作れません。" & Chr(13) & "先に作ったフォルダを消去してもう一度②を実行させてください。" 101 102 End Sub 103コード
試したこと
ExcelはUnicode,vbaはshift-jis とコードシステムが異なることは理解しました。検索しましたで外字判定をすることはできました。Like "[" & Chr(&HF040) & "-" & Chr(&HF9FC) & "]" しかし,外字エディタで作成された漢字はスルーされます。
補足情報(FW/ツールのバージョンなど)
Excel 2013です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/05 11:29
2021/01/05 11:46
2021/01/05 13:05
2021/01/06 00:12 編集
2021/01/05 22:43