名前を付けて保存のウィンドウが表に出ない

このQ&Aのポイント
  • VB6でエクセルを保存する際に、他のプログラムの下に「名前を付けて保存」のウィンドウが表示されてしまう問題があります。ウィンドウにアクセスするためには、事前に他のプログラムを避ける必要があります。
  • Excel.Applicationオブジェクトを使用してVB6でエクセルを保存しようとすると、「名前を付けて保存」のウィンドウがフォーカスされず、他のプログラムの下に表示される問題が発生します。
  • VB6でエクセルを保存する際に、「名前を付けて保存」のウィンドウが他のプログラムの下に出てしまいます。ウィンドウにアクセスするためには、他のプログラムを事前に避けておく必要があります。
回答を見る
  • ベストアンサー

名前を付けて保存のウィンドウが表に出ない

VB6でエクセルを保存させると、動作は問題ないのですが、「名前をつけて保存」のウィンドウが他のプログラムの下に出てしまいます。他のプログラムをあらかじめ避けておかないと、ウィンドウにアクセスできません。どうしたらよいのでしょうか? Option Explicit Dim xlApp As Excel.Application Dim xlBok As Excel.Workbook Dim xlSht As Excel.Worksheet Private Sub Form_Load() Set xlApp = CreateObject("Excel.Application") Set xlBok = xlApp.Workbooks.Add Set xlSht = xlBok.Worksheets(1)   xlSht.Activate End Sub Private Sub EndBtn_Click() Dim xlFName As String On Error Resume Next '1 xlFName = xlApp.GetSaveAsFilename(fileFilter:="Excel (*.xls), *.xls") Call xlBok.SaveAs(xlFName) '2 Application.Dialogs(xlDialogSaveAs).Show Call xlApp.Quit Set xlSht = Nothing Set xlBok = Nothing Set xlApp = Nothing End End Sub 1の方法でも2の方法でも同じです。 なお、VBは全くの初心者です

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

すみません。 VBのFormだけが表示されてると早合点しての回答でした。 ちょと見苦しいですが以下のように '---------------------------------  Me.Hide   xlApp.Visible = True  '●●●    Application.Dialogs(xlDialogSaveAs).Show  Me.Show '--------------------------------- エクセルをACTIVEにするとか。。 何れにしろこの質問はAPIの範疇だと思いますので ネットで、「API 前面 VB」などをキーにして検索してみてください。 サンプルコードがたっぷり出てきます。  

marunaka
質問者

お礼

ありがとうございました アクティブにすると出てきました。 ちょっと煩わしいですけど、一応できるようになりました。

その他の回答 (1)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.1

VB6は使ったことないので何なんですが。。。 '---------------------------------  Me.Hide    Application.Dialogs(xlDialogSaveAs).Show  Me.Show '--------------------------------- でどうでしょう。。 ただ、これだとFormのActivateイベントにコードがあったらちょと工夫が要りますが。。   勘違いでしたらご容赦願います。  

marunaka
質問者

お礼

ありがとうござます。 これで、確かに自分は消えますが、同時に表示されている他のプログラムのウィンドウは消えません。 「名前を~」は他のプログラムも含めて、一番下に出てしまうんです。

