Excel VBA質問箱 IV

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

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


1989 / 13645 ツリー ←次へ | 前へ→

【70630】波ダッシュの変換 monta 11/12/9(金) 15:19 質問[未読]
【70632】Re:波ダッシュの変換 ichinose 11/12/10(土) 11:37 発言[未読]
【70649】Re:波ダッシュの変換 monta 11/12/12(月) 8:40 お礼[未読]
【70650】Re:波ダッシュの変換 monta 11/12/12(月) 9:07 お礼[未読]

【70630】波ダッシュの変換
質問  monta  - 11/12/9(金) 15:19 -

引用なし
パスワード
   お世話になります、よろしくお願いします。

外部から送られてくるExcelブックを読み込んで、固定長のテキストファイルと
して保存するマクロを作成し、使用しています。
通常は問題なく動いております・・・と思っていたのですが、
セルに「〜(波ダッシュ:〜と逆)」が入力されているファイルを保存
したら、「〜(波ダッシュ:〜と逆)」が「?」となっていました。

で、あれこれ試していたのですが、どうも解決しません。
マクロの記録でも「?」になってしまいます。
VBEに直接貼り付けても「?」になってしまいます。

解決方法を教えてください、よろしくお願いします。
望む形は「〜(波ダッシュ:〜と逆)」を「〜」にリプレースして保存、
もしくは、「〜(波ダッシュ:〜と逆)」のまま(文字化けなし)保存
です。

よろしくお願いします。
(WindowsXP Excel2003)

【70632】Re:波ダッシュの変換
発言  ichinose  - 11/12/10(土) 11:37 -

引用なし
パスワード
   おはようございます。

>
>外部から送られてくるExcelブックを読み込んで、固定長のテキストファイルと
>して保存するマクロを作成し、使用しています。
どんなコードなんでしょうか?

この波ダッシュって、

sub 例()
  CreateObject("wscript.shell").popup chrw(&h301c)
end sub
ですよね?
FSOを使ってみては?

Sub 書き込み3()
  Dim fso As Object
  Set fso = CreateObject("scripting.filesystemobject")
  With fso.CreateTextFile(ThisWorkbook.Path & "\text.txt", True, True)
    .WriteLine ChrW(&H301C) & "abcd"
    .Close
  End With
End Sub
Sub 読み込み3()
  Dim fso As Object
  Dim aa As String
  Set fso = CreateObject("scripting.filesystemobject")
  With fso.OpenTextFile(ThisWorkbook.Path & "\text.txt", 1, False, -2)
    aa = .ReadLine
    .Close
  End With
  CreateObject("wscript.shell").popup aa
End Sub

【70649】Re:波ダッシュの変換
お礼  monta  - 11/12/12(月) 8:40 -

引用なし
パスワード
   ichinose さん、おはようございます、ありがとうございます。
※実は数年前にもお世話になったことあります、毎々ありがとうございます。

>どんなコードなんでしょうか?

これも、当時の質問サイトで、ああだこうだと苦労してまして。
全角半角混在しているデータの固定長作成におもいっきりてこずりました。
ほとんどサイトからのコピーなので掲載はどうなのでしょうか?、

>sub 例()
>  CreateObject("wscript.shell").popup chrw(&h301c)
>end sub

これを、家のExcel2010で実行したら「〜」が表示されました、
あれ?と思って、いま会社のExcel2003で実行したら「波ダッシュ」でした。

このあたり、表示関連のややこしい仕組みがありそうなのを感じつつ、
とりあえず教えていただいた読込の部分を組み込んで見ます、

まずは、お礼まで、ありがとうございました。

【70650】Re:波ダッシュの変換
お礼  monta  - 11/12/12(月) 9:07 -

引用なし
パスワード
   ichinose さん、お世話になります。

結果・・解決しました。

Private Function r_data()
Dim temp(41)
Dim mYsheet As Worksheet
  Set mYsheet = ThisWorkbook.Worksheets("aaa")
  With mYsheet
    .Cells.Replace What:=ChrW(&H301C), Replacement:="〜", _
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
      SearchFormat:=False, ReplaceFormat:=False

最初、msgbox ChrW(&H301C)とかやってみましたが、やはり「?」でした。
で、記録したreplaceマクロに、そのままコードを設定すると、
OKでした、万々歳です、あろがとうございました。

また、よろしくお願いします。

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