エラー処理についてのアドバイスをお願いします

このQ&Aのポイント
  • 現在、Excel2007でCSVファイルを取り込むVBAを作成しています。ダイアログでファイルを選択した際にエラーが発生した場合、どのようにエラー処理をすれば良いでしょうか?
  • 現在、ファイルを選択するダイアログでエラーが発生した場合、Excel2007で作成しているVBAがうまく処理できません。エラー処理の方法についてアドバイスをいただきたいです。
  • お願いですが、Excel2007のVBAでCSVファイルを取り込む際に、ダイアログでファイルを選択した際にエラーが発生した場合のエラー処理方法を教えていただけますか?
回答を見る
  • ベストアンサー

エラー処理について

お世話になっております。 現在、Excel2007でCSVファイルを取り込むVBAで作成しています。 下記のURLを参考にしています。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_030.html エラー処理について皆さんにお聞きしたい事があり、投稿させていただきました。 ダイアログでファイルを選択した際にエラーが発生した場合、どのようにエラー処理をしたらいいのでしょうか。 できれば Do Until objTS.AtEndOfStream ※この中で・・・ Loop 現在は下記のように記述していますがうまく処理できません。 正常でもエラーでもエラー扱いされてしまいます。  Do Until objTS.AtEndOfStream   On Error GoTo ErrHandler ErrHandler:   MsgBox "エラーが発生しました。Excelを強制終了します。", vbOKOnly + vbCritical, "終了"   Application.Quit   Windows("ファイル名").Close True  Loop すみませんがどうかアドバイス宜しくお願いします。 では失礼します。

質問者が選んだベストアンサー

  • ベストアンサー
  • emsuja
  • ベストアンサー率50% (1034/2055)
回答No.1

そんなところにエラー処理ルーチン書いたら毎回通ってしまいますね。 On Error GoTo ErrHandler Do Until objTS.AtEndOfStream Loop '必要ならここで On Error GoTo 0 ’Loop 終了後の処理・・・・ Exit Sub または Exit Function ErrHandler:   MsgBox "エラーが発生しました。Excelを強制終了します。", vbOKOnly + vbCritical, "終了"   Application.Quit   Windows("ファイル名").Close True  Loop こうすればエラー処理はエラーが発生したときしか通らなくなります。

digital_taro
質問者

お礼

ありがとうございました。 参考になりました。 では失礼します。

その他の回答 (1)

回答No.2

ここを熟読する。 エラーに負けない http://officetanaka.net/excel/vba/tips/tips104.htm

digital_taro
質問者

お礼

ありがとうございました。 参考になりました。 では失礼します。

