いつもお世話になっています。
環境->Wondows2000 VB6.0
ListViewに表示されているものボタンを押した時にExcelに書き込む処理をしているのですが
Set xlSheet = xlBook.Worksheets(1)
xlApp.Visible = True
xlBook.Save
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
ボタンを押した時にはこのようにExcelを表示しています。
Excelを閉じてもう1度ボタンを押した時
Excelが表示されません。
Excelを終了していないからかと思い
Excelをオープンする前に
xlApp.Quitとやってみたのですがうまくいきません。
あとExcelに書き込む時にフォントの指定や中央揃えなどはできるのでしょうか?
何かいいアドバイスよろしくお願い致します。
開放の手順が間違っててExcelのプロセスが残ってるんじゃないでしょうか?
花ちゃんのホームページにVBからExcelを扱う方法が色々載ってます。
http://www.bcap.co.jp/hanafusa/
> Excelをオープンする前に
> xlApp.Quitとやってみたのですがうまくいきません。
オープンする前じゃなく、開放する前にキチンとした手順でExcelを閉じてください。
> あとExcelに書き込む時にフォントの指定や中央揃えなどはできるのでしょうか?
基本的にExcelで出来ることはVBから全て操作できる、と思っててイイと思います。
マクロの記録を使えばどういうコードを書けばいいかのヒントになります。
レスありがとうございます。
>オープンする前じゃなく、開放する前にキチンとした手順でExcelを閉じてください。
Excelを保存→Excelを終了→Excelを解放
でよろしかってだすよね?
やってみましたができません。
Set xlSheet = xlBook.Worksheets(1)
xlApp.Visible = True
デバックするとここで↑(2回目の場合)
xlBook.Worksheets(1)=<オブジェクト変数またはWithブロック変数が設定されていません。>
xlApp.Visible=<オブジェクト変数またはWithブロック変数が設定されていません。>
となります。
オブジェクトがセットさせてないということですか?
>基本的にExcelで出来ることはVBから全て操作できる、と思っててイイと思います。
>マクロの記録を使えばどういうコードを書けばいいかのヒントになります。
フォントの設定はできました。
中央揃えはマクロを使ってやならければいけないということですか?
> オブジェクトがセットさせてないということですか?
おそらく、そういう事でしょう。xlBookやxlAppがNothingになっていませんか?
変数xlBookなどにオブジェクトをSetしている部分のコードを、見直してみてください。
ボタンが押された時の処理に
Excelを保存→Excelを終了→Excelを解放
の処理が行われたいたので
Form_Unload の中で
Excelを終了→Excelを解放
をするようにしたらうまくいきました。
ありがとうございました。
中央揃えはどのようにしたら設定できますか?
あとセルに書き込む時『9,999』みたいに金額の表示で書き込みすることも可能ですか?
> 中央揃えはマクロを使ってやならければいけないということですか?
そういう意味ではありません。
マクロの記録を開始してから終了するまでに行った動作がVBAに記録されます。
そのコードを参考にすれば出来ます、という意味です(伝わりますか?)。
分からなければ一度マクロの記録をしてみて下さい。
かなり便利です。
> 中央揃えはどのようにしたら設定できますか?
> あとセルに書き込む時『9,999』みたいに金額の表示で書き込みすることも可能ですか?
Rangeオブジェクト(またCellオブジェクト)のHorizontalAlignmentプロパティで水平位置を、
NumberFormatLocalプロパティで金額表示の指定が出来ます。
この辺もマクロの記録を取ればすぐに分かります。
> Excelを保存→Excelを終了→Excelを解放
> の処理が行われたいたので
その方法でも構いませんが、とにかく、「xlApp」や「xlBook」に
オブジェクトをSetする動作が必要となります。
# オブジェクトを解放した後で Excelの操作を行いたいなら、
# 当然、再度Setしなおす必要があります。
> 中央揃えはどのようにしたら設定できますか?
RangeオブジェクトのHorizontalAlignmentプロパティに
定数xlHAlignCenterを指定する事で設定できます。
> あとセルに書き込む時『9,999』みたいに金額の表示で書き込みすることも可能ですか?
3桁区切りにしたいなら、RangeオブジェクトのNumberFormatプロパティに
"#,##0" という文字列を指定する事で設定できます。
負数を赤で表示するために、"#,##0;[Red]-#,##0" を指定したり、
1000単位で表示するために、"#,##0,"のように指定してたり、
分数で表示するために、"#,##0 ##0 / ##0" のように指定する事もできます。
詳細は、Excel VBAのヘルプで確認してみてください。
レスありがとうございます。
とても丁寧に教えてくださってありがとうございます。
おかげで解決できました。
ツイート | ![]() |