プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております。
エクセルブック開いたとき
別プロセスで開き
エクセルを非表示にして
ユーザーフォームだけを起動したいのですが
わかる方おしえてくれませんでしょうか

下記のコードは検索などしてテストしてやっていますが、
どうにもわかりません。

Private Sub Workbook_Open()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Set xlSheet = xlBook.Worksheets(1)

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)

xlSheet.Visible = True


UserForm1.Show vbmodless
Cancel = True


End Sub

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

  • うーん・・・

    お世話になっております。このサイト先ほど拝見いたしました。
    考え方をかえて 最初に別のワークブックにユーザーフォームと
    コマンドボタンを作りそこから、
    Set xlApp = New Excel.Application
    xlApp.Visible = True
    Set wb = xlApp.Workbooks.Open(ThisWorkbook.Path & "\ff.xlsx")
    で処理すると良い結果がでました。
    しかし、最初に開くワークブック
    ActiveWindow.Visible = False
    UserForm1.Show vbModeless
    Cancel = True
    とすると ActiveWindow.Visible = False
    黄色になります。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/03/12 21:54

A 回答 (2件)

Option Explicit



Private Sub Workbook_Open()
If Workbooks.Count > 1 Then
If Not ThisWorkbook.ReadOnly Then
ThisWorkbook.ChangeFileAccess xlReadOnly, Notify:=False
End If
With New Excel.Application
.Workbooks.Open ThisWorkbook.FullName
End With
If VisibleWindowsCount > 1 Then
ThisWorkbook.Close
Else
Application.Quit
End If
Else
Application.Visible = False
UserForm1.Show vbModeless
End If
End Sub

Private Property Get VisibleWindowsCount() As Long
Dim win As Window
For Each win In Windows
If win.Visible Then
VisibleWindowsCount = VisibleWindowsCount + 1
End If
Next win
End Property
    • good
    • 3
この回答へのお礼

ご返信遅れてすみませんでした。

いろいろ検索しましたが
うまくいかず、
このような コード頂戴
するとはおもいませんでした。
ありがとうございました。

お礼日時:2022/03/13 19:56
この回答への補足あり
    • good
    • 0
この回答へのお礼

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

お礼日時:2022/03/13 19:56

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

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