• 締切済み

別のプログラムとして開いたエクセルをVBAコードでアクティブにする方法について

すいません、エクセルVBAのことで質問があります。 使っているのはExcel2000です。 1 エクセルブック"A"を開く 2 当方で使用している業務用のアプリケーションを使いデータをエクセル形式で搬出   ⇒"AAA"とは別のエクセルプログラムとして"BooK1"が開かれる このとき、ブック"A"のVBAコードに Workbooks("Book1").Activate と記載しても実行時エラーとなってしまいます。 別のエクセルプログラムで開いたブックを指定してアクティブにするにはどのようなVBAコードを記載したらよろしいのでしょうか。 同じプログラムとして開ければ問題ないのでしょうが、 当方で使っているアプリケーションですと、データを搬出するときには必ず別のプログラムとしてブックが開かれてしまう模様で どうにも回避できません。 どうぞよろしくご教示願います。

みんなの回答

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.3

アプリから出力されたbook1を一旦別名保存すりゃすむことじゃないの? またはVBの書いてあるbook (A) を後から開くとか

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >Workbooks("Book1").Activate >と記載しても実行時エラーとなってしまいます。 新規ブックですか?指定したブックで、拡張子のない "Book1"というのは、ありえません。 オープンし、元のブックで何もしないままなら、そのブックが、Active になっているはずです。 >データを搬出するときには必ず別のプログラムとしてブックが開かれてしまう模様で オートメーション・オブジェクトを使っているなら、ブック自体をオブジェクトにして使えばよいと思います。 それと、「搬出」とは何を意味するのか、プログラミングにも、Excelにもない言葉です。搬出というのは、「持ち出す」という物理的な言葉を意味するはずです。 いずれにしても、常識的にVBAプログラマなら、ご質問の内容からピンポイント解答は不可能ではないでしょうか。コードの全体をみないと、何ともいえません。通常のマクロでは、AppActivate は、ほとんど必要がありません。

回答No.1

アクティブにするだけなら、 AppActivate "Microsoft Excel - Book1" でどうでしょう。

