この人頭いいなと思ったエピソード

今、クラウドに保存してある画像ファイルの入ったフォルダをダウンロード(Zip形式)して、そのZipをエクセルのVBAで開いたダイアログで選択し、そこからそのZipファイルのパスを取得して、解答する処理を作りました。うまく行ったと思いましたが、日本語名のフォルダとファイルの場合に、解凍されたフォルダとその中のファイルの名前が全て文字化けしてしまいます。
この場合の対策はありますでしょうか?

以下、わたしが作ったソースです。

Sub ExtractFiles(File as Object)

Dim ShellObj as Object
Dim Ret as long
Dim FSO as FileSystemObject
Dim Str as string

set FSO = New FileSystemObject
Set ShellObj = CreateObject("Shell.Application")

If FSO.GetExtensionName(File) = "zip" then
 Str = Left(File.Path, Len(File.Path) - Len(File.Name))
 Ret = ShellObj.Namespace(Str & "¥").CopyHere( _
  ShellObj.Namespace(File.Path).Items)
 
end if

A 回答 (6件)

zip ファイルはご自分のローカルで作成したものではなく、クラウドサービスが圧縮して作成したものなのですよね。



Windows 7 と Windows Server 2008 R2 で Unicode ファイル名を含む zip に対する取扱いの修正パッチが出ています。
このパッチを適用すれば utf-8 で作成された zip ファイルの中身を文字化けせずに取り出せるようになります。
https://support.microsoft.com/ja-jp/kb/2704299
    • good
    • 0

>クラウドのサポートに電話して聞いてみる


そうなるでしょう  おそらく対応不可ですが

以前 某クラウドサービスで日本語フォルダ扱えるそのまま作成
フォルダをZIP形式にしてダウンロードしたら解凍時に見事に文字化けした
という経験があります

基本的にサービス側が対応してくれないと
自分では対策方法は無いので日本語使用はあきらめました
    • good
    • 0
この回答へのお礼

クラウドの保守に電話して、エクセルのプログラムで圧縮ファイルを文字化けせずに解凍する方法を教えてと言っても、わからないと返答されそうで、聞く気になりませぬ。
いっその事、Lhaplusをプログラムで自動実行することで、カモフラージュなんてできないのでしょうか?

お礼日時:2015/12/25 10:30

>今、クラウドに保存してある画像ファイルの入ったフォルダを


とありますが、
1.そのクラウドのOSはなんですか?
2.画像ファイルの入ったフォルダの文字コードはなんですか?
それが、判れば対策が判明するとおもいますが。
    • good
    • 0
この回答へのお礼

それは、調べないとわかりません・・・
なるほどですね。となると、クラウドのサポートに電話して聞いてみるか・・・ということになるのでしょうか?

お礼日時:2015/12/24 23:05

OSが全く不明ですが、OSで解凍した場合は正常に解凍出来るのでしょうか?


例えば、macで作成したZIPはUTF-8でWindowsではSJISになる為、文字化けを起こします。
いずれにせよ、エンコードの問題だと思いますのでそのあたりを調べてみると解決するかもしれません。
    • good
    • 1
この回答へのお礼

OSは、Windows 7です。
Windows 7で作成したファイルをフォルダごと、クラウドにあげました。それを上の処理で解凍したという流れになります。わたしも、SJISに変換すれば良いのだろうとまでは想像が付きますが、上のコードがコードなので、どのようにすればよいのかがわかりません。もし、誰か底の編をお分かりの方おられれば、ぜひともアドバイスを頂きたいのです。

お礼日時:2015/12/24 23:04

再びお邪魔します。


フォルダ名が日本語でも、ZIPファイルの名前が半角英数ならば大丈夫かもしれません。
これは、私も成功体験があります。
    • good
    • 0
この回答へのお礼

それは試しましたが、ダメでしたよ

お礼日時:2015/12/24 23:02

ファイル名は半角英数文字にすることが無難です。


別の例ですが、日本語ファイル名でFTPでサーバーにアップロードしようとすると、エラーが出ます。
    • good
    • 0
この回答へのお礼

ありがとうございます。そうですね、半角英数字にフォルダ名を限定できればいいのですが、社内では日本語を使ってますので無理だと思います・・・。だから、どうしても文字化けしないようにしたいのですが

お礼日時:2015/12/24 21:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!