• 締切済み

フォームの連続操作でエラーが出てしまう。。。

おはようございます。 ご教授頂きたく、書き込み致しました。宜しくお願 い致します。 フォームにて抽出条件を指定後、クエリーを実行させ、EXCELに出力させる処理を、VBにて行っています。 連続操作(出力したEXCELは閉じて、ACCESSは開いた ままで、抽出条件を変えて再度実行させる)を行う と「オブジェクト変数またはWithブロック変数が設 定されていません」とエラーメッセージが出てしま います(この時、EXCELにデータだけは出力されてい ます) ACCESS及び出力されたEXCELを、一旦閉じて、再度ACCESSを起動し、条件指定後、抽出を行うと、エラ ーも出力されず、問題なく処理が始まります。 VB上では下記の様に記述はしています。 Exit_コマンド2_Click: Exit Sub objexcel.ActiveWorkbook.Close True objexcel.Quit Set objexcel = Nothing Err_コマンド2_Click: MsgBox Err.Description Resume Exit_コマンド2_Click End Sub どうしても分からないので、書き込みさせて頂きました。連続操作をしてもエラーが出ないようにするには、どのようにすれば宜しいでしょうか?

みんなの回答

  • kikaida-
  • ベストアンサー率69% (37/53)
回答No.2

やりたいことはこんな感じでしょうか? 1.フォームに条件を入力 2.コマンド1をクリックで入力された条件からデータを抽出しaaaaテーブルを作成。ここからexcelへエクスポート。 3.コマンド2をクリックでExcelを終了。 これだけならExcelを開くところは以下の部分だけでよく、objexcelなどを使用する必要はありません。 DoCmd.OutputTo acOutputTable, "aaaaa",acFormatXLS, "\aaaaa.XLS",True ただしこのやりかただと、コマンド2クリックではExcelは終了しないのでExcel側で終了させる必要があります。

  • kikaida-
  • ベストアンサー率69% (37/53)
回答No.1

Excelを開くところのソースに問題がありそうです。その部分を載せてもらわないとなんともいえません。 またobjexcel変数のスコープは?

yoshi7292
質問者

補足

早速のご連絡、有難うございますm(__)m >Excelを開くところのソースに問題がありそうです。 EXCELは下記の様にセットしています。 Set objexcel = CreateObject("Excel.Application") objexcel.Visible = True DoCmd.OutputTo acOutputTable, "aaaaa",acFormatXLS, "\aaaaa.XLS",True >objexcel変数のスコープは? ごめんなさい、自分VB始めたばかりで、ここの意味がよく分かっていません。