関連するQ&A

  • [ExcelVBA] 別ウィンドウのエクセルを参照する方法

    同ウィンドウ(一つの親ウィンドウ)にBook1とBook2を開いてある状態では Book1のVBAで range("A2")=workbooks("Book2.xls").sheets(1).range("A2") というマクロを動かせば、 Book1のA2に「100」というデータが出力されます。 しかし、 別ウィンドウ(添付の画像の状態)の場合、 上のようなコードでは 「実行時エラー9 インデックスが有効範囲にありません。」となります。 別々の親ウィンドウでそれぞれのデータを開いているので、 上記と同じコードでは、Book2の場所が把握できていないので 当然エラーになります。 このように、別ウィンドウでBook1、Book2をそれぞれ開いてある状態で、 一方を参照するにはどうやったらいいのでしょうか? 添付の画像は、別ウィンドウで、Book1のボタンを押すと、 Book2を参照して、「100」というデータを取得できたという、 やりたいことのイメージです。

  • excel vba

    テーブル情報に基づきシートをコピーするVBAマクロを記述したい。 ExcelのBook111のSheet1に次のような データが入っています。 (1、2)セルにn=3という数字が入っているものとします。 その数値に合わせて、この場合は3なので Sub Sample01() Workbooks("Book3.xls").Worksheets("booksheet3").Copy After:=Workbooks("Book111.xls").Sheet(1) End Sub のようなつまり、booksheet3なるシートをBook111(固定なBOOK)にコピーしようとしています。 このようなことをVBAで書くにはどうすればいいのでしょうか。 ただしBook名とシート名はあくまでデータの値にもとづいたデータをもってくることになります。 要するに間接参照したデータに基づき処理するのをどのように記述するかという質問です。 A列 B列 1 回数 n=3 2     3     4 Book1.xls book1sheet ←n=1 5 Book2.xls book2sheet ←n=2 6 Book3.xls book3sheet ←n=3 7 Book4.xls book4sheet 8 Book5.xls book5sheet 9 Book6.xls book6sheet ←n=6 10 Abc,xls Defsheet ←n=7

  • VBAに関するメッセージ

    よろしくお願いいたします。 下記をやろうとした際、「クリップボードに大きな情報があり.....」なる メッセージが都度出てしまい、次に進みません。 これを回避する方法を教えて頂きたいのですが。 <やりたいこと> 同じ形式の複数のエクセルBOOKに入っている特定の列の特定の行範囲にあるデータを、 別の集計用エクセルBOOKの単一のシートの中に順々にコピーをしていきたいのです。 集計用BOOKの特定の行には、データBOOKのBOOK名が横にずらっと記載されて おり、集計用BOOKに組んだVBAでBOOK名を読み取り、そのBOOK名のデータBOOKを 開き、特定セル範囲(A2:A5)の値をコピーし、集計用BOOKのBOOK名が記載されて いる列に貼り付けしていく。同様に、集計用BOOKの右どなりの列に記載されている BOOK名を読み取り、そのBOOKを開き...と継続し、集計用BOOKにデータ用BOOK 名が記載されていない列まできたら、Do Whileステートメントを終了する、ということ をやりたいのです。 <問題点> 実行させると、「修飾子が不正です」なるメッセージが出てしまい 先に進まないのです。 <プログラム> Sub W() Dim ファイル名 As String Dim 列番号 As Long 列番号 = 4 Do While Cells(2, 列番号).Value <> "" ファイル名 = Cells(2, 列番号).Value Workbooks.Open "D:\学校\データ\" & ファイル名 & ".xlsx" Range("A2:A1000").Copy ThisWorkbook.Activate ActiveSheet.Paste Cells(5, 列番号) ファイル名.Activate Workbook.Application.CutCopyMode = False ActiveWorkbook.Close 列番号 = 列番号 + 1 Loop End Sub <エラー発生部分> ファイル名.Activate <補足> 「ファイル名.Activate Workbook.Application.CutCopyMode = False」 という部分はもともとなかったのですが、データが入っているBOOKを閉じる際 「クリップボードに大きな情報があります。この情報...」なるメッセージが 出てしまったため、回避策として追加修正したものです。 すみませんお手数ですが、よろしくお願いいたします。

  • VBA 「Bookがアクティブでない時にはぬける」コード

    エクセル2000 VBAについてご教授お願いします。 私が希望するコードは下記のとおりです。 「Book1がアクティブでない時にはぬける」 私が断片的にわかるのは以下のようなコードです。 「If Then」、「Exit Sub」、「Workbooks("Book1.xls") 」、「Active」 以上、よろしくお願いします。

  • Excel VBA別ブックのシートをコピーするには

    Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls)  VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート  なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが  別フォルダにもあります   Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。

  • VBAでエクセルのバージョンを取得するには

    エクセルBOOKを開いているアプリケーションがエクセル2007以降かそうでないかを、その開かれているBOOKのVBAで取得するにはどのような記述をすればよろしいでしょうか? 2007以降か、その前かでコードを分岐させたいのです。 よろしくお願いします。

  • Excel VBA コードを教えて下さい!

    お世話になっています。 今回は、次の事を実現するコードを教えて頂きたいと思います。 <データ入力ブック> A1=Book1 <----- 転記先のブック名(Excel文書名) A2="AAA" この<データ入力ブック>に入力されたデータを手掛かりにしてサブディレクトリにあるBook1のSheet2!A2に"AAA"を転記し保存。 ※2004年頃を最後にAccessのVBAにも触れていません。Excelは、一度も操作したこともなく同VBAは初めてです。 ※バージョンは、Excel2007。文書は、2003等との互換モード。 厚かましいお願いとは承知していますが、教えてもらえるととっても助かります。 非常に複雑な円の配置が自動化されたので私の仕事は明日で終わります。 月曜日からは、200文書へのデータ入力。 一々、200もある文書を検索して開いて当該のセルを探して入力していたのでは手間。 そこで、<データ入力ブック>に10項目程度の入力欄を設けて入力。 <データ入力ブック>でデータの入力・訂正も管理し、そして一括更新。 そういう仕組みを日曜日の夜の3、4時間で完成したいと思っています。 そういう事情ですので、教えてもらえるととっても助かります。

  • Excel2007VBA ブックのアクティブ化

    ●質問の主旨(2点) 1.以下のコードは、なぜエラーが返されるのでしょうか? 2.タスクバーにあるアクティブ状態ではないブックの1枚目シートを 選択するためには、以下のコードをどのように書き換えれば良いでしょうか? ●質問の補足 タスクバーにはエクセルブック「Book1」と「Book2」を表示させ、 「Book1」の「sheet1」がアクティブになっています。 Book1の標準モジュールに以下のコードを記述しています。 Sub sample1() Workbooks("Book2.xlsx").Activate Worksheets("sheet1").Select End Sub しかし実行すると「実行時エラー9インデックスが有効範囲にありません」と エラーが返されます。なぜそうなるのかが分かりません。 ご存知の方がいらっしゃればご教示よろしくお願い申し上げます。 私はVBA初心者です。

  • エクセルVBAで少数点を切り捨てる方法

    エクセルVBAであるbookのセルに(=A1*0.05)というような税額を取得するための関数が入っており、 それを Workbooks(strBname).Sheets("Sheet1").Range("A" & i).Value = Workbooks(thisWB).Sheets(mainScr).Range("A" & ii).Value のように別ブックに出力するコードを書いているのですが、 Nunberlocalを使用しても表示上は小数点を表示していないのですが セルを選択すると小数点が消えていません。 完全に少数点を切り捨てる方法はあるでしょうか?

  • EXCEL VBAについて

    VBAでCSVファイルをテンプレートのBBOKに読込むコードを 作り、CSVファイルから読込んだBOOK1データを集計する BOOK2を作成しています。 BOOK1・11/21・・・11/21・・・11/22・・・11/23と続きます      A     B     C      D 1  ID     店名   売上    日付 2 1104567   渋谷店  190,809   11/21 3 1102031   新宿店  209,808   11/21 4 1103450   横浜店  108,765   11/21 BOOK2・集計      A    B    C       D       E 1  ID   店名   11/21    11/22     11/23 2 1104567  渋谷店  190,809   203,487 3 1102031  新宿店  209,808   340,876 4 1103450  横浜店  108,765   547,627 ※BOOK1とBOOK2のIDの並び順は一致していません。 上記のBOOK1のデータをBOOK2に読込ませたいと考えています。 VLOOKUPやINDEX関数を使用しようかと考えたのですが、日付毎に ファイル名が違うのと、集計のファイルには外部参照をさせたくないと 考えています。 VBAで作成したいコードはBOOK1からBOOK2の日付のセルにIDを検索条件として日付毎のファイルを読込ませたいです。 フォームで日付を入力し、コピーするBOOK2のセルを指定後、BOOK1を選択するためにダイアログボックスを出したいです。 BOOK2のIDを検索条件としてBOOK1から一致する売上セルを抽出するコードだけでもわかれば何とか作成できそうなのですが、 ご教授いただけませんでしょうか?

専門家に質問してみよう