はじめて質問します。
EXCELに標準装備されているVBでフォームとプログラムを作りましたが、現在はVB上のメニューで実行を選択してフォームを動かしています。
フォームをVB上ではなく1つのウインドウとして単体で起動させるにはどうしたらよいでしょうか?
用語の使い方の問題ですが、
>EXCELに標準装備されているVB
VisualBasic For Applications(VBA)という
Microsoft Officeシリーズ等に搭載されているプログラミング言語
であり、VisualBasicの親戚といえますが、別物です。
貴殿のケースでは「ExcelのVBA」で通じます。
さて本題ですが、
>1つのウインドウとして単体で起動させる
ことは、厳密に言えば無理ですが、
Sub Auto_Open()
Application.Visible = False
UserForm1.Show (vbModal)
Application.Quit
End Sub
のようにExcelを非表示にしてフォームだけ開いているように見せる
ことは可能でしょう。
もしくは、ExcelのVBAではなく、VisualBasicを使用するか...
たった今確認しました。有難うございます。
VBAはVBと同等の機能を有していると思っていましたが別物ですか。
返信頂いたソースを試してみたいのですがどのように記述すれば良いでしょうか?
コードに追加して一つの関数として動かすようですがフォームが開く時最初に呼ばれるのはUserForm_Initialize()ですよね。
かなり初歩な質問と思いますが最初に上記のAuto_Open()を呼ばせるにはどうしたら良いでしょうか?
>コードに追加して一つの関数として動かすようですがフォームが開く時最初に呼ばれるのはUserForm_Initialize()ですよね。
もちろんそこでもよいです。
Private Sub UserForm_Initialize()
MsgBox "Excelを非表示にする"
Application.Visible = False
End Sub
>最初に上記のAuto_Open()を呼ばせるにはどうしたら良いでしょうか?
http://office.microsoft.com/ja-jp/excel/HA010346281041.aspx
http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040817.html
このへんにいろいろあるので、研究してみてください。
http://www.moug.net/tech/exvba/index.htm
>コードに追加して一つの関数として動かすようですがフォームが開く時最初に呼ばれるのはUserForm_Initialize()ですよね。
もちろんそこでもよいです。
Private Sub UserForm_Initialize()
MsgBox "Excelを非表示にする"
Application.Visible = False
End Sub
>最初に上記のAuto_Open()を呼ばせるにはどうしたら良いでしょうか?
http://office.microsoft.com/ja-jp/excel/HA010346281041.aspx
http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040817.html
このへんにいろいろあるので、研究してみてください。
http://www.moug.net/tech/exvba/index.htm
こんばんは。EXCELの非表示が出来ました。
VBの画面を非表示にするのはやっぱり出来ないようですね。
単体のVBならEXEファイルの作成から単一のアプリケーションファイルが作成出来るようですがVBAでは無理なんですね。
丁寧に色々教えて頂き大変参考になりました。有難うございました。^^;
(・−・)ん?
>VBの画面を非表示にするのはやっぱり出来ないようですね。
VBの画面とは「Visual Basic Editor」のことですか?
ひょっとして「サブ/ユーザーフォームの実行」を使っていますか?
ThisWorkbookに以下の記述をすればいいですよ?
Private Sub Workbook_Open()
Application.WindowState = xlNormal
Application.Left = UserForm1.Left + 1
Application.Top = UserForm1.Top + 1
Application.Width = UserForm1.Width
Application.Height = UserForm1.Height
UserForm1.Show (vbModal)
Application.Quit
End Sub
ま、一瞬だけExcelが表示されたりしますけど。
チラミ☆-(ノ゜Д゜)八(゜Д゜ )ノイエーイ
エクセルの表示を消すために「Application.Visible」プロパティをFalseにした場合、タスクバーからも隠れてしまいます。
この状態でVBAのエラーが発生してVBAが強制終了した場合、エクセルは終了されずにプロセスに残り続けます。
Application.Visibleはできるだけ避けておいたほうが良いでしょう
ちなみにWorkbook_Openイベントは、xlsファイルを実行したとき(開いたとき)に自動的に発生するイベントです。
マクロの警告がうるさいときは、「ツール→マクロ→セキュリティ」のセキュリティレベルを「低」にしておく必要があります。
ただしVBAの編集ができなくなるので、戻すときはファイル無しでExcelを起動してセキュリティレベルを変更すればよいです。
上記のままだと、Excelのサイズが変更されてしまうので、ちょっといまいちです。
Private Sub Workbook_Open()
Static xPos As Long
Static yPos As Long
Static xSize As Long
Static ySize As Long
xPos = Application.Left
yPos = Application.Top
xSize = Application.Width
ySize = Application.Height
UserForm1.Left = 300 'ここにユーザーフォームを
UserForm1.Top = 200 '表示したい位置を書く
Application.WindowState = xlNormal
Application.Left = UserForm1.Left + 1
Application.Top = UserForm1.Top + 1
Application.Width = UserForm1.Width
Application.Height = UserForm1.Height
UserForm1.Show (vbModal)
Application.Left = xPos
Application.Top = yPos
Application.Width = xSize
Application.Height = ySize
Application.Quit
End Sub
とかね。
まぁ、vbModalだと都合が悪いときはまた違った書き方が必要ですが。