関連するQ&A

  • アクセスVBAのエラーについて

    フォームを閉じるためにフォームにボタンを置いて、イベントプロシージャに下記のように書き込みました。すると添付画像のエラーが返ってきてマクロが動きません。 Private Sub コマンド103_Click() On Error GoTo Err_コマンド103_Click DoCmd.Close Exit_コマンド103_Click: Exit Sub Err_コマンド103_Click: MsgBox Err.Description Resume Exit_コマンド103_Click End Sub で、「ファイル-オプション-現在のデータベース」の”フォームの表示”を問題のフォームに切り替えたら問題なく動作します。 つまり”フォームの表示”で選んだフォームでしかコマンドボタンのマクロが動きません。全てのフォームでマクロが動くにはどうしたらよいのでしょうか?

  • アクセスのVBAについて、フォームの On Error Goto についておしえてください。

    Private Sub cmd次_Click() On Error GoTo Err DoCmd.GoToRecord , , acNext Exit_Click: Exit Sub Err: MsgBox "この先にレコードがなくなると、ここをつうかするのだろうか。" Resume Exit_Click End Sub 一連の流れについて,ご解説ください。よろしくお願いいたします。

  • ACCESS エラーメッセージ表示されない理由

    ACCESSのエラーメッセージ表示について教えてください。 ACCESS2000でマクロを作成しました。 あるデータを読み込み、テーブルへ反映させるマクロです。 マクロを直接実行すると、データが存在しないとき、当然、エラーメッセージが表示されます。 ところが、このマクロをフォームから実行させると、同じ状況でエラーメッセージが表示されません。 どこに問題があってメッセージが表示されないものなのでしょう。(正常系の処理は正しく行われます) フォームのボタンにマクロの実行を定義しただけなのですが。 VBAを開いてみても、下記のとおりクリックされたときエラーならメッセージを表示しなさいと定義されています。 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click   Dim stDocName As String   stDocName = "マクロ名"   DoCmd.RunMacro stDocName Exit_コマンド1_Click:   Exit Sub Err_コマンド1_Click:   MsgBox Err.Description   Resume Exit_コマンド1_Click End Sub

  • 「パラメータが少なすぎます。3を指定してください。」って???

    Access2000で検索フォームを作っています。 フォームには、「下限」、「上限」と名前をつけたテキストボックスを2つ配置、 どちらも書式は数値型にしています。 このテキストボックスに入力した数字の範囲のレコードを抽出し、 結果を別のフォーム(「結果」)に出したいと考えてます。 そのため、以下のようなコードを書きました。 Private Sub 抽出_click() On Error GoTo err_抽出_click Set db = CurrentDb Set rs = db.OpenRecordset("対象年齢", dbOpenDynaset) rs.Filter = "対象年齢ID Between Me!下限 And Me!上限" Set rs = rs.OpenRecordset DoCmd.OpenForm "結果", , , , acFormReadOnly rs.Close exit_抽出_click: Exit Sub err_抽出_click: MsgBox Err.Description Resume exit_抽出_click End Sub 「結果」フォームは対象年齢テーブルを基にしています。 これを実行すると、「パラメータが少なすぎます。3を指定してください。」という メッセージが出てしまうのですが、 Private Sub 抽出_click() On Error GoTo err_抽出_click DoCmd.OpenForm "結果", , , "[対象年齢ID] Between [Forms]![検索]![下限] And [Forms]![検索]![上限]", acFormReadOnly exit_抽出_click: Exit Sub err_抽出_click: MsgBox Err.Description Resume exit_抽出_click End Sub だと実行できます。 条件がこれ1つならば、下を使うのですが、 実際には、データ型の異なる複数の条件のAND検索を行うため、 上のようなものにしたいと考えています。 一体どうすれば、動くようになるのでしょうか? よろしくお願いします。

  • GoToRecordで実行時エラー '2105'

    教えてください。Access2000です。 Private Sub 次へ_Click() On Error GoTo Err_次へ_Click On Error Resume Next DoCmd.GoToRecord , , acNext Exit_次へ_Click: Exit Sub Err_次へ_Click: MsgBox ERR.Description Resume Exit_次へ_Click End Sub って書いたのですが、最後のレコードまで行った後 「次へ」をクリックすると実行時エラーになってしまいます。 移動できませんとかメッセージで逃げたいのですがどうすればいいのでしょうか? お願いします。

  • クエリデータの取り出し

    下記のようなコードを使い、データだけをEXCELファイルに出していますが、間違えてEXCELファイルを削除した場合データが出ません、 アクセスでEXCELファイルを作成し、クエリデータを出す事は可能でしょうか?初心者の為コードの使い方等々解りません、宜しくお願いします。 Private Sub コマンド62_Click() On Error GoTo Err_コマンド62_Click Dim stDocName As String stDocName = "集計" DoCmd.TransferSpreadsheet acExport, , "集計", "C:\Documents and Settings\user\デスクトップ\ABC\data2" Exit_コマンド62_Click: Exit Sub Err_コマンド62_Click: MsgBox Err.Description Resume Exit_コマンド62_Click End Sub

  • Access VBAでのフィルタ処理

    アクセス2003を使用しています。 今VBAを使用して、フォームのテキストボックスに記入された文字列を検索条件に、 クエリからデータ抽出したいのですが、 うまくいきません。 解決したい事は、 「abc*」といったように、前方が一致している文字列データを すべて抽出するといった処理です。 今は下記のようなプログラムを組んでいます。 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "クエリ1" DoCmd.OpenQuery stDocName, acNormal, acEdit If IsNull(テキストボックス) Then Else stLinkCriteria = "[クエリデータ]=" & "'" & Me![テキストボックス] & "'" End If DoCmd.ApplyFilter stDocName, stLinkCriteria Exit_コマンド1_Click: Exit Sub Err_コマンド1_Click: MsgBox Err.Description Resume Exit_コマンド1_Click End Sub これだと完全に一致しなければ抽出してくれません。 どの様に変更すればよいでしょうか? よろしくお願いします。

  • accessで、フォームの検索をしたいのです。

    今ACCESSで、データ管理をしているのですが、どうしてもうまくいかなくて、困っています。 毎日の出来事を記述するテーブル用のフォームを作って、記述していて、そのデータがたまってきています。 他のフォームに、検索用のテキストボックスとコマンドボックスを作って検索したいのです。 コントロールウィザードを使うと、完全一致のデータしかでてこないのですが、部分一致のレコードを表示させるにはどうすればいいのですか? 教えていただけるとうれしいです。 コントロールウィザードを使うと以下のようになります。多分少しどこかを変えるといいのではないかと思うのです。どうか、よろしくお願いします。 Private Sub コマンド144_Click() On Error GoTo Err_コマンド144_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = ChrW(21839) & ChrW(12356) & ChrW(21512) & ChrW(12431) & ChrW(12379) & ChrW(12513) & ChrW(12514) stLinkCriteria = "[内容]=" & "'" & Me![テキスト105] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_コマンド144_Click: Exit Sub Err_コマンド144_Click: MsgBox Err.Description Resume Exit_コマンド144_Click End Sub もしかして。。と思い、以下の部分、 stLinkCriteria = "[内容]=" & "'" & Me![テキスト105] & "'" を次のように変えてみたけれど、やっぱりうまくいきませんでした。 stLinkCriteria = "[内容]=" & "'" & "*" & Me![テキスト105] & "*" & "'" よろしくお願いします。

  • 両方の条件でフィルターをかけたいです

    こんにちは。 今、フォームに別々に条件を指定し、抽出するようにしております。 (1) Private Sub コマンド65_Click() DoCmd.ApplyFilter , "[会場名] like '*" & Me.テキスト63 & "*' " Me.FilterOn = True Exit Sub Err_コマンド65_Click: MsgBox Err.Description End Sub (2) Private Sub コマンド70_Click() f_status = "施工日 >= '" & 開始日 & "'" f_status = f_status & " AND 施工日 <= '" & 終了日 & "'" Me.Filter = f_status Me.FilterOn = True End Sub 今の状態では正常に動くのですが、 条件が、(1)かつ(2)という条件でフィルターをかけなければ ならない、と作成してから気づきました。 いろいろやってみたのですが、 どれもエラーになるばかりで。。。

  • Accessで空のExcelファイルを出力する方法について

    下記を実行した所、C:\excel.xlsのセルA1に「1」と記述されました。 【ソース】 Private Sub コマンド0_Click() Dim objExcel As Object Set objExcel = CreateObject("Excel.Application") objExcel.Workbooks.Open FILENAME:="C:\excel.xls" objExcel.Range("A1") = 1 objExcel.Application.ActiveWorkbook.Save objExcel.Application.Quit End Sub しかし、C:\excel.xlsが存在しない状態で実行すると下記のエラーメッセージが表示されました。 【エラーメッセージ】 実行時エラー '1004' 'C:\excel.xls'が見つかりません。ファイル名およびファイルの保存場所が正しいかどうか確認してください。 上記現象を回避する為には、毎回空のExcelファイルを出力した上でセルに値を書き込めば良いと思いましたが、空のExcelファイルを出力する方法が分かりませんでした。 その為、何かアドバイスをいただける方がいらっしゃいましたら、どうかよろしくお願いします。

専門家に質問してみよう