vbaで別プロセスのexcelファイルを起動

このQ&Aのポイント
  • VBAを使用して別のプロセスでExcelファイルを開く方法について教えてください。
  • 手動で行う場合は、まず通常通りにExcelファイルを開き、次にWindowsのスタートメニューからExcelを開くことで実現できます。
  • VBAからVBSなどの別のプログラムを呼び出してファイルを開く方法もありますが、VBA内で完結させたい場合はどのようにすればよいでしょうか。
回答を見る
  • ベストアンサー

vbaで別プロセスのexcelファイルを起動

ネット上で探したのですが見つからなかったので教えてください。 質問したい内容は以下の質問と同じような内容ですが、以下のページでは答えは出ていなかったみたいです。 http://soudan1.biglobe.ne.jp/qa5502114.html 【質問】 単純にWorkbooks.addや.openとしてしまうと同じプロセスからエクセルファイルを開いてしまいます。 別プロセスでファイルを開く方法を教えてください。 ※注意  上記の質問でも起こっていますが、この質問だと質問内容の食い違いが起こってしまう可能性があります。 【詳細】 簡単に言い直すと別ウィンドウでエクセルをvbaから開く方法を教えてください。 手で同じことを行う場合はまず普通にエクセルファイルを開き、次にwindowsスタートメニューからエクセルを開くとこれが実現できます。 別の方法として、vbaからvbs等の別のプログラムを呼び出して、ファイルを開く事で実現はできましたが、できればvba内で完結させたいです。 方法のご教授をお願いいたします。

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

  • ベストアンサー
  • t-aka
  • ベストアンサー率36% (114/314)
回答No.1

こんな感じでしょうか。Cドライブの直下に2.xlsxというファイルがあるとします。 Sub main() Call Shell("EXCEL c:\2.xlsx") End Sub Shell関数を使用してEXCELを起動します。 このとき引数として開きたいワークブックを指定すれば 別プロセスで、そのワークブックを開くことができます。

napanapana
質問者

お礼

回答ありがとうございます。 返事遅くなりましたが、この方法で実装できました、ありがとうございました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

>別プロセスでファイルを開く方法 ご覧になった回答でも触れられていますが、createobjectを使います。 sub macro1()  dim myApp as object  set myapp = createobject("Excel.Application")  myapp.workbooks.open "c:\test\book1.xls"  myapp.visible = true end sub

napanapana
質問者

お礼

回答ありがとうございます。 こちらも使用できましたが、今回はno1さんの方法で実装しました。 ありがとうございました。

