質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
87.20%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

VBA

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

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

受付中

エクセルファイルをcsvファイルへ出力・保存したいです

opsy
opsy

総合スコア4

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

VBA

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

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

3回答

0評価

0クリップ

697閲覧

投稿2021/12/03 08:26

前提・実現したいこと

VBA初心者です。
エクセルファイルをcsvファイルへ出力・保存したいです。
・文字コードはutf-8
・bom無し
・文字化けなし
を目指しています。
何卒宜しくお願い申し上げます。

発生している問題・エラーメッセージ

コンパイルエラー: 変数が定義されていません

のエラーメッセージが出ます。
.LineSeparator = adLF
の部分で引っかかっている?ようです。

該当のソースコード

VBA

Option Explicit Sub writeCSV_utf8N() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets(1) Dim csvFile As String csvFile = ActiveWorkbook.Path & "\data_utf8.csv" 'ADODB.Streamオブジェクトを生成 Dim adoSt As Object Set adoSt = CreateObject("ADODB.Stream") Dim strLine As String Dim i As Long, j As Long i = 1 With adoSt .Charset = "UTF-8" .LineSeparator = adLF .Open Do While ws.Cells(i, 1).Value <> "" strLine = "" j = 1 Do While ws.Cells(i, j + 1).Value <> "" strLine = strLine & ws.Cells(i, j).Value & "," j = j + 1 Loop strLine = strLine & ws.Cells(i, j).Value .WriteText strLine, adWriteLine i = i + 1 Loop .Position = 0 'ストリームの位置を0にする .Type = adTypeBinary 'データの種類をバイナリデータに変更 .Position = 3 'ストリームの位置を3にする Dim byteData() As Byte '一時格納用 byteData = .Read 'ストリームの内容を一時格納用変数に保存 .Close '一旦ストリームを閉じる(リセット) .Open 'ストリームを開く .Write byteData 'ストリームに一時格納したデータを流し込む .SaveToFile csvFile, adSaveCreateOverWrite .Close End With MsgBox "csvに記載完了" End Sub

試したこと

色々ネットを検索してみたのですが、該当するエラーに対応する回答が見つからず、
困り果ててしまい、こちらで質問させていただきます。

補足情報(FW/ツールのバージョンなど)

Excel for Microsoft 365 を使用しています。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

VBA

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

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。