VB6でのCSVファイル処理について


Sarra  2006-07-19 23:35:43  No: 96022

お世話なっております。今回はVB6を使ったCSVファイルの処理について、聞きたいことがあります。サーバからファイルをダウンロードし、開いた後に、手入力の処理があって、その処理が終わるまで、プログラムを待機状態にして頂きたいのですが、そのソースの書き方についてよく分からないので、どなたが教えて頂けませんか。宜しくお願いいたします。 
        Dim xlApp As New Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        Set xlBook = xlApp.Workbooks.open(myFile)
        Set xlSheet = xlBook.Worksheets("ml")
        xlApp.Visible = True

        Form1.SetFocus
        Label1.Caption = vbCrLf & "  ☆  ML-CSVファイルを開きました  ☆  "
        
        xlApp.DisplayAlerts = False
        
        'データ処理を行う
*****************************************************
        Do While xlBook.StillExecuting
            DoEvents ' 前の処理が終わるまで待機
        Loop
        
        xlBook.SaveAs myFile, xlCSV

            
        xlApp.DisplayAlerts = True
        xlBook.Close
        
        Form1.SetFocus
        Label1.Caption = vbCrLf & "  ☆  ML-CSVファイルを閉じました  ☆  "


Sarra  2006-07-19 23:38:47  No: 96023

補充です:
        Do While xlBook.StillExecuting
            DoEvents ' 前の処理が終わるまで待機
        Loop
を使うと、実行時エラー'438'
「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」
というエラーが出ます。


特攻隊長まるるう  2006-07-20 00:05:54  No: 96024

>        Do While xlBook.StillExecuting
>            DoEvents ' 前の処理が終わるまで待機
>        Loop
>を使うと、実行時エラー'438'
>「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」
>というエラーが出ます。
そりゃ、自分で勝手に考えた命令だからでしょ?(^^;)
『用意されてない命令を書かれても何をすればいいか分かりません。』という
意味のエラーメッセージが出ているわけですが、どこが疑問なんですか???

>手入力の処理があって、その処理が終わるまで、プログラムを待機状態にして頂きたいのですが
このままでは終わりの判断ができません。
10分くらいトイレに行ってたら入力は終わったと勝手に判断して
保存していいのですか?どういう条件で終わりだと判断しますか?

普通は[ファイル保存]のボタンを用意するなり、何らかのユーザの
アクションで次の処理を行います。


Sarra  2006-07-20 00:22:09  No: 96025

特攻隊長まるるうさん、早速返事してくださって、ありがとうございます。
終わりの判断は、CSVファイルの閉じるボタンが押された時点となります。
やはりボタン一つでファイルのダウンロード、編集、アップロードすることは無理でしょうか。
今、「ファイル保存」というボタンを作って、実行してみます。
ご指導ありがとうございます。


特攻隊長まるるう  2006-07-20 00:48:32  No: 96026

>終わりの判断は、CSVファイルの閉じるボタンが押された時点となります。
というか Excel のブックを閉じる時ね?WithEvents を使えば Excel 側の
イベントをVB側で取れると思います。
>今、「ファイル保存」というボタンを作って、実行してみます。
そちらを採用するなら上の処理は必要なくなりますね。

>やはりボタン一つでファイルのダウンロード、編集、アップロードすることは無理でしょうか。
実力と設計次第でしょう。


Sarra  2006-07-20 01:51:21  No: 96027

特攻隊長まるるうさん、ご指導ありがとうございます。
とりあえず「ファイル保存」というボタンを作って、プログラムを作成しました。
また、WithEventsの使い方について、一応調べてところ、
Dim WithEvents MyButton As Office.CommandBarButton
という使い方で宜しいですか。
またご指導を宜しくお願い致します。


特攻隊長まるるう  2006-07-20 03:50:34  No: 96028

>とりあえず「ファイル保存」というボタンを作って、プログラムを作成しました。
>また、WithEventsの使い方について、一応調べてところ、
>Dim WithEvents MyButton As Office.CommandBarButton
>という使い方で宜しいですか。
ごっちゃになってるかもね。

まず、ボクが最初に意図した
>「ファイル保存」というボタンを作って
はフォーム上にボタンを追加するということです。CSVファイルを
閉じた時には保存しません。
ユーザに編集作業が終わった時点でフォーム上のボタンを押して
もらいます。そのイベントをきっかけにCSVファイルを保存して
終了します。

>Dim WithEvents MyButton As Office.CommandBarButton
 # ローカル変数で無いなら、Dim はやめて Private とかにしてください。

上のコードを使うとすると、VBからExcelメニューを追加してExcelメニューの
ボタンを新しく用意するということ?別にそれでもいいけど、
>CSVファイルの閉じるボタンが押された時点となります。
の閉じるボタンってどれのこと?タイトルバーの右端の×ボタンの
ことではないの?あれは CommandBarButton じゃないけど?。

WithEvents を使うならボタンのイベントではなくって、
Workbook.BeforeClose イベントとかでいいと思う。。。


ヤマ@文系  2006-08-05 18:50:13  No: 96029

横から失礼します。
色々みてるともう、大変なんだろうと思うので
Webbrowserコントロールでダウンロードして
そこに表示させて処理を行ってもらい、
終了時にquery_unloadあたりで
inetかなにかでアップしてしまうというのはどうでしょうか。
inetならstillexecutingは使えますしね(^^;
多分これが楽かなと思いました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加