関連するQ&A

  • 新しいプロセスとしてEXCELを起動するには

    特定のEXCELファイルにVBAで、メニューバーや、コマンドバーを隠す処理を組み込んでいるのですが、既に他のEXCELを開いている状態から、このEXCELファイルを開くと、同一プロセス内の別ウインドウとして開きますよね。 そうすると、他のEXCELを操作するときには、メニューバーが見えている状態じゃないと都合が悪い場合があります。 そこで、特定のEXCELを開くときは、別プロセスとして開きたい。というのが今回やりたいことです。 起動オプションには目的のものが無さそうなのですが、何か良い方法があれば教えてください。 EXCELのバージョンは2000、2003が混在しています。

  • VBAで別プロセスのExcelのフルパスの取得

    いつもお世話になります。 Excel VBAで別プロセスで起動しているExcelブックのフルパスの取得方法を教えて頂けないでしょうか。 前提としては、ファイル自体はローカル環境に保存されているが、どこに保存されているかは分からない、というものになります。 別プロセスの場合はあらかじめフルパスが分かっていれば取得できるといったものはあったのですが、それをそもそも取得したいというのは見つけることができませんでした。 そもそもやりたいのは、プロセスが同じ、別であるに関わらず、起動している全てのExcelブックに対して、マクロを実行したいのですが、フルパスが分かれば処理を行うことができると考え、このような質問をするに至りました。 使用しているExcelは2003になります。 宜しくお願いします。

  • excelが別プロセスで起動してしまう

    自分ではお手上げ状態なので、どうか教えてください。 エクセルが常に別プロセスで開いてしまいます。 同一プロセスで開きたいのですが、どうしたら良いでしょうか。 作業環境は、業務の都合でWindowsXPにexcel2000と2007が入っています。 通常使用しているのは2000です。 また、不特定多数のエクセルでマクロを使用するため、personalにマクロを設定しています。 複数のエクセルを開こうとするときに、2つ目以降から 「personal.xlsを読み取り専用で開きますか?」というメッセージが毎回出てきてとても手間がかかります。 personalファイルを削除すれば問題は解決するのですが、 どうしてもpersonalのマクロが必要です。 ちなみに、2つ目以降のエクセルを 右クリック⇒プログラムから開く⇒excel2007 で開くと、 なぜか同一プロセスで開けます。 personalのマクロを残したまま、同一プロセスで開く方法はないでしょうか。 宜しくお願いします。

  • EXCELのVBAで質問があります。

    EXCELのVBAで質問があります。 次の処理を実現しようと、  1.テンプレート的なファイルを用意する。  2.作業ファイルの作業シート(VBA組み込み有)を    初期化するために「1」のファイルからセルをコピーする    ※マクロがあるため、単純なシートコピーは出来ない 以下のようにコーディングしました。  objXls = CreateObject("Excel.Application")  objXlsWorkBook = objXls.Workbooks.Open("C:\Template.xls")  objXlsSheet = objXlsWorkBook.Sheets("テンプレートシート")  objXlsSheet.Range("1:10").Copy  ActiveWorkbook.Worksheets("作業シート").Range("1:10").PasteSpecial すると、コピーした内容がオブジェクト(図)として貼り付けられました。 どうすればオブジェクトではなく、セルとしてコピーが可能になるのでしょうか。 「Workbooks.Open("C:\Template.xls")」としてもいいのですが、 ファイルが見えてしまうのが都合が悪いのです。 どうかよろしくお願いします。

  • VBAでエクセルに別のエクセル内の値を取り込む

    前提: ・あるフォルダ下に30~50のエクセルファイルが格納されている。 ・それぞれのエクセルファイルは全く同じフォーマットである。 ・エクセルファイルは複数(5~8)のシートで構成されている。 実現したいこと(今回ご教授いただきたいこと): 1. 上記エクセルファイルのあるひとつのシートを別フォルダに格納されているエクセルシートの ひとつのシートに一括で取り込みたい。 または 2. 上記エクセルファイルにあるひとつのシートをアクセスに一括で取り込みたい。 ちなみに集計したいデータはDBテーブルの形をしています。 つまり、本来50ほどあるエクセルファイルのあるシートを一つずつ50回「アクセスへエクスポート」する 作業をVBAで実現したいのです。 1.であれば、すべてを取り込んだエクセルファイルをアクセスへエクスポートするつもりです。 VBAは素人なので(ま、素人なのはVBAに限りませんが)ノーアイディアです。 何とぞよろしくお願いいたします。

  • 【エクセル マクロ VBA】 エクセルを重複起動させたい

    グーグルや過去ログを検索してもわからなかったので質問させていただきます。 エクセル(2003or2007)でVBAを用いた備品の管理ソフト(bihin.xls)を作っています。 このファイルは、起動時にAuto_Openマクロでウィンドウをもう一つ作って、2つを上下に並べて比較しながら操作できるようにしています。 しかし困ったことに、この状態で全く関係ないエクセルファイルを開くと、ウィンドウ数が計3つになってしまい見づらくなってしまいます。 また逆に、全く関係ないエクセルファイルを開いているときにこのbihin.xlsを起動すると、これまたウィンドウが3つになってしまいます。 したがって、 (1)bihin.xlsを開いているときに別のエクセルファイルを開いたら、新しいエクセルで開かせる。(つまりエクセルの複数起動) (2)別のエクセルファイルを開いているときにbihin.xlsを開いたら、bihin.xlsを新しいエクセルで開く。 ・・・という2つの機能を実現させたいと考えております。 エクセルを複数起動させる方法として、スタートメニューからエクセルを開くという方法があるのは知っているのですが、このbihin.xlsは複数の人が使うことになるので、いちいち全員にスタートメニューから開かせるのは非効率なのでできません。 また、何かしらのエクセルの設定を変更して実現できるとしても、全員のエクセルの設定を変更させるはあまりやりたくはありません。 ですので、bihin.xlsに記述するマクロで何とかしたいと考えています。 どなたかご教授いただければ幸いです。 よろしくお願いいたします。

  • 【Excel VBA】エクセルファイルを新規作成し、それを画面に表示せずに内容を変更するには?

    いつもお世話になっております。 今回はExcelのVBAについて質問があります。 例えば、以下のようにVBAを書くと、C:\test\1.xlsが作成され、その内容が変更されます。 Workbooks.Add.SaveAs dirName + "C:\test\1.xls" Workbooks("1.xls").Worksheets("Sheet1").Cells(1, 2).Value = 777 Workbooks("1.xls").Save Workbooks("1.xls").Close しかし、Workbooks.Add.SaveAsしてWorkbooks("1.xls").Closeするので、C:\test\1.xlsが一瞬画面に現れます。 それに、ちょっと動作が遅い感じがします(わざわざ画面に表示しているから?)。 C:\test\1.xlsを画面に表示させずに、その内容を変更する方法はありませんでしょうか? 実は、一つのExcelファイルの内容から、1000件程度のExcelファイルを作成する必要があります。 毎回、画面を表示していると大変遅くなってしまう恐れがあるのです。 上記の解決方法、又は参考になるWebサイトをご教示いただけると助かります。 以上、よろしくお願いします。

  • VBAでエクセルからエクセルのファイルを開くには?

    D:\に db1.mdb Book1.xls があります。 db1.mdbのフォームのコマンドボタンをクリックして Book1.xlsを開きたいのですが VBAコードをご教授いただけますか? (マクロではなくVBAコードが知りたいです) エクセルからエクセルのファイルを開くなら Workbooks.Open ファイルのフルパス で出来ました。 ご回答よろしくお願いします。

  • EXCEL VBAからEXCELファイルを非表示で開きたい

    こんにちは。 EXCEL VBAから、別のEXCELのファイルを非表示で参照し、 セルの内容を取得したいのですが、やり方がわかりません。 どなたかお知恵をお貸しください。 できれば、具体的な記述方法を知りたいです。

  • VBSとエクセルVBAの連携

    一定の処理を自動化したいと考えております 以下が現在の構成 main.vbs       メインの処理を実行 Master.xls (Macro1) マクロを記述してあるエクセル A.xls マクロを実行したいエクセル 現状はmain.vbsの処理を終了後に手動でアクティブウィンドウをA.xlsにしてMacro1を実行しています。 (エクセルファイルは両方開きっぱなしです) これをmain.vbsの処理の中に組み込み main.vbsの処理終了後に自動的に実行するようにしたいと考えています。 1.既に開いてあるエクセルファイルをアクティブにする処理が分かりません。 2.アクティブなエクセルファイルから別のエクセルファイルのマクロを実行する方法がわかりません。 初心者の質問で理解に苦しむかと思われますがご教授よろしくお願いいたします。

専門家に質問してみよう