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

ADODB.Streamを使って新規にファイルを作成することは可能ですか?

---------------------------------------------
Sub test1()
Dim n As Long

n = FreeFile

Open "C:\sample.html" For Output As #n
Print #n, "テキスト"
Close #n

End Sub

これで、新規にhtmlファイルを作れるのですが
---------------------------------------------
Sub test2()
Dim st As Object
Dim Sample As String
Set st = CreateObject("ADODB.Stream")

オブジェクトに保存するデータの種類を文字列型に指定する
st.Type = adTypeText
文字列型のオブジェクトの文字コードを指定する
st.Charset = "UTF-8"
st.Open 'オブジェクトのインスタンスを作成
st.WriteText Sample, adWriteLine 'ココでエラー
オブジェクトの内容をファイルに保存
st.SaveToFile ("c:\sample.html"), adSaveCreateOverWrite
オブジェクトを閉じる
st.Close

メモリからオブジェクトを削除する
Set st = Nothing
End Sub
---------------------------------------------

この方式で新規にファイルを生成して保存することは可能ですか?
該当部分でエラーが発生します。

A 回答 (3件)

Sub test2()


Dim st As Object
Dim Sample As String
Set st = CreateObject("ADODB.Stream")
Sample = "abc" '変数に値のセット
'オブジェクトに保存するデータの種類を文字列型に指定する
st.Type = adTypeText
'文字列型のオブジェクトの文字コードを指定する
st.Charset = "UTF-8"
st.Open 'オブジェクトのインスタンスを作成
st.WriteText Sample, adWriteLine 'ココでエラー
'オブジェクトの内容をファイルに保存 ↓新規ファイル
st.SaveToFile ("e:\sample.html"), adSaveCreateNotExist '←こっち 'adSaveCreateOverWrite
'オブジェクトを閉じる
st.Close

'メモリからオブジェクトを削除する
Set st = Nothing
End Sub

という事?
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/03/05 20:28

No2で、


>いずれにしても数値(定数)を設定する必要があります。
と書きましたが、

adTypeText
adWriteLine
adSaveCreateOverWrite

などが変数としか認識されないならば、ということです。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/03/05 20:28

以下のコードのように


adTypeTextの値を2、adSaveCreateOverWriteの値を2、というように
直接設定してもいいのですが、あるいはあらかじめ
Const adTypeText = 2
Const adSaveCreateOverWrite = 2
Const adWriteLine = 1
のように数値を設定しておいて、おくのも方法ですが、
いずれにしても数値(定数)を設定する必要があります。



Dim st As Object
Dim Sample As String
Set st = CreateObject("ADODB.Stream")

Sample = "あいうえお"
'オブジェクトに保存するデータの種類を文字列型に指定する
st.Type = 2
'文字列型のオブジェクトの文字コードを指定する
st.Charset = "UTF-8"
st.Open 'オブジェクトのインスタンスを作成
st.WriteText Sample, 1
'オブジェクトの内容をファイルに保存
st.SaveToFile ("c:\sample.html"), 2
'オブジェクトを閉じる
st.Close

'メモリからオブジェクトを削除する
Set st = Nothing


一応、数値(定数)を設定すると動きます。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/03/05 20:28

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