• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ユーザーフォーム動作で○○○.xlsはすでにひらいています警告文の対策)

ユーザーフォーム動作で○○○.xlsはすでにひらいています警告文の対策

このQ&Aのポイント
  • Excel2000 WindowsXPを使用している場合、ユーザーフォームが正しく動作しない際に「○○○.xlsはすでに開いています。2重にひらくと・・・」という警告文が表示されることがあります。この警告文を回避するためには、フォームが開いているかどうかを確認してからマクロを実行するスクリプトを作成する必要があります。
  • ユーザーフォームの修正に関しては、フォーム内のボタンを削除した場合に「実行時エラー指定されたオブジェクトをは見つかりません」というエラーメッセージが表示され、修正ができなくなることがあります。この場合、既存のフォームの修正を行うには、他のボタンを使用して修正モードに切り替えるか、フォームを再作成する必要があります。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

BookOpen というプロシージャでチェックするようにしてみました。 Sub 請求書作成() '・・・・・A Application.ScreenUpdating = False Call BookOpen("19年度請求.xls") Call 請求書データ入力 Worksheets("シート表紙").Activate Application.ScreenUpdating = True End Sub '------------------------------------- Sub 請求書印刷() '・・・・B Application.ScreenUpdating = False Call BookOpen("19年度請求.xls") Worksheets("請求書印刷").Activate Worksheets("請求書印刷").PrintPreview ActiveWorkbook.Close False ActiveWindow.WindowState = xlMaximized Application.ScreenUpdating = True End Sub '------------- Sub 請求一覧表印刷() '・・・・C Application.ScreenUpdating = False Call BookOpen("19年度請求.xls") Worksheets("keiri").Select Call 一覧表印刷用データ入力 ActiveWindow.WindowState = xlMaximized End Sub '------------- Sub BookOpen(WB_name As String) Dim WB As Workbook Dim FLG As Boolean FLG = False For Each WB In Workbooks If WB.Name = WB_name Then FLG = True Exit For End If Next If FLG = False Then 'WB_name で指定されたブックが開いていない場合は開く。 Workbooks.Open Filename:=ThisWorkbook.Path & "\請求\" & WB_name End If End Sub

aitaine
質問者

お礼

今ご指導のもと、実行しましたら私のやりたいことが完璧にできました。本当に感謝感激です。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>もし○○○.xlsが開いていないときは、開き、開いているときは開く命令をやめて 方法は2つあります。 1.開いているブック名をチェックする方法。(wb_chk1) 2.処理のエラーをチェックして適切な処理をさせる方法。(wb_chk2 / wb_chk3) Sub wb_chk1() Dim WB As Workbook Dim FLG As Boolean FLG = False For Each WB In Workbooks If WB.Name = "ABC.xls" Then FLG = True Exit For End If Next If FLG = False Then Workbooks.Open "ABC.xls" End If End Sub Sub wb_chk2() On Error Resume Next Workbooks("ABC.xls").Activate If Err() = 9 Then Workbooks.Open "ABC.xls" End If On Error GoTo 0 End Sub Sub wb_chk3() On Error GoTo JobErr Workbooks("ABC.xls").Activate On Error GoTo 0 Exit Sub JobErr: If Err() = 9 Then Workbooks.Open "ABC.xls" End If Resume End Sub >フォームの中のボタンを1個だけ削除しました。 ボタンを削除しても、ボタンに割り当てられたプログラムが残っている空でしょう。 Private Sub CommandButton1_Click() End Sub 削除したボタン名のプロシージャを削除してください。

aitaine
質問者

補足

