好きな「お肉」は?

VBAからshell関数を使って、
FTPを起動して、
サーバーからテキストファイル(txt)を、
ローカルへ落としたいのですが…
落とすとEUCコードになってしまいます…
FTPのオプションとかでshift-jisとかに直せるのでしょうか?
よろしくお願いします(o*。_。)oペコッ

A 回答 (2件)

こんにちは、KenKen_SP です。



FTP の設定とかとは別の視点から。ADO の Stream オブジェクトを使って、
テキストファイルの文字コードを EUC から Shift_JIS に変換するサンプル
です。

FTP --> テキストファイル --> 文字コード変換 -->本来の処理

のような流れではどうでしょうか。


Sub TEST_MACRO()

  '引数で渡すパスが同一なら上書きになります
  Call CONV_EUC2SJIS("C:\test.txt", "C:\test.txt")

End Sub

'// EUC --> Shift_JIS Charaset Convert Proc
Public Function CONV_EUC2SJIS( _
  ByRef EUC_FILEPATH As String, _
  ByRef JIS_FILEPATH As String) As Boolean

  '参照設定するなら:Microsoft ActiveX Data Objects x.x Library
  
  '今回は実行時バインドでやってますが本当は参照設定した方が○
  Dim EUC As Object ' ADODB.Stream '--EUC 用
  Dim JIS As Object ' ADODB.Stream '--Shift_JIS用
    
  Set EUC = CreateObject("ADODB.Stream")
  With EUC
    .Charset = "EUC-JP"
    .Open
  End With
  Set JIS = CreateObject("ADODB.Stream")
  With JIS
    .Charset = "Shift_JIS"
    .Open
  End With
  EUC.LoadFromFile EUC_FILEPATH
  EUC.CopyTo JIS
  JIS.SaveToFile JIS_FILEPATH, 2

  JIS.Close: EUC.Close
  Set JIS = Nothing
  Set EUC = Nothing

End Function
    • good
    • 0

 世の中にあるFTPクライアントは、ダウンロード後やアップロード前にプログラム内部でEUC←→SJIS変換をしています。

なので、Windows標準のftp.exeにはありません。
 shell関数でftp.exeを呼んでいるのなら、nkf.exeを使うなどではどうでしょ~か。
    • good
    • 0

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


おすすめ情報