Excel VBA質問箱 IV

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

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


35968 / 76732 ←次へ | 前へ→

【45952】Re:ファイル名で使用できない文字の排除
回答  Kein  - 07/1/18(木) 17:51 -

引用なし
パスワード
   いちおう正規表現でチェックする方法なら、こんな感じになります。

Sub RegExp_Test()
  Dim strJuyoka As String
 
  strJuyoka = "My>data*test?"
  With CreateObject("VBScript.RegExp")
   .Pattern = "(\:|\\|\?|\[|\]|\/|\*)"
   .Global = True
   If .Test(strJuyoka) Then
     MsgBox "ファイル名として正しくない文字があります", 48
   Else
     MsgBox "OK !"
   End If
  End With
End Sub

チェックするだけなら以上のように Testプロパティ だけで出来ますが、
見つかった文字をどうしたいか、によって If 構文の中身を増加する
必要があります。具体的には Set Matches = .Excute(strJuyoka)
として見つかった文字を配列に入れ、ループして置換していきます。
残念ながら私は RegExpオブジェクトの Replaceメソッドを使いこなせないので
VBAの Replace関数を使って、以下のようなコードを作ってみました。
Patternプロパティに設定した文字列を、全て削除しています。

Sub RegExp_Test2()
  Dim strJuyoka As String, Newstr As String
  Dim Matches As Object, Match As Object
  Dim SCnt As Integer
 
  strJuyoka = "My*data?tes/t"
  With CreateObject("VBScript.RegExp")
   .Pattern = "\:|\\|\?|\[|\]|\*|\/"
   .Global = True
   If .Test(strJuyoka) Then
     MsgBox "ファイル名として正しくない文字があります", 48
     Set Matches = .Execute(strJuyoka)
     SCnt = Matches.Count
     For Each Match In Matches
      If SCnt = Matches.Count Then
        Newstr = Replace(strJuyoka, Match.Value, "")
        SCnt = SCnt - 1
      Else
        Newstr = Replace(Newstr, Match.Value, "")
      End If
     Next
     MsgBox Newstr: Set Matches = Nothing
   Else
     MsgBox "OK !"
   End If
  End With
End Sub

ただし「文字を削除するだけ」でいいなら、Replace関数で簡単に出来ます。
即ち・・

Sub Test_Replace()
  Dim strJuyoka As String
  Dim SAry As Variant
 
  strJuyoka = "My*?da?ta?tes/t"
  SAry = Array(":", "\", "?", "[", "]", "*", "/")
  For i = 0 To 6
   strJuyoka = Replace(strJuyoka, SAry(i), "")
  Next i
  MsgBox strJuyoka
End Sub

などとするだけです。
1 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 お礼

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