折角ご指導いただきましたが、あれこれやっても実行できませんでした。 「○○○.xlsはすでに開いています。2重にひらくと・・・」と警告文はAからA、AからB、AからCに移動するときに発生します。 (wb_chk2 / wb_chk3)を、この中にどう入れていいか分かりません。 本当に恐縮ですが再度ご指導をお願いします。 Sub 請求書作成()・・・・・A Application.ScreenUpdating = False ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path Workbooks.Open Filename:=ThisWorkbook.Path & "\請求\19年度請求xls" Call 請求書データ入力 Worksheets("シート表紙").Activate Application.ScreenUpdating = True End Sub ------------------------------------- Sub 請求書印刷()・・・・B Application.ScreenUpdating = False ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path Workbooks.Open Filename:=ThisWorkbook.Path & "\請求\19年度請求.xls" Worksheets("請求書印刷").Activate Worksheets("請求書印刷").PrintPreview ActiveWorkbook.Close False ActiveWindow.WindowState = xlMaximized Application.ScreenUpdating = True End Sub ------------- Sub 請求一覧表印刷()・・・・C Application.ScreenUpdating = False ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path Workbooks.Open Filename:=ThisWorkbook.Path & "\請求\19年度請求.xls" Worksheets("keiri").Select Call 一覧表印刷用データ入力 ActiveWindow.WindowState = xlMaximized End Sub

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ユーザーフォームを表示されないようにしたい

    Vista excel2007 でマクロ作成中の超初心者です。 A、B、Cのブックがあります。Bブックのみマクロをワークシートに貼り付けています。 1)Aブック(マクロ記録用)の中にある、Aコマンドボタンを押すと  BブックのBシートにジャンプします。ジャンプと同時に、Bユーザーフォームを 表示しています。 2)そしてBシートには、フォームコントロールを貼り付けており、ここをクリックするとCブックCシートに飛びます。 3)ところが、CシートにはBユーザーフォームが残ったままです。このフォームを  表示されないようにしたいのです。 4)Bシートのフォームコントロールには、次のコード記述をしてあります。       Sub Cブック Cシートへ() Dim wb As Workbook Dim ws As Worksheet Dim sh As Worksheet Dim i As Long ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error Resume Next '開いて作業中の場合。 Set wb = Workbooks("CCC.xls") On Error GoTo 0 If wb Is Nothing Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\CCC.xls") End If Worksheets(1).Select End Sub どうかよろしくお願いします。 

  • エクセルVBA ユーザーフォームの終了について

    エクセルVBAでユーザーフォームを作成しています。 コマンドボタンにVBAマクロを割り当てしているのですが 思うように動いてくれないので質問します。 コマンドボタンをクリックしたら望む動作 1、ワークシートを選択 2、その後、ユーザーフォームを消す。 と言う動作にしたいのですが、2の ユーザーフォームを消す方法、書き方が分かりません どなたか教えていただけないでしょうか 1の動作は以下のように書いています。その後の書き方を お願いします。 Private Sub CommandButton8_Click() ブック名 = "VBA演習" シート名 = "sheet1" Workbooks(ブック名 & ".xls").Worksheets(シート名).Activate End Sub (ユーザーフォームの名前は"テストフォーム"としてます)

  • エクセルVBA ユーザーフォームのボタン

    ユーザーフォームにCommandButton1があります ワークシートにもCommandButton2があります ユーザーフォーム上のCommandButton1をクリックすることで、ワークシート上のCommandButton2をクリックするという命令は作れるのでしょうか? ワークシート上のCommandButton2をクリックした後の命令は出来ているのですが、そのコードをコピーしてユーザーフォーム上のCommandButton1のコードにコピーするしかないのでしょうか? 実行ボタン(CommandButton2)をワークシートに作成したので、 ユーザーフォームで入力→ ユーザーフォーム上のボタン(CommandButton1)をクリック→ ユーザーフォームは終了→ ワークシート上の実行ボタン(CommandButton2)をクリック してくれると良いかと思いました よろしくお願いします

  • EXCEL:ファイルを閉じるマクロ

    ファイルA.xlsにファイルB.xlsを開くマクロを作りました。 今度はファイルB.xlsにBを閉じるマクロを作りたいのです。 どうやったらいいのでしょうか? そのマクロは実行ボタンを作ってクリックしたら開く・閉じるをするようにしたいです。 よろしくお願いします。

  • エクセルのユーザーフォームの作り方で

    エクセルのVBAの初歩的なことで教えてください。小学生の子供用の学習ソフトを試作しています。シート1を問題の表示画面とし、シート2に問題のデータを保存しています。学習者はシート1を見て、最初に名前や使った日をユーザーフォームに入力すると、そのデータがシート1の表示されていない下の方のセルに記録されるようにマクロを組んで作りました。そのユーザーフォームを、シート1に作ったコマンドボタン(テキストは「開始」としました)を押すと表示されるようにしたいのです。そのためのコマンドボタンをどのように作ればよいでしょうか。ユーザーフォームの方は、マクロを実行すれば立ち上がり正常に入力(登録)できます。VBAの本を読んで独学で勉強し始めたばかりですので、できればわかりやすく教えてください。

  • ExcelVBAのユーザーフォームの起動

    いつもすみません。 ExcelVBAで作成したユーザーフォームの画面をファイルを開いた直後に表示させることは可能でしょうか? ちなみに、ユーザーフォームが表示される前に、「マクロを有効にする」というボタンをクリックするぐらいのことはOKなのですが、、、 要は、ファイルを開いてからマクロの実行を手動で実行したくないということなのです。 (ボタンとか、ツールバーのメニューというのもダメなのです。) わがままなお願いですが、ご教授お願いします。

  • BVAユーザーフォーム上でのオプションボタンについて

    BVAを3時間前から勉強しだした超初心者です。よろしくおねがいします。 エクセルVBAのユーザーフォーム上でオプションボタンをA・B・Cと3つ、コマンドボタンを1つ作成します。 A・B・Cのどれかを選択した状態でコマンドボタンをクリックしたときに、シート1のA列2行目から下に順番にデータとして、Aをクリックしたときにはa、Bをクリックしたときにはb、Cをクリックしたときにはcが入力されるようにコードを作りたいです。 今試行錯誤して作ったものは、オプションボタンをクリックした時点でシート1に入力されてしまうため困っています。

  • XCELのVBAマクロで次のことが実行できますか。

    XCELのVBAマクロで次のことが実行できますか。 (前提)WINDOWSで (1)MYDOCのフォルダAにExcelファイルA1.xlsからA9.xlsまで9個のファイルと、もう一つマクロBBの入ったExcelファイルB.xlsがあります。 (2)各Ai.xlsには、Aisheet(i=1カラ9)と名前のsheetが1つのみあります。 (処理したいこと) A1.xlsを開き、A1sheetを、B.xlsへcopyし、そのシートに対してマクロBBという処理を実行します。 続いて同様にA2.xlsを開き、A1sheetを、B.xlsへcopyし、そのシートに対してマクロBBという処理を実行します。 以下A9まで実行したい。 (質問)Bのマクロに新たにCCというマクロを作り、CCを実行することで、自動的に(処理したいこと)を実行してしまうようなものを作れますか。 また作るとしたらおおよそどんな風に作ればいいでしょうか。 ご回答よろしくお願いします。

  • 各シートから浮遊するボタンでtopシートに戻すには

    EXcel2000を起動し、 1.sheet1に表示→ツールバー→フォームからボタンを5個配置。 2.それぞれマクロを登録しました。 3.これらのボタンをクリックすると表紙.xlsの中にある各シートに飛びます。 4.また各シートにはそれぞれsheet1に戻るというボタンをつけました。(シートが多数あると面倒です)そしてブック名は、AAA.xls としました。 5. そして、AAA.xlsのsheet1のボタンに、 同じフォルダの中のBBB.xls というブックを開くマクロをつくりました。その中には多くのシートがあり、その中にBBB.xlsのsheet1に戻るというボタンをまた作らなければなりません。 6.私がしたいことはどんなにたくさんのシートがあろうと、常時表示されたボタンひとつで、sheet1に戻るというボタンを作りたいのです。そのボタンはAAAとかBBBだけのブックだけに使えるようにしたいです。 7.なんだか説明がへたですがよろしくお願いします。

  • エクセル ユーザーフォーム ワークシート表示

    現在,マクロを勉強中です。 ユーザーフォームに,3つのラベルを設定し,それぞれのラベルをクリックすると,「初期設定」または「4月」または「5月」のシートを表示し,ユーザーフォームは消すというものを試みています。 シート名は,「初期設定」「4月」「5月」です。 1つめのラベルをクリックしたときに実行されるコードは Sub Label1_Click() Sheets("初期設定").Activate Unload Me End Sub で設定したのですが,ユーザーフォームが消えるのですが,何のシートも表示されません。 実行したいことだけを考えると,ハイパーリンクでも可能なのですが,勉強もかねて質問させていただきたいと思います。 どこか修正すべきコードがありましたらご教授くださるとありがたいです。