関連するQ&A

  • VBAでどのようにすればいいのでしょうか。

    Excel2007でCSVファイルを取り込むVBAで作成しています。 下記のURLを参考にしています。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_030.html 皆さんにお聞きしたい事があり、投稿させていただきました。 CSVファイルの先頭行にタイトル行が指定されている場合、VBA上で除外する事は可能でしょうか。 できれば Do Until objTS.AtEndOfStream ※この中で・・・ Loop すみませんがどうかアドバイス宜しくお願いします。 では失礼します。

  • 複数のファイルに対し同じ処理を行う方法

    複数のファイルのエクセルファイルに対し、同じ処理を行うマクロを教えてほしいです。 処理するファイル数が一定でないため、現在はDo While~Loop構文を用い強引に処理しています。 しかし、この方法では処理が終わる(アクティブファイルが無くなる)とエラーメッセージが出るため、煩わしいです。 Do Until構文で、終了条件を指定したらよさそうなのですが、どのように書けばいいのかわかりません。 現在記述しているものは以下です。 -------------------------------------------------------- Sub 連続処理() Dim BookName As String Dim PathName As String PathName = "D:\A1\連続処理\" BookName = Dir(PathName & "*.xls")   Do Until BookName = ""  Workbooks.Open PathName & BookName  BookName = Dir() Loop Do While (1)   ・   ・(処理作業を行うマクロ)   ・ Workbooks(ActiveWorkbook.Name).Close savechanges:=True Loop End Sub

  • 【VB】セルが空になるまで処理を繰り返したい

    Excel VBAを使用してです。 列Aにデータがずらっと入っています。 そのデータを列Bに、 Do while ~loop か Do until ~loopを使って データが無くなるまでコピーするという処理を書きたいのです。 VB歴が浅いためひらめきません。よろしくお願いします。m(__)m

  • 合計金額を出すには動的配列?

    初投稿です。ASPで見積スクリプトを作っています。 ソースは・・・ Set ObjFSO = Server.CreateObject("Scripting.FileSystemObject") Set ObjTS = ObjFSO.OpenTextFile(data_file) Do Until ObjTS.AtEndofStream Arr = ObjTS.Readline Arr1 = split(Arr,"::") tanka = FormatCurrency(Arr1(1)) goukei = Arr1(1) * Arr1(2) Loop ObjTS.Close Set ObjTS = Nothing Set ObjFSO = Nothing ================================ この、変数:goukeiを全て加算して、 最後に見積合計を出したいんですが、 これを出すには Redim Preserve goukei() のような、動的配列を使うのですか? それとも使わなくても出来るものなんでしょうか? プロの方にとっては、簡単すぎる質問でしょうが、 分かる方、ぜひご教授お願いします。

  • 2重のDo~Loopは?

    Excel VBAですが、A列にデータが入っています。 A列のデータが変わるまで 処理1 を実行し、変われば 処理2 を実行する。データがなくなれば終了する方法が分りません。宜しくお願いします。 i = 2 Do Until Cells(i, 1) = "" Do Until Cells(i, 1) <> Cells(i - 1, 1) 処理1 Loop 処理2 Loop

  • 複数のシートに対してDo~Loopで処理を繰り返したいのですが処理を止める構文が解りません。

    処理の度にシート数が変わるブックで同じマクロを繰り返したいのですが、すべてのシートを選択してマクロを実行したところマクロに範囲指定→ソートの部分があり、処理が止まってしまいます。そこでDo~Loopを使用して順番にマクロを処理していこうと思うのですが、マクロを止める構文がよく解りません。 VBA初心者なものでいろいろ調べて以下のようなものを考えてみたのですがエラーになってしまいます。どなたかお助けください。 Do Until ActiveSheet.Previous.Is Nothing Application.Run "PERSONAL.XLS!Macro101" ActiveSheet.Previous.Activate Loop End Sub

  • ProgressBarを用いる場合、全体の処理数の求め方(Do Loop文に関して)。

    ProgressBarを用いる場合、全体の処理数を求めますが、Do Loopを用いる場合、For文と異なり必ずしもすぐに全処理数が分かるわけではありません。そのような場合、どのように全処理数を求めればよいですか? 私は、あるフォルダにあるファイルすべてを処理するプログラムを作りました。Do Loopで全てのファイルを参照し終わるまでをUntilの条件としています。したがって、いくつのファイルがあるかは分かりません。

  • VBA エラーハンドラーについて

    VBAについてお教えください。テキストファイルを開いて、データ処理を行おうと思っています。 下記のような処理をおこなっています。 On Error GoTo ErrorHandler 'ファイル番号を取得 FNo = FreeFile Do While Not EOF(FNo) ~~処理 ~~処理 Loop 'ファイルを閉じる Close #FNo ErrorHandler: ~~処理 end sub ループが無事に終わって、ファイルを閉じるところまで行くのは良いのですが、Close #FNoの後に処理がErrorHandler:に移ってしまいます。 特に問題が無ければ、ErrorHanderを飛び越えてend subに行くと思っていたのですが、認識が違うのでしょうか? それとも何らかのエラーが起こっているのでしょうか?

  • ループ処理の繰り返しについて

    お世話になっております。 単純なことで悩んでおります、どなたかわかるかたお願いいたします。 <% DO UNTIL SQLrs.EOF IF a=0 THEN %> 処理1 <% END IF SQLrs.MOVENEXT LOOP %> <% SQLrs.MOVEFIRST DO UNTIL SQLrs.EOF IF b=0 THEN %> 処理2 <% END IF SQLrs.MOVENEXT LOOP %> 上記のような処理順なのですが、問題は MoveFirstで先頭のレコードにもどらないのか、2回目のループ処理がうまく抽出できません。 原因はわかりますでしょうか?

  • フォルダのファイルを開く

    ExcelVBAについて。 「フォルダ内の「*.xls」ファイルを開く」という処理をVBAで行いたいですが、 ネット上の情報( http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_120.html )よりも 簡素に記述することは可能でしょうか? よろしくお願いします。

専門家に質問してみよう