関連するQ&A

  • エクセルを表示できない

    プログラム初心者です。 Private Sub Command3_Click() On Error Resume Next Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet With xlApp.Application Set xlApp = GetObject("F:\vb6.0\book1.xls") Set xlBook = xlApp.Workbooks.Open("Book1") Set xlSheet = xlBook.Worksheets(1) xlApp.Application.Visible = True End Sub と入力したのですが、実行してボタンをクリックしてもエクセルの表が表示されません。なぜでしょうか?

  • VBからエクセルを起動。そのあとエクセルを終了

    教えてください。 VBからエクセルを起動します。 そのあと、エクセルのシートの上にデータを貼り付けます。そして、エクセルを終了します。 しかし、エクセルが終了しません。 タスクバー上のエクセルをクリックすると終了します。 どうして、このような現象が起こるのかわかりません。 教えてください。 下記に同様のサンプルを書きました 誤記入があるかも知れませんが このような感じのプログラムです。 以上、よろしくお願いします。 public sub test Dim XApp as Excel.Application Dim nfilename as string Dim xlBook As Object Dim xlSheet As Object ' エクセルを起動 Set xlApp = New Excel.Application nfilename ="AAAA.xls" ' 指定されたファイルを開く Call xlApp.Workbooks.Open(nfilename) Set xlBook = xlApp.ActiveWorkbook Set xlSheet = xlBook.Worksheets(1) 'フォームを貼り付ける xlSheet.Range("a1").PasteSpecial      'ファイル名の作成 Filename="BBBB.xls" '保存 ChDir "C:\" xlBook.SaveAs Filename:=Filename,FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Set xlSheet = Nothing xlBook.Close True Set xlBook = Nothing xlApp.Quit Set xlApp = Nothing End sub

  • SETを使ったほうがよい?

    accwessからエクセルファイルを開きたいのですが、 App.Workbooks.Open と、 Set xlBook = xlApp.Workbooks.Open とどちらを使った方がいいのでしょうか? ////////////////////////////////////////////////////////// Private Sub ファイル1_Click() Dim App As Object Dim MyFileName As String MyFileName = "D:\My Documents\test.xls" Set App = CreateObject("Excel.Application") App.Workbooks.Open FileName:=MyFileName App.Visible = True End Sub でも Private Sub ファイル2_Click() Dim xlApp As Object Dim xlBook As Object Dim FileName As String Const FolderName = "D:\My Documents\test.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(FolderName & FileName) xlApp.Visible = True Set xlApp = Nothing Set xlBook = Nothing End Sub ////////////////////////////////////////////////////////// でも開けました。 多分、SETを使うかどうかの違いだと思うのですが VBAでコードを作る際、どちらのコードを使った方がいいか教えてください。

  • VBからExcelを操作

    VisualBasic6.0(初心者) VBを始めたばかりで、Excelの入力文字をVBで変換しようと考えています。 様々な保管場所にあるExcelを開いて選択セルの文字をコマンドボタンで変換しようと下記コードを考えました。(一部) 問題は、Load時にすでに開いているExcelを閉じてまいます。 何か良い方法は無いでしょうか?(アクティブなExcelを操作したい) また、下記コードで不適切なところがありましたら御教授願います。 Private Sub Form_Load() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) Set xlApp = GetObject(, "Excel.Application") With xlApp.Selection Cells(1, 1).Value = "" End With xlApp.DisplayAlerts = False xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End Sub '----------------------(大文字変換) Private Sub CB2_Click() On Error Resume Next If ActiveCell.Row = Null Then MsgBox "Excel が見つかりません" Else Dim xlApp As Excel.Application Set xlApp = GetObject(, "Excel.Application") If Err.Number Then MsgBox "Excel が起動されていません" Else Dim X As Long Dim Y As Long Dim Hmae As String Dim Hgo As String X = 0 Y = 0 With xlApp.Selection Do Do Hmae = Cells(ActiveCell.Row + X, ActiveCell.Column + Y).Value Hgo = StrConv(Hmae, 1) Cells(ActiveCell.Row + X, ActiveCell.Column + Y).Value = Hgo X = X + 1 Loop Until X >= .Rows(.Rows.Count).Row - .Row + 1 X = 0 Y = Y + 1 Loop Until Y >= .Columns(.Columns.Count).Column - .Columns(1).Column + 1 End With End If xlApp.DisplayAlerts = False Set xlApp = Nothing End If End Sub

  • VB2008 エクセル出力

    VB2008 エクセル出力 教えていただけると助かります VB6.0使用時にエクセル出力をするために下記のようなプログラムで出力していました ※「Microsoft Excel 9.0 Object Library」を参照 Dim xlApp As EXCEL.Application Dim xlBook As EXCEL.Workbook Dim xlsheet As EXCEL.Worksheet Dim File As String File = App.Path + "\EXCEL\" + "フォーム.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(File) Set xlsheet = xlBook.Worksheets("テスト") xlsheet.Range("A1") = "テスト" 'フォルダ作成 If Dir("D:\", vbDirectory) = "" Then Call Mkdirs("D:\テスト") 'Worksheetを名前をつけて保存します。 xlApp.DisplayAlerts = False xlsheet.SaveAs "D:\テスト\テスト.xls" xlApp.Quit Set xlApp = Nothing Set xlBook = Nothing Set xlsheet = Nothing VB2008の場合だとどのように書けば同じように動きますか ※色々試してみましたがダメでした 「Microsoft Excel 12.0 Object Library」を参照しています

  • VB6 オートシェイプ描画

    VB6 オートシェイプ描画 VB6でExcel,2000(ActiveSheet)にオートシェイプを使用したいのですが、エラーが出てしまいます。 コマンドボタンクリック時、エラー ------------------------------- 実行時エラー'1004': 指定された値は境界を超えています。 ------------------------------- AddLineは出来たのですが四角や円がこのエラーです。どこが間違えているのでしょうか? 宜しくお願いします。 Private Sub CB13_Click() Dim xlApp As Excel.Application Set xlApp = GetObject(, "Excel.Application") xlApp.ActiveSheet.Shapes.AddLine 50, 50, 100, 100 '(OK) xlApp.ActiveSheet.Shapes.AddShape(msoShapeRectangle, 50, 50, 100, 100).Select '(NG) Set xlApp = Nothing End Sub

  • 【VB】【エクセル操作】 SaveAsでエラーが出てしまいます。

    VB6.0で作成したソフトの一部でエクセルを操作する箇所があります。 『新しいブックを作成して名前を付けて保存する』ところでエラーが出てしまいます。 Excel2007,2003では正常に動作するのですが、2000ではエラーが発生し強制終了されてしまいます。 '//////////////////////////////////////////////////////////// Private Sub EditExcelFile(FileName As String) Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add xlApp.Visible = True With xlBook .Application.DisplayAlerts = False .SaveAs (FileName) .Application.DisplayAlerts = True End With Set xlBook = Nothing Set xlApp = Nothing End Function '//////////////////////////////////////////////////////////// 上記コードの .SaveAs (FileName)の箇所でエラーがでます。 .SaveAs (FileName)をコメント文にすると2000でも正常に動作します。 FileNameは新しいブック名のパスが入ります。 2000でも正常に動作させるにはどのような処理を加えれば良いでしょうか? 宜しくお願い致します。

  • 確実にエクセルをアクティブにする方法

    アクセスからエクセルを開いた時に エクセルがアクティブになったりならなかったり、 その時によって違うのですが 確実にエクセルをアクティブにする方法はありますか? AppActivateステートメントを使うという事がわかったのですが AppActivateをどうやって使えばいいでしょうか? ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Sub test() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim MyFileName Dim MyFileFullName Dim プロシージャー名 MyFileName = "book.xlsm" MyFileFullName = CurrentProject.Path & "\" & MyFileName プロシージャー名 = "開く" Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Open(MyFileFullName) xlApp.Visible = True xlApp.Run "'" & MyFileFullName & "'!" & プロシージャー名 Set xlBook = Nothing Set xlApp = Nothing End Sub ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ で問題なくエクセルファイルを立ち上げられますが ここで確実にエクセルをアクティブ(手前に表示)にする方法を教えてください。

  • ややこしいですがご協力ください

    アクセスからエクセルを起動してエクセルで実行した変数をアクセスに持って帰りたいです。 【アクセス側】_ Sub エクセルの値を持ってくる() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim MyFileName As String Dim myStr As String Set xlApp = New Excel.Application MyFileName = "C:\Users\エクセル.xlsm" Set xlBook = xlApp.Workbooks.Open(MyFileName) xlApp.Visible = True xlApp.Run "'" & MyFileName & "'!" & "Excel_test" Set xlApp = Nothing MsgBox myStr ’★ End Sub 【エクセル側】 Sub Excel_test() Dim myStr As String myStr = "アクセスへ渡す" MsgBox myStr End Sub としたときに、アクセスの MsgBox myStr ★でも エクセルで実行させた変数を持って帰りたいのですが どこを修正すればよろしいでしょうか? ご教授よろしくお願いします。

  • CreateObject関数 引数にパスワード

    CreateObject関数を使ってエクセルを開く際に、 引数にパスワードを設定することは可能ですか? 新規Microsoft Excel ワークシート.xlsと言うファイルには、 読み足りパスワードとして0000と言うパスワードが設定されているのですが Sub Sample() Dim MyPath As String Dim MyFile As String Dim xlApp As Object Dim xlBook As Object MyPath = "C:\" MyFile = "新規Microsoft Excel ワークシート.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(MyPath & MyFile) xlApp.Visible = True Set xlApp = Nothing Set xlBook = Nothing End Sub このようなvbaコードで開く時に、 どうやってパスワードを設定すればいいでしょうか? Set xlBook = xlApp.Workbooks.Open(MyPath & MyFile),"0000" こうすると構文エラーになります。 Sub Sample02() Dim MyPath As String Dim MyFile As String MyPath = "C:\" MyFile = "新規Microsoft Excel ワークシート.xls" Workbooks.Open Filename:=MyPath & MyFile, Password:="0000" End Sub これのCreateObjectバージョンが知りたいです。

専門家に質問してみよう