• ベストアンサー

vb から Excel vba をうまく操作できない。

VB 初心者で、困っています。 Excel VBA でいろんなツールを作成していますが数が多くなったので、今回、このツールを呼び出すメニューを作ろうと考えて、VB2008でメニューを作成したのですがうまく動作しません。 Excel VBAで作成しているツールは、単独で動作させれば、一番最後に新たなExcelファイルを作成・画面表示でツール自体は終了。となるのですが、VBメニューからツールを起動させると、最後に作成しているはずのExcelファイルが画面表示されません。(ファイルは作成されているみたいですが・・・) ・Excel VBA の新たなファイルへの出力部分です。     Worksheets("シート").Copy     Unload Me     Application.WindowState = xlMaximized     Workbooks("●●.xls").Close SaveChanges:=False ・VB2008 で呼び出すメニューボタン部分です。 Dim Exap As Object Exap = CreateObject("Excel.application") Exap.Workbooks.open("C:\●●.xls") Exap = Nothing よろしくお願いします。

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

  • ベストアンサー
  • ctrlzr
  • ベストアンサー率29% (18/62)
回答No.1

Exap = CreateObject("Excel.application") Exap.Visible = True Exap.Workbooks.open("C:\●●.xls") で試してください。

colariomay
質問者

補足

早速の回答ありがとうございます。 質問していた最終的な処理はうまく行きましたが、ツールを呼び出した時に今までユーザフォームのみが表示されていたのですが、背面にワークシートが表示されるようになってしまいました。 単独ツールの時は ThisWorkbook に Application.WindowState = xlMinimized AppActivate "microsoft excel" UserForm_menu.Show と記述していましたが、VB から起動するとうまく行かなかったので、 UserForm_menu.Show のみ記述しています。

その他の回答 (1)

noname#259269
noname#259269
回答No.2

あと更に Exap = Nothing は別に必要ではなくて、代わりに以下が必要です。 System.Runtime.InteropServices.Marshal.ReleaseComObject(Exap)

colariomay
質問者

補足

ありがとうございます。 前回補足部分はいろいろやってますが、改善できずにいます。 よろしくお願いします。

