- ベストアンサー
テキストファイルへの出力方法
テキストファイルへログを出力したいのですが、 VBの記述がわかりません。 やろうとしていることは、 ・Excelオープンと同時にログファイルをオープン ・ボタン押下時にログファイルに出力 です。 ファイルのオープンでは 'ワークブック オープンイベント Dim fs1, a As Object Set fs1 = CreateObject("Scripting.FileSystemObject") Set a = fs1.CreateTxtFile("ログファイル名", True) と記述し、出力時には 'ボタンクリックイベント a.WriteLine("出力文字列") として出力をしようと思うのですが、 プロシージャが違うためか、出力時に 「オブジェクト変数またはWithブロックが定義されていません」とのエラーが出てしまいます。 Withブロックの定義は正しく書かれてあります。 どうやって回避できるでしょうか? 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
私はEXCELではVBをあまり使わないので専門外ですが (1)CreateTxtFile は 正しくは CreateTextFile ではないでしょうか。 (2)Dim宣言をするのは VBでは標準モジュールなのですがEXCELの場合はWorkBookのGeneralですね。 これは Dim宣言した関数 aが認識されていないと いうことではないですか。 VBの場合は Dimの代わりにPublicを使用します。 ボタンのあるシートにではなく Workbookのモジュールにイベントを書いたらどうなりますか。 違っていればごめんなさい
その他の回答 (2)
- xyz0108f
- ベストアンサー率39% (80/202)
変数の定義をプロシージャの外でやってみてはどうでしょうか? ファイルのオープンイベント内で変数を定義しているのであればコマンドボタンの処理のところでは使用できないですよね…。 始めにPrivate変数で宣言をするかモジュールでpublic変数で宣言して試してみてください。
お礼
回答ありがとうございます。 対策として今書いているのは、標準モジュールの中に引数によってファイルオープンとファイル出力を行う共通処理です。 fs1、aは標準モジュールの中でPublic宣言しています。 ファイルオープンの呼び出しは ExcelObjectsの中のThisWorkBookで行い、 ファイル出力の呼び出しは ボタンクリックイベントで行っていますが、 やはり同じエラーが出力されてしまいます。
- Ha88888
- ベストアンサー率33% (1/3)
こんにちは。 >Set a = fs1.CreateTxtFile("ログファイル名", True) => Set a = fs1.CreateTextFile("ログファイル名", True) では? はずしていたらすいません!!
補足
すみません、質問欄への記入の間違いでした(^^; 実際のプログラムではText..と書いてオープンはできています。出力方法を模索中です。 ありがとうございました。
お礼
あれっ、No.2のお礼のように書いていたのにうまくいかなかったのですが、今デバッグを止めて動かしてみたら出力されました。解決です! すみません、みなさんありがとうございました!