| 
    
     |  | たかし さん、おはようございます。 
 >しかし、今まで300以上のファイルの読み込みを行ったが、文字化けしていたのは
 >"−"(全角)と"〜"(全角)、"1.→20."(ここでの表示は"1."になっているが
 >"マル1")の3種類で、それぞれに対応してるコードはわかっています。
 >その他の漢字やひらがなで文字化けしている文字はありません。
 >この場合、対応しているコードを引っ張ってきて変換する事もできないのでしょうか?
 >
 >例) abcde-fghi
 >       ↓
 >   abcde−fghi
 
 
 >何かいい方法はないでしょうか?
 >そんな方法がないのであれば、ないことを教えてください。
 組み合わせがわかっているということなので、
 VBAのInstr関数(またはワークシート関数のFind)で文字列の存在を確認→Select Caseなどで組み合わせを決定→VBAのReplace関数(ワークシート関数のSubstitute)で置き換えでもよさそうですが・・・ということで、関数で行なう場合のサンプルです。
 
 Sub test1()
 Dim a(0 To 2) As String
 Dim p(1 To 2) As Integer
 'サンプル文字列
 a(0) = "AAA;BCDEFG-HIJ𑅯;QQQ"
 '処理用文字列
 a(1) = a(0)
 Do
 p(1) = InStr(a(1), "&#")
 If p(1) = 0 Then Exit Do
 p(2) = InStr(p(1) + 1, a(1), ";")
 If p(2) < p(1) Then Exit Do '対になる「;」がない場合は中断
 '置換前の文字列「-」
 a(2) = Mid(a(1), p(1), p(2) - p(1) + 1)
 '下の関数で変換後の文字列を取得しReplaceで置き換える
 a(1) = Replace(a(1), a(2), Get_BB(a(2)))
 Loop
 '
 MsgBox a(0) & vbCrLf & " ↓" & vbCrLf & a(1), vbInformation, "Done"
 Erase a, p
 End Sub
 '////////////文字コードから文字列へCase分岐で変換
 Function Get_BB(arg1 As String) As String
 Dim NN As Long, s1 As String
 '数値化
 s1 = Replace(Replace(arg1, "&#", ""), ";", "")
 NN = Val(s1)
 '分岐(分岐に失敗したら数値のまま返す)
 Select Case NN
 Case 9312 To 9331: s1 = Chr(Asc("1.") + NN - 9312) 'カッコ内に○つき1を書いています
 Case 65293: s1 = "−"
 Case 65374: s1 = "〜"
 Case Else: s1 = " ?" & NN & "? " '対応するコード設定が必要
 End Select
 Get_BB = s1
 End Function
 ○数字等の含めたコード番号は(htt p://blog.zodiac.vc/webtools/u/?n=68)を参考にしました。ちなみに、ハイフンっぽい文字ということらしいです(htt p://d.hatena.ne.jp/koseki2/20070927/unicodehyphen)
 
 ところで、
 
 Sub Test()
 '
 Workbooks.OpenText Filename:="C:\AAAA.txt", Origin:=932, _
 DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
 ConsecutiveDelimiter:=False, _
 Tab:=False, Semicolon:=True, Comma:=False, Space:=False, Other:=False
 End Sub
 
 これで文字化けなくファイルを開くことができますか?
 適当なサンプルがないので試せていませんが、原因がUnicodeの変換表の混乱によるものらしい(参考:htt p://oshiete1.goo.ne.jp/qa3716434.html)ので、読み込む際のコードページを合わせたら最初から化けずにすむのではないかと。
 ハイフンではないようなので、その後はやはり面倒そうですが。
 
 
 |  |