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

EXCELのバージョンは2000、2003が混在しています。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

少し面倒ですが、スタートメニューからエクセルを起動すると、


プロセスが分かれて起動します。
この分かれて起動したエクセルで新しいエクセルを開けば、
ご希望の状態にはなると思います。

ひとつは、ダブルクリックで開き、もうひとつは、スタートメニュー
のショートカットを立ち上げて、目的のエクセルデータを開くと言った
感じです。
    • good
    • 0
この回答へのお礼

ありがとうございます。
頂いた回答をヒントにショートカットを作成してみたら、上手くいきました。

"C:\Program Files\Microsoft Office\Office\EXCEL.EXE" "フルパスで目的のEXCELファイル名"

お礼日時:2011/04/25 10:04

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBAで2つEXCELを起動したときのブック名取得の方法

for each *** In workbooks・・・Nextで現在開いているexcelのブック名をすべて取得することができますが、2つめのexcelを起動し、そこで開いたブック名は取得することができません。
プロシージャは個人用マクロブックに記載しているのですが、複数起動したexcelのすべてのブック名を取得する方法をどなたかご存知の方いませんでしょうか?
excel2007を使用しています。よろしくお願いします。

Aベストアンサー

> 別プロセスのExcelは外注したアプリがデータを表示する際に
> 起動する...

(その外注アプリが)表示するデータとは、

 1)Excel ファイルを作成され、特定の場所に保存されている。
   表示は、そのファイルを開いているにすぎない。ファイルを
   改めて保存する必要はない
 2)Excel 画面で表示されるが、ファイルには書き出されていない。
   手動で保存しなければならない

のどちらですか?

1)の場合でファイル名が自明ならば、

  Dim xlApp As Application
  Set xlApp = GetObject(ファイルフルパス).Application

で別プロセスの Excel で開かれていても Application オブジェクト
は参照できますよ。

2)の場合は、厄介です。

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QExcelを別々に起動する方法を教えてください。

C:\の中にa.xls, b.xls, c.xlsという3つのExcelファイルがあったとします。
a.xlsを起動した後に、b.xls, c.xlsを起動すると、a.xlsと同じブックの中にチャイルドウィンドウとして、b.xls, c.xlsが開かれてしまいます。

別のブックとして起動したいので、毎回まずExcelを起動しデフォルトで作成されているBook1.xlsというチャイルドウィンドウを閉じ、その中にa.xlsをドラッグアンドドロップ
Excelを起動しデフォルトで作成されているBook1.xlsというチャイルドウィンドウを閉じ、その中にb.xlsをドラッグアンドドロップ
Excelを起動しデフォルトで作成されているBook1.xlsというチャイルドウィンドウを閉じ、その中にc.xlsをドラッグアンドドロップ

という感じで別のブックとしてファイルを開いているのですが、ファイルそのものをダブルクリックするだけで別のブックとしてExcelを立ち上げる方法はありますか?
ツール⇒オプションをざっと眺めてみたのですが、それを設定できそうな項目がなかったので、どなたか方法ご存知の方がいましたら教えてください。

使用しているOSはXPでExcel2003です

C:\の中にa.xls, b.xls, c.xlsという3つのExcelファイルがあったとします。
a.xlsを起動した後に、b.xls, c.xlsを起動すると、a.xlsと同じブックの中にチャイルドウィンドウとして、b.xls, c.xlsが開かれてしまいます。

別のブックとして起動したいので、毎回まずExcelを起動しデフォルトで作成されているBook1.xlsというチャイルドウィンドウを閉じ、その中にa.xlsをドラッグアンドドロップ
Excelを起動しデフォルトで作成されているBook1.xlsというチャイルドウィンドウを閉じ、その中にb.xlsをドラッグア...続きを読む

Aベストアンサー

以下の手順で設定を変更すれば、
ご要望のように動作するとは思いますが…。
---------------------------------------------------------------------
★ExcelをSDIライクに運用する

 1.適当なフォルダを開いて、[ツール]>[フォルダオプション]
 2.[ファイルの種類]タブ>[XLS]>[詳細設定]
 3.[新規](※1)
 4.[新しいアクション]ウィンドウで、
  4-1.[アクション]:新しいExcelで開く  (※2)
  4-2.[アクションを実行するアプリケーション]:
     "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" /e "%1" (※3)
  4-3.[DDEを使う]:チェック
  4-4.[アプリケーション]:Excel
  4-5.[トピック]:system
  4-6.[OK]で閉じる
 5.[ファイルの種類の編集]ウィンドウで、
  [新しいExcelで開く]を選択>[既定に設定]>OK

WindowsXP,Excel2003環境で挙動確認済
---------------------------------------------------------------------
※1
 [開く]アクションを直接編集する手もありますが、
 元に戻す際にレジストリ編集や自動修復が必要になる可能性があり、
 お奨めしません。アクションを追加する方が無難です。
