🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

5660閲覧

Excelのセル内フォルダパス取得時、パスに含まれている全角文字「〜」が半角文字「?」に変化してしまう

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/07/06 00:57

編集2018/07/06 01:26

VBAでツールを作成中です。

設定シート上のセル内にファイルパスやフォルダパスを指定して、
対象の加工等を行うツールです。

現在、設定シート内に指定されたパス内に全角の 「〜」が含まれています。

これを .Range("A1").valueで取得すると 半角の 「?」となるようです。

エクセルのオートコレクトや自動変換機能、ハイパーリンクの解除等試しましたが、やはり同じ結果となります。
設定シートに指定されたパスはエクスプローラー上からそのままコピーした内容です。

問題となっている「〜」ですが、設定シート上では
普通の〜と違い、少しぼやけるようなフォントとなっています。

文字自体の問題ではないかと考えますが、〜を消して別文字にする以外で何か対処法はありますでしょうか、ご教授よろしくお願いします。

追記します
大変申し訳ございませんが、問題となっている 「〜」をこちらに提示することができません。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2018/07/06 01:03

しつもんはなんでしょうか
m.ts10806

2018/07/06 01:28

作成中のコードで問題が発生しているのでしたら、そのコードを提示してください。
guest

回答2

0

ベストアンサー

全角文字「〜」の文字コードは、何でしょうか?
UTF-8の「〜」をShift-JISで表示させたら 「?」になるはずです。

WindowsはShift-JISが標準の文字コードですから、ファイルパスの文字コードをShift-JISにすることで問題解決しそうに思います。

(※) 質問の『Excelのセル内フォルダパス取得時』が具体的に何をすることなのか判らないので、見当違いの可能性があります。

投稿2018/07/06 01:25

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/07/06 01:32

ご回答頂きまして、ありがとうございます。 不明瞭な内容でした。申し訳ございません。 セル内に記入されたパスの文字列を VBAのコードによって取得しようと思っております。 文字コードを調査し、対応しようと思います。
guest

0

解決済みですが、あえて。

問題となっている 「〜」ですが、Shift-JISの「~」ではなく、Unicodeにしかない文字ですね。

で、「VBAのコードによって取得しよう」と思ってどのように確認してどのようにうまく行かなかったのでしょうか。

VBA自体の文字コードはUnicodeです。(たしかOffice2000以降ぐらいから)
ただ、VBAエディターがShift-JISのままで、Unicode文字非対応です。(これが問題を複雑にしています。)
ですので、Unicodeにしかない文字をVBAエディター上にコピーペーストしたり、Debug.Printでイミディエイトに表示させたりすると、「?」となります。

ただし、VBAエディター上に表示させたりしなければ、問題なく使えます。
例えば、
A1セルに「〜」を入力しておいて、

vba

1Dim s As String 2 3s = Range("A1").Value 4Range("B1").Value = s

これを実行すればB1セルに問題なく表示されます。

ただし、一部の関数でUnicode非対応のものがあります。その場合は「?」と文字化けしてうまく行かない場合があります。その場合は、関数を自作するなりして対応することになります。

とりあえず、「VBAのコードによって取得しよう」としているコードを提示して、どの部分でうまくいかないか説明されると何かアドバイスできると思います。

投稿2018/07/06 05:06

hatena19

総合スコア34073

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問