関連するQ&A

  • excel2000の終了

    下記のVBAで Workbooks("book1.XLS").Close SaveChanges:=False Application.Quitを書いていますが、 book1.xlsは保存しないで閉じた後にEXCELを終了させる 方法を教えてください。

  • 【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サイトをご教示いただけると助かります。 以上、よろしくお願いします。

  • Excel VBAで別のブックからユーザーフォームの閉じる

    Excel VBAで別のブックからユーザーフォームの閉じたいのですが うまくいきません。 教えてください。 Private Sub CommandButton2_Click() Application.Visible = False Unload Workbook.("材料リスクマップ検索Ver2.xls")UserForm3・・・・※ Workbooks.Close userform3:=ThisWorkbook.Path & "あああ.xls" Workbooks("\いいい.xls").Close savechanges:=False UserForm1.Show vbModeless End Sub ※印のところが赤字にかわります。 コマンドボタン2は、いいい.xlsにあり、フォームを閉じたいのはあああ.xlsのUserform3です。 その後、ファイル名いいい.xlsは閉じます。 コードが間違っているかと思いますが、どんな風にすればよいかわかりません。初歩的なこととは思いますがよろしくお願い致します。

  • VBAで全画面/数式バーが出ない?

    エクセル2013です。 以下のVBAでFullscreenにすると、なぜか数式バーがでません。 これまでのエクセル2010では、このコードでちゃんと出ていました。 エクセル2013でも全画面表示で数式バーを出すためにはどうしたらよいのでしょうか? Sub FullSize() ActiveWindow.WindowState = xlMaximized With Application .WindowState = xlMaximized .DisplayFullScreen = True .DisplayFormulaBar = True '2013では数式バーが出ない! End With End Sub

  • エクセル2000VBAでファイルを操作したい

    いつもお世話になっています。 エクセルVBAで別のワークブックを参照したいので workbooks.open Filename:="C:my documents\***.xls" とすると、そのオープンするワークブックのTisWorkbookのWorkbook_Open()で実行している(.show)メニュー(ユーザーフォーム)が開いてしまいます。 このとき、Workbook_Open()を実行させないでワークブックを開く方法って、 なにかありますか? Shiftを押しながらファイルを開くとき、実行されませんよね?それをVBAでできるのですか? よろしくお願いします。

  • EXCELVBAからVB6.0への制御の戻し方

    EXCEL VBAに関する質問です。 1.VB6.0からEXCELファイル(test.xls)を開く 2.VBAにて決定ボタンをEXCELに作成、表示 3.test.xlsを編集する 4.決定ボタンを押すと編集していたtext.xlsを 保存し、選択しているSHEETをVBに返す 5.VBに制御を戻す 上記のことを行いたいと考えています。 4.5.についてのやりかたがわからないので お教えいただければと思います。 よろしくお願いします。 :とりあえず VB側にPUBLIC FUNCTION BACK_FROM_EXCEL() というのを作って VBA Private Sub BTN_KETTEI() Call BACK_FROM_EXCEL END SUB という感じで試してみたのですが・・・ 案の定だめでした。

  • vbスクリプトについて

    Excelファイル(D:\test.xls)を再起動するvbスクリプトを作成し、 4時間おきに実行するタスクスケジュールを設定したいと思います。 ※6:00、10:00、14:00、18:00、22:00、2:00のタスクスケジュールを作成し、  vbスクリプトを実行。 次のタスクスケジュールが実行されるまでの4時間は、Excelファイル(D:\test.xls)は 開いたままの状態です。 なので、vbスクリプトで、まずExcelファイル(D:\test.xls)が開いている場合は、 「D:\test.xls」を一旦(上書き保存なしで)閉じて、再度、「D:\test.xls」を開きたいと思っています。 ※他のExcelファイルが開いている場合は、「D:\test.xls」のみ閉じる。 「D:\test.xls」を開くスクリプトはできたのですが、「D:\test.xls」を閉じるところがわかりません。 どなたか教えていただけないでしょうか。 【vbスクリプト】----------------------------------------- '「D:\test.xls」が開いている場合は閉じる  ??? '「D:\test.xls」を起動する Dim xlApp Dim xlWbk Set xlApp=CreateObject("Excel.Application") xlApp.Visible=True Set xlWbk=xlApp.Workbooks.open("D:\test.xls",True) ---------------------------------------------------------

  • xlsファイルのバージョンを取得したい(by VB6)

    仕事でVB6を使っていますので、 どうしてもVB6でやりたいんです。 Excel 2007 で作成されたxlsファイル、 Excel 2003 で作成されたxlsファイル、 Excel 2002(Office XP) で作成されたxlsファイル、 Excel 2000 で作成されたxlsファイル、 Excel 97 で作成されたxlsファイル、 を区別したく、 xlsファイルのExcelバージョンを取得したいです。 しかし、どうやって取得したらいいのか分からないので、 ここに質問させていただきます。 やりたいアルゴリズム : 1 . xls ファイルのフルパスを受け取る。 2 . ファイル情報として、作成されたExcel バージョンを知りたい 3 . バージョンによって分岐させて、処理。 調べて、ヒントになったURLを書きます。 http://support.microsoft.com/kb/178605/ja ==> BIFF8 や BIFF5 など BIFFのバージョン取得なので、やりたい事と違います。 http://excel.geo.jp/tips/vba_153.html ==> この識別を VB6 上でしたいです。 よろしくお願いします。

  • エクセル・エラーを出さずに複数ブックをクローズしたい

    複数のファイルを閉じたいのですが、 Sub 必要ファイルを閉じる() Workbooks("あ.xls").Close SaveChanges:=False Workbooks("い.xls").Close SaveChanges:=False Workbooks("う.xls").Close SaveChanges:=False Workbooks("え.xls").Close SaveChanges:=False End Sub 開いていないファイルがあるとエラーで止まってしまいます。 この4つのファイルに該当するものがあれば、閉じる というマクロを組みたいです。 アドバイス、宜しくお願いします。

  • VBマクロについて

    VBマクロについて 0864_001.xls 0864_002.xls … 0864_009.xls というxlsファイルがあります。 0864_001.xlsを開く→処理→閉じる→0864_002.xls→… のようなループを考え、matome.xls内で以下のようなマクロを作成したのですが実行されません。 Sub Test() Dim i As Integer For i = 1 To 9 Workbooks.Open ThisWorkbook.Path & "\0864_00" & CStr(i) & ".xls" Workbooks("\0864_00" & CStr(i) & ".xls").Activate Range("F1").Formula = "=max($B$11:$B$17)" Range("G1").Formula = "=max($B$391:$B$398)" Range("F1:G1").Copy Workbooks("matome.xls").Activate Sheet1.Activate Range("A" & CStr(i + 1)).PasteSpecial Paste:=xlPasteValues Workbooks("\0864_00" & CStr(i) & ".xls").Close SaveChanges:=False Next i End Sub 5行目でエラーが発生し、「インデックスが有効範囲にありません」とのメッセージが表示されます。 どのようにすれば実行されるのか教えていただきたいです。

専門家に質問してみよう