Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1823 / 13645 ツリー ←次へ | 前へ→

【71702】CSV File作成マクロ AoYasu 12/3/31(土) 11:42 質問[未読]
【71705】Re:CSV File作成マクロ hint 12/3/31(土) 18:36 発言[未読]
【71706】Re:CSV File作成マクロ AoYasu 12/3/31(土) 22:08 お礼[未読]
【71712】Re:CSV File作成マクロ hint 12/4/1(日) 8:47 発言[未読]

【71702】CSV File作成マクロ
質問  AoYasu  - 12/3/31(土) 11:42 -

引用なし
パスワード
   CSVの区切りを[,]から[;]に変更するため
CSVFaileを作成するマクロをネットから引用させていただき作成したのが以下のとうりです
この中で
  ' ADODB.Streamを参照
  Set file_source = CreateObject("ADODB.Stream")
  この部分「("ADODB.Stream")」の意味が理解できません
教えていただけないでしょうか
よろしくお願いいたします
  
Sub CSV作成()
' **********************************
'       初期設定
' **********************************
  Dim csv_file_name As String
  Dim code_source As String
  Dim code_target As String
  Dim char_source As String
  Dim char_target As String
  Dim char_temp As String

' オブジェクト変数の定義
  Dim file_source As Object
  Dim file_target As Object
  
' 保存ファイル名を決定
  csv_file_name = ActiveWorkbook.Path + "\" + ActiveSheet.Name + ".csv"
' 文字コードを指定
  code_source = "Shift_JIS"
  code_target = "UTF-8"
' 置換文字を指定
  char_source = ","
  char_target = ";"
' 表示無効
  Application.DisplayAlerts = False
' **********************************
'     CSVファイルの保存
' **********************************  
' 仮シートを複製
  ActiveSheet.Copy
' CSV形式で保存
  ActiveWorkbook.SaveAs Filename:=csv_file_name, FileFormat:=xlCSV, _
    CreateBackup:=False
' 仮シートを閉じる
  ActiveWindow.Close Savechanges:=False
' **********************************
'   CSVファイルをUTF-8に変換
' **********************************
' ADODB.Streamを参照
  Set file_source = CreateObject("ADODB.Stream")
' CSVファイルの読み込み
  With file_source
    .Charset = code_source
    .Open
    .LoadFromFile csv_file_name
    char_temp = .ReadText
  End With
' 置換処理
  char_temp = Replace(char_temp, char_source, char_target)
' CSVファイルの書き出し
  Set file_target = CreateObject("ADODB.Stream")
  With file_target
    .Charset = code_target
    .Open
    .WriteText char_temp
  End With  
' 文字コードの変換
  file_source.copyto file_target
  file_target.savetofile csv_file_name, 2
End Sub

【71705】Re:CSV File作成マクロ
発言  hint  - 12/3/31(土) 18:36 -

引用なし
パスワード
   >  この部分「("ADODB.Stream")」の意味が理解できません
>教えていただけないでしょうか
ADO(Microsoft ActiveX Data Objects)の一部であるStreamオブジェクト、
ないしそれに対応するクラスの名前ではないかと思います。
そこをいくら掘り下げても余り有益なことはありません。

要は、ライブラリーの一種であるぐらいに考えて、
それをどのように使うのかに重点を置いて調べる方が有益です。
文字コードの変換などに使うことが多いと思います。
ネットで検索すれば、リファレンスや色々な応用例が見つかるでしょう。

【71706】Re:CSV File作成マクロ
お礼  AoYasu  - 12/3/31(土) 22:08 -

引用なし
パスワード
   ▼hint さん:
ありがとうございました
 使用例をさがして検討してみます

【71712】Re:CSV File作成マクロ
発言  hint  - 12/4/1(日) 8:47 -

引用なし
パスワード
   ▼AoYasu さん:
>▼hint さん:
> ありがとうございました
> 使用例をさがして検討してみます
繰り返しになりますが、質問箇所は おまじない ぐらいに考えておいて
いいでしょう。
.Charset
.Open
.LoadFromFile
.WriteText
.copyto
.savetofile
などのプロパティやメソッドを意味を調べて、理解することが
先決です。
それぞれは、名前から想定は付きますが、念のため調べる。
ヘルプを求めておいて、今後の使用に備える。
といったことが必要ではないですか?
上記ができているなら問題はないと思います。

ちなみに、それぞれのオブジェクトに対して
.Close
Set file_source = Nothing
といった後始末をしておいたほうが無難ではないかと思います。

1823 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free