VABではStreamWriterクラスは使用できないのでしょうか?
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2023/7/10 11:15:27
StreamWriter は .NET や .NET Framework のクラスです。
VBA などから使える ActiveX オブジェクトのクラスではありません。
Excel VBA からの CSV 出力であれば、こういった方法を使います。
(1) ワークシートの SaveAs メソッドで CSV 形式を指定する
https://www.officepro.jp/excelvba/book_new/index9.html
(2) FreeFile 関数 / Open ステートメント/Close ステートメント/ Print # ステートメントを使う
※Shift_JIS 前提。
https://excel-ubara.com/excelvba1/EXCELVBA418.html
(3) TextStream オブジェクト (Microsoft Scripting Runtime) を使う
※Shift_JIS もしくは UTF-16 の 2 種類。
https://vbabeginner.net/howto-use-filesystemobject-textstream/
(4) Stream オブジェクト (Microsoft ActiveX Data Objects Library) を使う
※Shift_JIS 、UTF-8、UTF-16 など、多種多様な文字コードに対応
https://dailyrecords.blog/archives/26027
https://excel-ubara.com/excelvba5/EXCEL220.html
VBA などから使える ActiveX オブジェクトのクラスではありません。
Excel VBA からの CSV 出力であれば、こういった方法を使います。
(1) ワークシートの SaveAs メソッドで CSV 形式を指定する
https://www.officepro.jp/excelvba/book_new/index9.html
(2) FreeFile 関数 / Open ステートメント/Close ステートメント/ Print # ステートメントを使う
※Shift_JIS 前提。
https://excel-ubara.com/excelvba1/EXCELVBA418.html
(3) TextStream オブジェクト (Microsoft Scripting Runtime) を使う
※Shift_JIS もしくは UTF-16 の 2 種類。
https://vbabeginner.net/howto-use-filesystemobject-textstream/
(4) Stream オブジェクト (Microsoft ActiveX Data Objects Library) を使う
※Shift_JIS 、UTF-8、UTF-16 など、多種多様な文字コードに対応
https://dailyrecords.blog/archives/26027
https://excel-ubara.com/excelvba5/EXCEL220.html
投稿者 ヤマダ  (社会人)
投稿日時
2023/7/10 11:21:51
魔界の仮面弁士 さんご回答ありがとうございます。
そうだったのですね、勉強になりました。
また、参考ページのリンクも大変助かります。
ありがとうございました。
そうだったのですね、勉強になりました。
また、参考ページのリンクも大変助かります。
ありがとうございました。
今まではVB..NETを触っていたので、.NETで使っていたコードを流用しようと思い、以下の処理を加えようとしたところ、構文エラーとなりました。
Public Function Csv_open(ByVal iOmode As Boolean, _
ByRef oSt As System.IO.StreamWriter, _
ByVal iFnm As String) As Short
On Error GoTo ErrorHandler
oSt = New System.IO.StreamWriter(iFnm, iOmode, System.Text.Encoding.GetEncoding("shift-jis"))
Csv_open = 0
ErrorHandler:
Csv_open = -1
End Function
ネットでVBAでStreamWriterクラスを使った記事がなかったので、VBAではStreamWriterクラスは使用できないのかと思い質問いたしまた。
もし、使えるのであれば修正箇所を教えていただきたいです。
よろしくお願いします。