[[20250616102220]] 『®を削除するコード』(tommy) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『®を削除するコード』(tommy)

EXCELのVBAで
指定フォルダー内にあるすべてのサブフォルダー内のフォルダー名で最後が「 jazz®」である全てのフォルダー名で
®を削除するコードを考えています。

例えば
Barbara Fowler - Soulful Reflections - jazz®

Barbara Fowler - Soulful Reflections - jazz
のように変名したい。

®は、機種依存文字なのでVBAで処理できないで苦労しています。

Excel2024(64bit)

現在、他の変名ソフトで置換で事前処理で対応し
その後、EXCELで続きを処理するのようにしています。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


例えば

left("Barbara Fowler - Soulful Reflections - jazz®",len("Barbara Fowler - Soulful Reflections - jazz®")-1)

でいいんじゃ

(彼氏) 2025/06/16(月) 10:49:24


 FileSystemObjectを使います。
 Sub sample()
    Dim FSO As Object
    Dim maruR As String
    Set FSO = CreateObject("Scripting.FileSystemObject")
    maruR = ChrW(&HAE) '○R
    i = 1
    For Each folder In FSO.GetFolder("D:\test").SubFolders
       If folder.Name Like "*" & maruR Then
          folder.Name = Left(folder.Name, Len(folder.Name) - 1)
       End If
    Next
 End Sub
(´・ω・`) 2025/06/16(月) 11:29:31

´・ω・`さん、サンプルコードで上手く処理できました。

ありがとうございます。

ChrW(&HAE) '○R で機種依存文字もVBAで扱えるのですね。

これから、実際にコード作成(追加)を始めたいと思います。

(tommy) 2025/06/16(月) 11:59:35


すいません。彼氏さん、ありがとうございます。
お礼を忘れていました。

実コードに以下を追加して処理できるようになりました。

      Set fso = CreateObject("Scripting.FileSystemObject")

      Dim maruR As String
      Dim i As Long
      Dim folder As Variant
      maruR = ChrW(&HAE)  '○R

      i = 1
      For Each folder In fso.GetFolder(rootFolder).SubFolders
            If folder.Name Like "*" & maruR Then
                  folder.Name = Left(folder.Name, Len(folder.Name) - 1)
            End If
      Next

’−−−−−−−−−−−−−−−−−−−−

同じような状況で他の機種依存文字のChrW(****)はどのようにして調べたら良いですか?
コード変換表みたいなツールがあれば教えてください。

(tommy) 2025/06/16(月) 12:50:14


 シート上で、A1セルにその機種依存文字を置き、
 =DEC2HEX(UNICODE(A1))
 とすれば、A1のコードがわかります。(&Hのあとのところ)
 ただし冒頭1文字だけが対象なので文字数が2字以上なら、 
 MIDで一文字ずつ切り出して実行すればそれぞれの文字コードが取得できるでしょう。
(xyz) 2025/06/16(月) 13:04:46

 IMEに付属の"IMEパッド"で一覧できますが、探すのが難しいかもしれません。

(xyz) 2025/06/16(月) 13:25:14


 > 同じような状況で他の機種依存文字のChrW(****)はどのようにして調べたら良いですか?
 <unicode 一覧表> でググるとか。 私は↓を参考にしたりします。
 https://tools.m-bsys.com/ex/unicode_table.php#google_vignette

 あるいは、↓のようなコード(A1セルの文字列を、B1セルへ文字コード出力)で調べるとか。
 Sub test()
    Dim i As Long, Str As String, Buf As String
    Str = Range("A1")
    For i = 1 To Len(Range("A1"))
        Buf = Buf & Mid(Str, i, 1) & ":&H" & Hex(AscW(Mid(Str, i, 1))) & ","
    Next i
    Range("B1") = Buf
 End Sub
(通行人) 2025/06/16(月) 14:59:14

機種依存文字をセルに張り付けて、そのセルを参照すればいいんじゃないですか
面倒な時はこれで済ませます
(彼氏) 2025/06/16(月) 15:09:03

皆さん、たくさんの調べる方法を教えていただきありがとうございます。
これで機種依存文字が出てきても対処できそうです。

(tommy) 2025/06/16(月) 17:16:04


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.