Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


36007 / 76738 ←次へ | 前へ→

【45917】Re:ファイル名で使用できない文字の排除
回答  Hirofumi  - 07/1/17(水) 20:07 -

引用なし
パスワード
   こんなので善いのかな?
TextBox1は、不正な文字を"_"に置き換えます
TextBox2は、不正な文字を反転表示し、警告を出します

Option Explicit

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

  With TextBox1
    If .Text <> "" Then
      .Text = NameLetter(.Text)
    End If
  End With
  
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)

  Dim lngPos As Long
  
  With TextBox2
    If .Text <> "" Then
      lngPos = LetterCheck(.Text)
      If lngPos > 0 Then
        Cancel = True
        .SelStart = lngPos - 1
        .SelLength = 1
        MsgBox Mid(.Text, lngPos, 1) & "の文字が不正です", vbInformation
      End If
    End If
  End With
  
End Sub

Private Function NameLetter(ByVal strName As String) As String

'  ファイル名のチェック
  
  Dim i As Long
  Dim vntLetter As Variant
  Dim lngPos As Long
  
  'ファイル名として使用不可能な文字の一覧を作成
  vntLetter = Array(":", "\", "?", "[", "]", "/", "*")
  
  '一覧全てに就いて
  For i = 0 To UBound(vntLetter, 1)
    '引数の文字列に一覧の文字が含まれるか探索
    lngPos = InStr(1, strName, vntLetter(i), vbTextCompare)
    '引数の文字列に一覧の文字が無くなるまで繰り返し
    Do Until lngPos = 0
      '有る場合、"_"に置換
      strName = Left(strName, lngPos - 1) _
            & "_" & Mid(strName, lngPos + 1)
      '引数の文字列に一覧の文字が含まれるか探索
      lngPos = InStr(1, strName, vntLetter(i), vbTextCompare)
    Loop
  Next i
  
  '戻り値として、置換後の文字列を返す
  NameLetter = strName
  
End Function

Private Function LetterCheck(strName As String) As Long

  
  Dim i As Long
  Dim vntLetter As Variant
  Dim lngPos As Long
  
  'ファイル名として使用不可能な文字の一覧を作成
  vntLetter = Array(":", "\", "?", "[", "]", "/", "*")
  
  '一覧全てに就いて
  For i = 0 To UBound(vntLetter, 1)
    '引数の文字列に一覧の文字が含まれるか探索
    lngPos = InStr(1, strName, vntLetter(i), vbTextCompare)
    If lngPos > 0 Then
      Exit For
    End If
  Next i
  
  '戻り値として、不正文字の位置を返す
  LetterCheck = lngPos
  
End Function

0 hits

【45906】ファイル名で使用できない文字の排除 ボビー 07/1/17(水) 18:48 質問
【45913】Re:ファイル名で使用できない文字の排除 ぱっせんじゃー 07/1/17(水) 19:20 発言
【45930】Re:ファイル名で使用できない文字の排除 ボビー 07/1/18(木) 10:38 お礼
【45934】Re:ファイル名で使用できない文字の排除 ボビー 07/1/18(木) 11:48 質問
【45937】Re:ファイル名で使用できない文字の排除 Blue 07/1/18(木) 11:57 回答
【45946】Re:ファイル名で使用できない文字の排除 ボビー 07/1/18(木) 14:27 お礼
【45952】Re:ファイル名で使用できない文字の排除 Kein 07/1/18(木) 17:51 回答
【45953】Re:ファイル名で使用できない文字の排除 ichinose 07/1/18(木) 20:43 発言
【45957】Re:ファイル名で使用できない文字の排除 Blue 07/1/19(金) 9:50 発言
【45917】Re:ファイル名で使用できない文字の排除 Hirofumi 07/1/17(水) 20:07 回答
【45931】Re:ファイル名で使用できない文字の排除 ボビー 07/1/18(木) 10:42 お礼
【45958】Re:ファイル名で使用できない文字の排除 ボビー 07/1/19(金) 11:26 お礼

36007 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free