プロが教える店舗&オフィスのセキュリティ対策術

VBAに関して全く知恵がなく、ネットで色々調べてみたのものの、調べるほど混乱してしまいました。お智慧を貸して頂けると嬉しいです。

【やりたい事】
・エクセル2列を選択して、選択範囲をCSV,UTF-8で保存。
・1列目は固定。2列目は「B列→C列→D列」と変動。(※1)
・ファイル名は、2列目一番上のセル内に入力された単語。

(※1)
「A1〜A5」と「B1〜B5」を選択。選択範囲を保存。

「A1〜A5」と「C1〜C5」を選択。選択範囲を保存。

「A1〜A5」と「D1〜D5」を選択。選択範囲を保存。


【保存】
保存先:デスクトップ「sample(ファイル名)」

【環境】
・Excel for Mac 2011

分かる方おられたらご教授お願いいたします。

A 回答 (1件)

こんにちは。



マクロ自体は、こんな私でも可能なのですが、調べてみると、

http://talesoftech.blogspot.jp/2011/05/excel-on- …

ADODB.Stream が使えないということで、Excel から、直接、UTF-8にエンコーディングできません。今、いろいろ探していますが、JavaScript さえ、どうか分かりません。Windowsとは事情が違うのです。そもそも、HTMLオブジェクトが使えるかさえ分からないです。

[Excel で UTF‐8 の CSV を作成したい]
http://answers.microsoft.com/ja-jp/office/forum/ …

こういう方法でも、エディタで変換というのもありますが、私として、こうした結論に落ち着くのは、ちょっとうまくないなって思います。

そう言えば、Unixツールの nkf.exe は、使えるそうですから、それを手に入れれば、UTF-8 に自動変換は出来ます。

http://qiita.com/kou_bacchus/items/6448608ee03b0 …

$ nkf [options] [file]
-w UTF8コードに変換する

ファイルの文字コードをUTF-8に変換
$ nkf -w --overwrite hoge.html
nkf は、Excelのファイルと同じ場所に置いて置けば大丈夫です。


'//
Option Explicit
Sub TestSample1()
  Dim myPath As String
  'パスが通っているか確認してください。
   myPath = "C:\Users\" & Application.UserName & "\Desktop\"
  
  Dim fn As String
  Dim i As Long, j As Long
  Dim ar1, ar2, buf
  '---------
  Dim Fname As String
  Dim FNo As Integer
  Dim TextLine As String
  '----------
  For j = 2 To 4 'D列まで
    For i = 1 To 5 '1~5行
      If buf = "" Then
        buf = Cells(i, 1).Value & "," & Cells(i, j).Value
        fn = Cells(i, j).Value
      Else
        buf = buf & vbNewLine & Cells(i, 1).Value & "," & Cells(i, j).Value
      End If
    Next i
    Fname = myPath & "sample(" & fn & ").csv"
    
      FNo = FreeFile()
      Open Fname For Output As #FNo
      Print #FNo, buf
      Close #FNo
    buf = "": fn = ""
  'nkf.exe を利用する
    Shell "nkf.exe -w8 --overwrite " & Fname
  Next j
  MsgBox "終了しました。", vbInformation
End Sub

'//
    • good
    • 1

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