※2
 任意の文字列で可
※3
 パスはExcelがインストールされている場所によって異なります。
 オプションは、【…\EXCEL.EXE" /e %1】としているサイトもありますが、
 私の環境では%1をダブルクォートで括らないとエラーがでます。
※4
 Excelが重複起動している状態というのは、通常「トラブル」に属する状態です。
 ・他ブックの参照
 ・他ブックへの[形式を選択して貼り付け]
 ・オプションの変更
 その他さまざまな機能について挙動が違ってきます。

 もっとも、これらの点については質問文の操作を行った場合も同じですから、
 私が関知することではないのかもしれませんが…一応念のため。
---------------------------------------------------------------------
以上ご参考まで。長乱文陳謝。

以下の手順で設定を変更すれば、
ご要望のように動作するとは思いますが…。
---------------------------------------------------------------------
★ExcelをSDIライクに運用する

 1.適当なフォルダを開いて、[ツール]>[フォルダオプション]
 2.[ファイルの種類]タブ>[XLS]>[詳細設定]
 3.[新規](※1)
 4.[新しいアクション]ウィンドウで、
  4-1.[アクション]:新しいExcelで開く  (※2)
  4-2.[アクションを実行するアプリケーション]:
     "C:\Program Files\...続きを読む

Qエクセルで別ブックをバックグラウンドでオープンする方法

最初にメニュー画面となるブックを開いた後、データブックをバックグランドのみで開きたいのですが、エクセルVBAで単純にOPENを行うと画面上にデータブックが表示されてしまいます。操作作業者に画面が次々入れ替わることを見せたくないのですが、ブックをバックグラウンドだけで開く方法はあるのでしょうか。VBAについては素人で宜しくお願いします。

Aベストアンサー

ごめんなさい。解決済みと思って見ていませんでした。 まだですか?

後で開いた3つのブックは、VBAで操作しないのですか。
操作するのでしたら、ブックをオブジェクト変数に入れておいた方が操作しやすい
と思うのですが・・・ 一応何処でどのように使うのか判りませんので・・・

こんな感じで如何でしょうか。

ブックを開いてから非表示にするまでの瞬時の画面のことですね。
それなら、その間、ScreenUpdating = False でどうでしょうか。

Public Bk1 As Workbook
Public Bk2 As Workbook
Public Bk3 As Workbook
Dim PathName As String

Sub Auto_Open()
PathName = ThisWorkbook.Sheets("メニュー").Range("C28").Value
ファイル読込 "初期値.xls", Bk1
ファイル読込 "データ1.xls", Bk2
ファイル読込 "データ2.xls", Bk3
End Sub

Sub ファイル読込(BkName, ObjBk)
Application.ScreenUpdating = False
Set ObjBk = Workbooks.Open(Filename:=PathName & "\" & BkName)
Windows(BkName).Visible = False
Application.ScreenUpdating = True
End Sub

ごめんなさい。解決済みと思って見ていませんでした。 まだですか?

後で開いた3つのブックは、VBAで操作しないのですか。
操作するのでしたら、ブックをオブジェクト変数に入れておいた方が操作しやすい
と思うのですが・・・ 一応何処でどのように使うのか判りませんので・・・

こんな感じで如何でしょうか。

ブックを開いてから非表示にするまでの瞬時の画面のことですね。
それなら、その間、ScreenUpdating = False でどうでしょうか。

Public Bk1 As Workbook
Public Bk2 As Workbook
P...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QVBA オブジェクトが空かどうか判定する

皆様のお知恵を拝借させてください。

エクセルVBAでオブジェクトを入れる変数を定義し、その変数にオブジェクト
が入っているかどうか検査したいのですがどうしたらいいでしょうか。

例えば---
Dim a As Workbook
If a <> nothing then ←この部分が分からない。このままだとエラー。
処理
End if
---------
環境
エクセル2003
WinXPsp1

Aベストアンサー

もし、aが空だったら
If a Is Nothing Then 

もし、aが空じゃなかったら
If Not a Is Nothing Then

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

よろしくお願いいたします。

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

QEXCEL2000 VBA マクロ実行中に他の作業ができないか

いつもお世話になっております。

EXCEL2000 VBAでマクロ実行中にEXCELで別の作業(表計算したり、別のマクロを実行したり)がやりたいんですが、可能でしょうか。

よろしくお願いいたします。

Aベストアンサー

標準モジュールに
Sub test02()
For i = 1 To 1000000
Cells(1, 1) = "A"
Next i
End Sub
を入れて実行し、終らない間に、デスクトップを表示して、エクセルのアイコンをクリックして、別ブックを開いたり出来ます。
上記は確認後CTRL+Breakキーで中断のこと。
上記は#2のお答えのことと思います。
====
質問内容は、そんなことじゃないなら補足しては。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング