• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ShellでEXCEL2002を起動する場合)

ShellでEXCEL2002を起動する方法について

TAGOSAKU7の回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

そーですかー。Shellのオプションを受け入れてくれませんかー。。。 おそらく、Windowsから送られてくるメッセージをSpyで見てみたら、正確な方法がわかるのでしょうが・・・環境がないと実験ができないので、原因追求をしたくてもできないのです。。。 なので、こちらの方でも唯一可能な方法で作成しました。 もろ反則技です。 処理内容 1.ピクチャボックスを創生 2.ピクチャボックスの親ハンドルをデスクトップに変更 3.ピクチャボックスのサイズを画面サイズに変更し、最前面固定 4.デスクトップの状態をピクチャボックスに描画 5.ピクチャボックスを表示 6.エクセルを起動 7.エクセルを最小化 8.ピクチャボックスの破棄 ねっ反則でしょ?(笑) 関数creDmyPicで1~5の処理を行っています。 関数openExcelで6~7の処理を行っています。 ちなみに・・・ この方法は、どうしても見せたくない処理があるけど、いちいち制御するのが面倒な時に使ってます。 これがダメなら・・・すいません・・・回答不能です。。。 Option Explicit Private Const HWND_TOPMOST = (-1) Private Type RECT   Left As Long   Top As Long   Right As Long   Bottom As Long End Type Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long    Private Sub Command1_Click()   Dim dmyPic As PictureBox        'ピクチャボックスを作成して、一時画面描画を視覚的にとまったように見せる   Set dmyPic = creDmyPic("picDammy")   If dmyPic Is Nothing Then     Call MsgBox("ダミー作成失敗")   End If      'エクセルブックのオープン   Call openExcel("c:\test.xls")      'アクティブウィンドウを自分自身に設定   Call SetForegroundWindow(Me.hwnd)      'ピクチャボックスウィンドウの破棄   Controls.Remove dmyPic End Sub '【機 能】エクセルを最小化で起動する '【引 数】エクセルブックのフルパス '【注意点】エラーチェックを使用してない Private Sub openExcel(inOpenXlsBookPath As String)   Dim xlApp  As Excel.Application      'エクセル起動   Call Shell("C:\Program Files\Microsoft Office\Office\EXCEL.exe /e")   Set xlApp = GetObject("", "Excel.Application")      'エクセル最小化   xlApp.WindowState = xlMinimized      'ワークブックオープン   xlApp.Workbooks.Open inOpenXlsBookPath      '開放   xlApp.Visible = True   Set xlApp = Nothing End Sub '【機 能】ピクチャボックスを創生して、現在のデスクトップ状態を描画し、最前面で表示を行う '【引 数】創生するピクチャボックスの名称(任意) '【注意点】パラメータには既存のピクチャボックスと重複しない名称を使用すること Private Function creDmyPic(inPicBoxName As String) As PictureBox   Dim picWork     As PictureBox  'ピクチャボックスオブジェクト   Dim lngDeskTopWnd  As Long     'ハンドル(デスクトップ)   Dim rcDeskTop    As RECT     '領域座標(デスクトップ)   Dim lngDeskTopDC  As Long     'デバイスコンテキスト(デスクトップ)      '左位置/上位置/幅/高   Dim lngL As Long, lngT As Long, lngW As Long, lngH As Long      '失敗したら終了   On Error GoTo PGMEND      'ピクチャボックスを作成   Set picWork = Controls.Add("VB.PictureBox", inPicBoxName)      'ピクチャボックスの初期設定   With picWork     .Appearance = 0     .AutoRedraw = True     .AutoSize = False     .BorderStyle = 0   End With      'デスクトップのハンドルを取得   lngDeskTopWnd = GetDesktopWindow   'デスクトップ領域の座標を取得   Call GetWindowRect(lngDeskTopWnd, rcDeskTop)   'デスクトップのデバイスコンテキストを取得   lngDeskTopDC = GetDC(lngDeskTopWnd)      '左位置/上位置/幅/高を取得   With rcDeskTop     lngL = .Left: lngT = .Top: lngW = .Right - .Left: lngH = .Bottom - .Top   End With      With picWork     '親ハンドルの変更(ピクチャボックスをフォームから飛び出させる)     Call SetParent(.hwnd, lngDeskTopWnd)          'デスクトップの領域にピクチャボックスのサイズをあわし、画面Zオーダーを最前面固定にする     Debug.Print SetWindowPos(.hwnd, HWND_TOPMOST, lngL, lngT, lngW, lngH, 0)          '描画実行     Call StretchBlt(.hdc, lngL, lngT, lngW, lngH, lngDeskTopDC, lngL, lngT, lngW, lngH, vbSrcCopy)          'ピクチャボックスの表示     .Visible = True   End With      'ピクチャボックスオブジェクトを返す   Set creDmyPic = picWork PGMEND: End Function

関連するQ&A

  • Shell関数でのExcel起動において

    Shell関数でExcelを起動させた時に、Excelのブックを閉じた時に一緒にExcelアプリケーションも終了させたいのですが、create object関数なら可能なのですが、環境上Shell関数を使うしかなくて、何か方法はありますか?

  • Execl起動せず。

     WinMeでExcel2000が2~3日前から起動しなくなりました。 起動画面(Excelロゴ・ID表示)中に、エラーが出て、アプリケーションを 起動できません。--Excelが原因でEXCEL.EXEにエラーが発生しました。Excelを終了します。--と表示されます。  再インストールしても解決しません。

  • Shell関数で起動したメディアプレーヤーを終了したい。

    以前このコーナーで質問して教えて頂いたShell関数でメディアプレーヤーを起動できました。(以下にそのコーディングを記載しました) 今度は起動したメディアプレーヤーをVBから終了する方法が知りたいのですが教えて頂けませんか。 Shell ("C:\Program Files\Windows Media Player\wmplayer.exe /1 G:\TEST.wma ,vbMinimizedFocus") 宜しくお願いします。

  • SHELLを使ったファイル起動について

    現在、JavascriptからSHELLを使って Excelファイルを起動さようと思っています。 ファイル名が英数字だと起動できるのですが 日本語だと起動できません。 「指定されたファイルがみつかりません」という スクリプトエラーが表示されます。 ---------------------------------------------- function wshell(){ wshshell=new ActiveXObject("WScript.Shell"); wshshell.run("T:\\sample.xls"); } ---------------------------------------------- 原因、対処方法をご存知の方、 教えていただけませんでしょうか。 よろしくお願いいたします。

  • Excel2007で起動した際の画面について

    Excel2007を使用しています。 マイコンピュータでエクセルファイル複数を起動すると、1Windowにまとまってしまいます。Excel2003のように、別Windowで起動できるようにするのはどうすれば良いですか? Excel2007を起動したまま席を外したとき、社内の人が借りてネットワーク上からExcelを起動し終了してしまうと、自分の処理中だったファイルまで、Closeしてしまうため困っています。

  • EXCEL関数 =TODAY()について

    EXCELの帳票を開いたら、その時点で当日の日にちを表示していたのに、突然当日の日にちを表示しないで前日のままになった。EXCELを終了する際に当日に更新します。その後、再度開いたら更新した当日を表示している。  使用ソフトウエア EXCEL97(Windows)  使用OS Windows95 これは内蔵バッテリーの寿命が来ているからでしょうか。対応策をご教示お願いいたします。

  • Access2000vbaで、shell関数で起動させたExcellを終了する方法を教えてください。

    Access2000vbaで、shell関数で起動させたExcellを終了する方法を教えてください。 以下のように、shell関数で、既存のExcelファイルを起動させました。 どうすれば、Excelファイルを終了できますか? 宜しくお願いします。 Dim fl_name As String fl_name = "C:\XE2.xls" Shell "C:\Program Files\Microsoft Office\Office\EXCEL.EXE " & fl_name, vbNormalFocus

  • MacBookでの起動後に...

    MacBookを使っているのですが、最近フリーズしたため、いったん強制終了して再起動してみてから、このところ頻繁に最初のAppleロゴのところにフォルダアイコンの中に?マークが表示され、起動できないことがあります。 今も何とか起動出来たのですが、デスクトップ画面が表示されたと同時に http://imepita.jp/20090623/646550 このような英語の警告(?)が出ました。 何か解決策があれば教えて下さい.... バージョンは10.4.11です。

    • 締切済み
    • Mac
  • ideapad s540 起動できない

    lenovo ideapads540を使用しています。 先日、パソコンがフリーズしたため、電源ボタン長押しして強制終了後、再度起動させようとすると、lenovoのロゴマーク画面の後、水色の画面になり、サインイン画面が出てきません。水色の画面の右下には、電源マークとインターネットマークともう一つ(何か忘れましが)のアイコンが出てきますが、それらをクリックして動作させようとしても何も起きません。何回か強制終了→再起動させるも同じことが起こってしまいます。何か解決策はあるでしょうか? ※OKWAVEより補足:「Lenovo:ノートブック (IdeaPad・Lenovo等)」についての質問です。

  • EXCEL2007が起動しません。

    Windows Vista home premiumの環境で、Excel2007が突然起動しなくなりました。 エラーメッセージは『メモリ不足のためMicrosoft Office Excelが起動できません。他のアプリケーションを終了してから、もう一度やり直して下さい。』 ちなみに、EXCEL2003、Word2003の方は起動しますが、Word2007はExcel2007と同様に起動しません(エラーメッセージもで出ません)。 Office2007はSONY VAIOでプリインストール版です。 Office2007をアンインストールして、再度インストールすれば解決する問題なのか分からないので、対処の仕方が分かる方がお見えでしたら 解決方法を是非教えて下さい。