教えて! goo のコンテンツに対する取り組みについて

いつもお世話になっております。
おしえてくれませんでしょうか
エクセルを起動するとUserForm1が立ち上がり
エクセルはApplication.Visible = False
でかくしてあります。
CommandButton1_Clickすると特定のファイルが開きます。
CommandButton3_Clickすると特定のファイルが開きます。
ここまでは良いのですが、
CommandButton1_Click OR CommandButton2_Click
どちらかのファイルを閉じると

本体のエクセルが表示されてしまいます。

これを非表示のままにするにはどうすれば

よいのかおしえてくれませんでしょうか



Private Sub UserForm_initialize()
With Application
.WindowState = xlNormal
g_sngTopSV = .Top
g_sngLeftSV = .Left
g_sngWidthSV = .Width
g_sngHeightSV = .Height
End With

Application.Visible = False  '--------------------------1
UserForm1.Show vbmoderess
Cancel = True
CommandButton2.Visible = False
End Sub



Private Sub CommandButton1_Click()
CreateObject("Shell.Application").Open "G:\マイドライブ\2022\【2022code】\A.xlsx"
Application.WindowState = xlMaximized
End Sub

Private Sub CommandButton3_Click()
CreateObject("Shell.Application").Open "G:\マイドライブ\2022\【2022code】\B.xlsx"
Application.WindowState = xlMaximized
End Sub


Private Sub UserForm_Activate()
'-----------------------------------------------------------------------------------------------
' フォームの後ろにExcelウィンドウを隠す
With Application
.Top = Me.Top + 1
.Left = Me.Left + 1
.Width = Me.Width - 2
.Height = Me.Height - 2
End With
End Sub



-------------------------------------------------------------------------
Private Sub CommandButton2_Click()
If TextBox1.Value = "39" Then
Application.Visible = True
Else
Exit Sub
End If
End Sub

Private Sub TextBox1_Change()
If TextBox1.Value = "39" Then
CommandButton2.Visible = True
Else
Exit Sub
End If
End Sub

質問者からの補足コメント

  • おしえてくれませんでしょうか
    Dim xlApp As New Excel.Application
    Dim wb As Workbook
    このコードはどこにかけばいいのですか

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/11/28 22:33
gooドクター

A 回答 (3件)

http://rucio.a.la9.jp/main/technique/teq_15.htm

参考になると思います。
    • good
    • 0
この回答へのお礼

いろいろありますね
ひとつできると今度はこうならないかなとか
無限です
おもしろいです。
ありがとうございます。

お礼日時:2021/11/28 22:53

一部訂正。



Private Sub CommandButton2_Click()

wb.Close False
Set wb = Nothing
'xlApp.Visible = False '←なくてもいいかも
xlApp.Quit '←追加して★
Set xlApp = Nothing

End Sub

補足について。

丸ごとコードをユーザーフォームモジュールにそのまま貼り付けて下さい。
それはグローバル変数にしてます。
なのでどの Sub~End Sub の中ででも使用できる変数名です。
★を追加しないとタスクにExcelが増殖しちゃいました・・・・
    • good
    • 0
この回答へのお礼

いつもお世話になっております。
グローバル変数 初めてです。
うまくいきました。
ありがとうございました。

お礼日時:2021/11/28 22:50

メチャクチャ簡単に書きました。


ユーザーフォームモジュールにボタン2個を配置して、

Dim xlApp As New Excel.Application
Dim wb As Workbook

Private Sub UserForm_Initialize()
Application.Visible = False
End Sub

Private Sub CommandButton1_Click() 'Bookを開く
Set xlApp = New Excel.Application
xlApp.Visible = True
Set wb = xlApp.Workbooks.Open(ThisWorkbook.Path & "\aaa.xlsx")
End Sub

Private Sub CommandButton2_Click() 'Bookを閉じる
wb.Close False
Set wb = Nothing
xlApp.Visible = False
Set xlApp = Nothing
End Sub

ようは別のプロセスのExcelアプリケーションを起動させて、その中で別のBookを開けば良いんじゃないかな?
参考にならなかったらごめんなさいね。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2021/11/28 22:50

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

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

gooドクター

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

人気Q&Aランキング