昨日初めてABを知った超初心者ですが
昨日初めてABを知った超初心者ですが
エクセルを起動する場合、エクセルのセキュリティを「中」にして
マクロを起動すると、マクロを有効にするか否かのメッセージが表示されます。
これをスキップするには、他のアプリケーションからエクセルを
起動するようにすればよいとの事ですが
ActiveBasicからエクセルを起動すれば「例の表示」されないと思い
ShellExecute(NULL, "open", "C:\Test.xls","", NULL, SW_HIDE)
としました。
ところがダメでした。(表示が出る)
どうすれば良いのでしょうか。
どなたか教えてくださいませんか。
(自分は多少VBAが解る程度です)
よろしくお願いいたします。
マクロを起動すると、マクロを有効にするか否かのメッセージが表示されます。
これをスキップするには、他のアプリケーションからエクセルを
起動するようにすればよいとの事ですが
ActiveBasicからエクセルを起動すれば「例の表示」されないと思い
ShellExecute(NULL, "open", "C:\Test.xls","", NULL, SW_HIDE)
としました。
ところがダメでした。(表示が出る)
どうすれば良いのでしょうか。
どなたか教えてくださいませんか。
(自分は多少VBAが解る程度です)
よろしくお願いいたします。
一日経ってから再度説明いたしますので宜しくお願いします。
どうやら説明不十分だと感じましたので再度お願いします。
------------------
set xlObj = CreateObject("Excel.Application")
with xlObj
.Workbooks.Open("C:\Test.xls")
.Run("Test.xls!Auto_open")
end with
------------------
このテキストを拡張子VBSで保存してから実行すると
マクロを含むTest.xlsは「セキュリティ警告」を表示しないで
いきなりエクセルのマクロを実行します。
(定石文だそうです。)
エクセルを正面から実行するとマクロを含む時
必ず「セキュリティ警告」は表示されるが
エクセル以外のプログラムからそのエクセルを呼び出せば
「セキュリティ警告」は表示されません。
との御宣託を諸先輩から受けました。
ところが、Test.Vbsはテキスト文なので簡単に変更されてしまいます。
ActiveBasicのExeから呼び出せば同じ事が出来て
簡単に変更されない。と思い付いたのです。
ABから呼び出してもダメなのでしょうか。
多分呼び出し方が間違っているのだろうと思いますので
どなたか、是非教えて下さいませんか!
------------------
set xlObj = CreateObject("Excel.Application")
with xlObj
.Workbooks.Open("C:\Test.xls")
.Run("Test.xls!Auto_open")
end with
------------------
このテキストを拡張子VBSで保存してから実行すると
マクロを含むTest.xlsは「セキュリティ警告」を表示しないで
いきなりエクセルのマクロを実行します。
(定石文だそうです。)
エクセルを正面から実行するとマクロを含む時
必ず「セキュリティ警告」は表示されるが
エクセル以外のプログラムからそのエクセルを呼び出せば
「セキュリティ警告」は表示されません。
との御宣託を諸先輩から受けました。
ところが、Test.Vbsはテキスト文なので簡単に変更されてしまいます。
ActiveBasicのExeから呼び出せば同じ事が出来て
簡単に変更されない。と思い付いたのです。
ABから呼び出してもダメなのでしょうか。
多分呼び出し方が間違っているのだろうと思いますので
どなたか、是非教えて下さいませんか!
結論だけ言えば「不可能ではない」です。
できるのですが,VBScriptほど簡単にはできません。
> .Run("Test.xls!Auto_open")
この!Auto_openがみそだと思い,まずこれを試してみました。
ShellExecute(NULL, NULL, "excel", "~~.xls!Auto_open", NULL, SW_HIDE)
しかし駄目でした。というわけで真面目に取り組む必要がありそうです。
Excelなんかはオートメーションと言う技術を使っていて,
これは様々なプログラミング言語から使えるということになっています。
(ただ使用する言語によって向き不向きがあります。ようするに楽だったり面倒だったりします)
DeadDoorさんのVBScriptもオートメーションに対応しているからExcelを操作できたのです。
現在のAB4は残念ながら面倒なほうに該当しますが,できないわけではありません。
VBSと同じようにCreateObjectやExcel.ApplicationのWorkbooks.OpenとRunを呼んでやればよいのです。
しかし試してみたのですが,どうもうまくいっていません。
サンプルはもう少し待ってください。
できるのですが,VBScriptほど簡単にはできません。
> .Run("Test.xls!Auto_open")
この!Auto_openがみそだと思い,まずこれを試してみました。
ShellExecute(NULL, NULL, "excel", "~~.xls!Auto_open", NULL, SW_HIDE)
しかし駄目でした。というわけで真面目に取り組む必要がありそうです。
Excelなんかはオートメーションと言う技術を使っていて,
これは様々なプログラミング言語から使えるということになっています。
(ただ使用する言語によって向き不向きがあります。ようするに楽だったり面倒だったりします)
DeadDoorさんのVBScriptもオートメーションに対応しているからExcelを操作できたのです。
現在のAB4は残念ながら面倒なほうに該当しますが,できないわけではありません。
VBSと同じようにCreateObjectやExcel.ApplicationのWorkbooks.OpenとRunを呼んでやればよいのです。
しかし試してみたのですが,どうもうまくいっていません。
サンプルはもう少し待ってください。
よこやりですみませんが、
ふと思いついたことがあるので書き込みます。
ABでVBScriptファイルを出力して実行までを行うバッチプログラムを作ればよいのではないでしょうか?
VBScriptの実行が終了した時点でスクリプトファイルを破棄すれば簡単ではないかと思います。
ファイルの作成もtempフォルダにしておけば気付かれにくそうですし。。。
ふと思いついたことがあるので書き込みます。
ABでVBScriptファイルを出力して実行までを行うバッチプログラムを作ればよいのではないでしょうか?
VBScriptの実行が終了した時点でスクリプトファイルを破棄すれば簡単ではないかと思います。
ファイルの作成もtempフォルダにしておけば気付かれにくそうですし。。。
コード: 全て選択
#console
' ↓ ここからプログラムが実行されます
Dim buf[MAX_PATH] As Byte
GetTempPath(MAX_PATH,buf)
Dim temp As String
temp=MakeStr(buf)
Open temp+"temp_vbscript.vbs" For Output As #1
Print #1,Ex"set xlObj = CreateObject(\qExcel.Application\q)"
Print #1,Ex"with xlObj"
Print #1,Ex".Workbooks.Open(\qC:\\Test.xls\q)"
Print #1,Ex".Run(\qTest.xls!Auto_open\q)"
Print #1,Ex"end with"
Close #1
Exec temp+"temp_vbscript.vbs"
Print "Excel起動中"
Sleep(500)
Kill temp+"temp_vbscript.vbs"
私も便乗させて頂いても良いでしょうか?
イグトランスさま>
前にお伺いしたこともありますが、
オートメーション技術(ActiveX・COM)の
アプリケーション開発の分野に非常に
興味を持っています。現在は有効な手段が
見つからないので、VB6.0にて開発していますが、
文字列結合などVB・VBSでは非力な面があって、
どうしてもABでこの分野の開発がしたいのです。
>現在のAB4は残念ながら面倒なほうに該当しますが,できないわけではありません。
>VBSと同じようにCreateObjectやExcel.ApplicationのWorkbooks.OpenとRunを呼んでやればよいのです。
この手法が、どうもサンプルがなくて難しいのです。
面倒なコーディングを強いられるのは、ちょっと苦手
なんですが、ABには期待していますので、サンプルの
お願いをさせてください。
私は主にWord・Excel・Adobe系ソフトのActiveX系ソフトを
作っています。
よろしくお願いいたします。
DeadDoorさま>
>ところが、Test.Vbsはテキスト文なので簡単に変更されてしまいます。
>ActiveBasicのExeから呼び出せば同じ事が出来て
>簡単に変更されない。と思い付いたのです。
私も常々、同じ事を思っています。
山本さま>
ぜひABでも容易にオートメーションできませんか?
イグトランスさま>
前にお伺いしたこともありますが、
オートメーション技術(ActiveX・COM)の
アプリケーション開発の分野に非常に
興味を持っています。現在は有効な手段が
見つからないので、VB6.0にて開発していますが、
文字列結合などVB・VBSでは非力な面があって、
どうしてもABでこの分野の開発がしたいのです。
>現在のAB4は残念ながら面倒なほうに該当しますが,できないわけではありません。
>VBSと同じようにCreateObjectやExcel.ApplicationのWorkbooks.OpenとRunを呼んでやればよいのです。
この手法が、どうもサンプルがなくて難しいのです。
面倒なコーディングを強いられるのは、ちょっと苦手
なんですが、ABには期待していますので、サンプルの
お願いをさせてください。
私は主にWord・Excel・Adobe系ソフトのActiveX系ソフトを
作っています。
よろしくお願いいたします。
DeadDoorさま>
>ところが、Test.Vbsはテキスト文なので簡単に変更されてしまいます。
>ActiveBasicのExeから呼び出せば同じ事が出来て
>簡単に変更されない。と思い付いたのです。
私も常々、同じ事を思っています。
山本さま>
ぜひABでも容易にオートメーションできませんか?
皆様、大変ご苦労をかけて申し訳ありません。
NoWest様、こんにちは。
まだ、ABでの経験は数時間な未熟者に懇切丁寧なコードを
開示していただき感激しております。
VBAしか知らない自分ですが、コードの流れと意味は理解できます。
ただ「+」「¥q」「¥¥」などの記号の意味が解りませんが
(Helpで捜せない!!!)
こうやって書くのだと初めて知りました。
自分のエクセルは立ち上がりました。
しかし、問題はあります。
「Dos窓が表示されてしまう」のです。
#consoleというのがDos窓を前提にしているようですが
やはり、ActiveBasicのEXEファイルから立ち上げるわけですから
「なん~となく、格好悪い」気がします。
Hideする命令がありますか?
それとKillでエラーになります。(OSはXP)
生意気なことを言ってすみません。
ご助言を頂けたら幸せです。
まだ、ABでの経験は数時間な未熟者に懇切丁寧なコードを
開示していただき感激しております。
VBAしか知らない自分ですが、コードの流れと意味は理解できます。
ただ「+」「¥q」「¥¥」などの記号の意味が解りませんが
(Helpで捜せない!!!)
こうやって書くのだと初めて知りました。
自分のエクセルは立ち上がりました。
しかし、問題はあります。
「Dos窓が表示されてしまう」のです。
#consoleというのがDos窓を前提にしているようですが
やはり、ActiveBasicのEXEファイルから立ち上げるわけですから
「なん~となく、格好悪い」気がします。
Hideする命令がありますか?
それとKillでエラーになります。(OSはXP)
生意気なことを言ってすみません。
ご助言を頂けたら幸せです。
ここは超親切・超紳士的な掲示板ですね!
イグトランス様、おはようございます。
エクセルの起動の件では、大変ご苦労をおかけし恐縮しております。
「後はインターフェイスの宣言を移植するだけです。」
という作業をなさっているようですが、
成功の折には、その恩恵でABの利用者が「超拡大」すると思われます。
ぜひお願いします。気長に期待しております。
------------
ヘルプの件ですが
大変親切なご指導ありがとうございます。
こんな事まで気を配って頂けるとは思いもしませんでした。
自分では今までのVBA経験と比較しながらそれなりに
「翻訳」出来てはいたのですが、
ヘルプの使い方に少し「くせ」があるようですね。
(初心者のわりに生意気だと思います)
-------------
希望の星イグトランス様
これからもよろしくお願いします。
エクセルの起動の件では、大変ご苦労をおかけし恐縮しております。
「後はインターフェイスの宣言を移植するだけです。」
という作業をなさっているようですが、
成功の折には、その恩恵でABの利用者が「超拡大」すると思われます。
ぜひお願いします。気長に期待しております。
------------
ヘルプの件ですが
大変親切なご指導ありがとうございます。
こんな事まで気を配って頂けるとは思いもしませんでした。
自分では今までのVBA経験と比較しながらそれなりに
「翻訳」出来てはいたのですが、
ヘルプの使い方に少し「くせ」があるようですね。
(初心者のわりに生意気だと思います)
-------------
希望の星イグトランス様
これからもよろしくお願いします。
オートメーションは私も興味があってやっていることですから,大して苦ではありません。
http://www.discoversoft.net/forum/viewtopic.php?t=775
順調だと思っていたらこのざまです。Runメソッドが山ほど引数を取っていてどうしようもないです。
次善策はここだけ「Visual C++」でDLLを作ることです。
Visual C++はコンパイラのCOMサポートが充実しているので,肝心の部分は意外と簡潔に書けます。
#ABもいつかVC++並にCOMやオートメーションが簡単になってほしいものです。
たとえば元のVBSと同じことを実行するVC++でのコードは次のようになります。
#importはVB/VBAの参照設定に当たるものだと思えば構いません。
また,Excelのインスタンスが残るのが嫌なので,Quitの呼び出しを追加しています。
というわけでDLL化します。
たとえばこう使います。
eemGetLastErrorMessageは最後のエラー発生時のエラーメッセージを返す作りになっています。
ところで,NoWestさんのコードでもPrint "Excel起動中"の行さえ削除すれば#console抜きでコンパイルできるはずです。
http://www.discoversoft.net/forum/viewtopic.php?t=775
順調だと思っていたらこのざまです。Runメソッドが山ほど引数を取っていてどうしようもないです。
次善策はここだけ「Visual C++」でDLLを作ることです。
Visual C++はコンパイラのCOMサポートが充実しているので,肝心の部分は意外と簡潔に書けます。
#ABもいつかVC++並にCOMやオートメーションが簡単になってほしいものです。
たとえば元のVBSと同じことを実行するVC++でのコードは次のようになります。
[ここをクリックすると内容が表示されます]
tryの中がキモで,あとは準備や後片付けです。これをeem.cppとしてコマンドラインからcl eem.cpp /GX /O2 /MT /FeEEM.DLL /link /DLLでコンパイルしました。
コード: 全て選択
#include <windows.h>
#include <assert.h>
#import "C:\Program Files\Common Files\Microsoft Shared\Office10\MSO.DLL" \
rename("RGB", "RBGXL") \
rename("DocumentProperties", "DocumentPropertiesMSO") \
rename("SearchPath", "SearchPathMSO")
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
#import "C:\Program Files\Microsoft\Office\EXCEL9.OLB" \
rename("RGB", "RBGXL") \
rename("ExitWindows", "WordExitWindows") \
rename("DialogBox", "DialogBoxXL") \
rename("DocumentProperties", "DocumentPropertiesXL") \
rename("ReplaceText", "ReplaceTextXL") \
rename("CopyFile", "CopyFileXL") \
int WINAPI WinMain(HINSTANCE, HINSTANCE, char*, int)
{
if (FAILED(CoInitialize(0)))
return 2;
int ret = 1;
try
{
Excel::_ApplicationPtr xlObj(L"Excel.Application");
xlObj->Workbooks->Open(L"h:\\test.xls");
xlObj->Run(L"test.xls!Auto_open");
xlObj->Quit();
ret = 0;
}
catch (const _com_error& e)
{
MessageBoxW(0, e.Description(), 0, MB_ICONERROR);
}
CoUninitialize();
return ret;
}
#importはVB/VBAの参照設定に当たるものだと思えば構いません。
また,Excelのインスタンスが残るのが嫌なので,Quitの呼び出しを追加しています。
というわけでDLL化します。
[ここをクリックすると内容が表示されます]
これのABでの宣言はこうなります。
このコードをeem.cppとして,コマンドラインからcl eem.cpp /GX /O2 /MT /FeEEM.DLL /link /DLLでコンパイルしました。
コード: 全て選択
#include <string>
#include <cwchar>
#include <windows.h>
#import "C:\Program Files\Common Files\Microsoft Shared\Office10\MSO.DLL" \
rename("RGB", "RBGXL") \
rename("DocumentProperties", "DocumentPropertiesMSO") \
rename("SearchPath", "SearchPathMSO")
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
#import "C:\Program Files\Microsoft\Office\EXCEL9.OLB" \
rename("RGB", "RBGXL") \
rename("ExitWindows", "WordExitWindows") \
rename("DialogBox", "DialogBoxXL") \
rename("DocumentProperties", "DocumentPropertiesXL") \
rename("ReplaceText", "ReplaceTextXL") \
rename("CopyFile", "CopyFileXL") \
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, PVOID)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hinstDLL);
}
return TRUE;
}
namespace
{
_bstr_t LastErrorMessage;
}
extern "C"
{
__declspec(dllexport)
HRESULT WINAPI ExecExcelMacrosW(PCWSTR FilePath, PCWSTR MacroName)
{
//ファイル名部分だけを取り出す。
PCWSTR pFileName = std::wcsrchr(FilePath, L'\\');
std::wstring RunArg = pFileName ? pFileName + 1 : FilePath;
RunArg += '!';
RunArg += MacroName;
try
{
Excel::_ApplicationPtr xlObj(L"Excel.Application");
xlObj->Workbooks->Open(FilePath);
xlObj->Run(RunArg.c_str());
xlObj->Quit();
}
catch (const _com_error& e)
{
LastErrorMessage = e.Description();
return e.Error();
}
return S_OK;
}
__declspec(dllexport)
HRESULT WINAPI ExecExcelMacrosA(PCSTR FileName, PCSTR MacroName)
{
//_bstr_tのマルチバイト→ワイド文字変換を利用(悪用?)
_bstr_t bsFileName(FileName);
_bstr_t bsMacroName(MacroName);
return ExecExcelMacrosW(bsFileName, bsMacroName);
}
__declspec(dllexport)
PCWSTR WINAPI eemGetLastErrorMessageW()
{
return LastErrorMessage;
}
__declspec(dllexport)
PCSTR WINAPI eemGetLastErrorMessageA()
{
return LastErrorMessage;
}
}
コード: 全て選択
Declare Function ExecExcelMacros Lib "EEM.DLL" Alias "_ExecExcelMacrosA@8" (FilePath As BytePtr, MacroName As BytePtr) As HRESULT
Declare Function ExecExcelMacrosW Lib "EEM.DLL" Alias "_ExecExcelMacrosW@8" (FilePath As *WCHAR, MacroName As BytePtr) As HRESULT
Declare Function ExecExcelMacrosA Lib "EEM.DLL" Alias "_ExecExcelMacrosA@8" (FilePath As BytePtr, MacroName As BytePtr) As HRESULT
Declare Function eemGetLastErrorMessageW Lib "EEM.DLL" Alias "eemGetLastErrorMessageW" () As *WCHAR
Declare Function eemGetLastErrorMessageA Lib "EEM.DLL" Alias "eemGetLastErrorMessageA" () As BytePtr
Declare Function eemGetLastErrorMessage Lib "EEM.DLL" Alias "eemGetLastErrorMessageA" () As BytePtr
eemGetLastErrorMessageは最後のエラー発生時のエラーメッセージを返す作りになっています。
コード: 全て選択
#strict
Dim hr As HRESULT
hr = CoInitialize(0)
If hr <> S_OK Then
Dim ErrorMsg As String
ErrorMsg = GetErrorStr(hr)
MessageBox(0, StrPtr(ErrorMsg), 0, MB_ICONERROR)
End
End If
If ExecExcelMacros("H:\Test.xls", "Auto_open") <> S_OK Then
MessageBox(0, eemGetLastErrorMessage(), 0, MB_ICONERROR)
End If
CoUninitialize()
End
Const LANG_USER_DEFAULT = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)
Function GetErrorStr(dwMessageId As DWord) As String
Dim pszMsg As BytePtr
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER Or FORMAT_MESSAGE_FROM_SYSTEM Or FORMAT_MESSAGE_IGNORE_INSERTS, _
NULL, _
dwMessageId, _
LANG_USER_DEFAULT, _
VarPtr(pszMsg), _
0, _
NULL)
If Not pszMsg = NULL Then
GetErrorStr = pszMsg
LocalFree(pszMsg)
End If
End Function
巨大ブラックホール現る!
ゲスト様、こんにちは。
突然、巨大なブラックホールが太陽系に近づき、
銀河系と融合しようとしている感じです。
自分のような無知な人間はオロオロするだけです。
多分、示されたコードはオートメーションを考慮中の方々への
サジェスチョンの様な事だと思いますが、
自分には全く理解できません。(当たり前)
-------------
>ところで,NoWestさんのコードでもPrint "Excel起動中"の行さえ削除すれば#console抜きでコンパイルできるはずです。
なーるほど、Dos窓は表示されず、たしかに私の目的は達成できます。
すばらしいと思います。
ABがほんの少し理解出来たような感じがします。
巨大ブラックホールの「絶大な力」を感じました。
生意気だとは思いますが、
やはり、ABによる「正当な立ち上げ??」を期待いたします。
生意気を、ご容赦願います。
突然、巨大なブラックホールが太陽系に近づき、
銀河系と融合しようとしている感じです。
自分のような無知な人間はオロオロするだけです。
多分、示されたコードはオートメーションを考慮中の方々への
サジェスチョンの様な事だと思いますが、
自分には全く理解できません。(当たり前)
-------------
>ところで,NoWestさんのコードでもPrint "Excel起動中"の行さえ削除すれば#console抜きでコンパイルできるはずです。
なーるほど、Dos窓は表示されず、たしかに私の目的は達成できます。
すばらしいと思います。
ABがほんの少し理解出来たような感じがします。
巨大ブラックホールの「絶大な力」を感じました。
生意気だとは思いますが、
やはり、ABによる「正当な立ち上げ??」を期待いたします。
生意気を、ご容赦願います。
2つ上のも私です。またまたうっかりログインしないまま書いてしまいました。
前回書き忘れましたが,VC++も無料で手に入ります。
#つまり無料であると言うことが売りになりづらくなりABやその他フリーを売りにしてきた言語には厳しいわけです。
そんなわけでVC++を使ってみたわけですが,このDLLを作るためだけにVC++をインストールするのは手間が大きすぎるのがネックです。
#VC++だけならよいのですが,Platform SDKまでインストールする必要があるので……。
私はWebサイトをもっていないので,当分ここにDLLを置いておきます。
http://briefcase.yahoo.co.jp/game_oi2/
使用例はもちろん前回の投稿のとおりです。宣言とプログラム本体を1ファイルにしてコンパイルして,問題なくできるはずです。
邪道ですか?すいません。
しかし例のバグが直らない限りどうしようもないので,せめてそれまでの辛抱ということで。
前回書き忘れましたが,VC++も無料で手に入ります。
#つまり無料であると言うことが売りになりづらくなりABやその他フリーを売りにしてきた言語には厳しいわけです。
そんなわけでVC++を使ってみたわけですが,このDLLを作るためだけにVC++をインストールするのは手間が大きすぎるのがネックです。
#VC++だけならよいのですが,Platform SDKまでインストールする必要があるので……。
私はWebサイトをもっていないので,当分ここにDLLを置いておきます。
http://briefcase.yahoo.co.jp/game_oi2/
使用例はもちろん前回の投稿のとおりです。宣言とプログラム本体を1ファイルにしてコンパイルして,問題なくできるはずです。
邪道ですか?すいません。
しかし例のバグが直らない限りどうしようもないので,せめてそれまでの辛抱ということで。
イグトランス様、おはようございます。
巨大ブラックホールと希望の星が同一の方とは、自分の判断力では無理でした。
振り返ると「超親切」なところはそっくりでした。
>邪道ですか?すいません。
とありますが、自分には「えっ!!」て感じです。
なにか自分が批判的なことを言ったつもりはないのですが
(VC++などを理解できない為)
その様にイグトランス様が受け取られたのでしたら
こちらのほうが、謝りたい心情で一杯です。
お許し下さい。
>しかし例のバグが直らない限りどうしようもないので,せめてそれまでの辛抱ということで。
頑張っていただいているイグトランス様に「敬意」を払っています。
今後とも是非頑張ってください。(結構、ずうずうしいです。)
「超新星の誕生」を期待しております。
振り返ると「超親切」なところはそっくりでした。
>邪道ですか?すいません。
とありますが、自分には「えっ!!」て感じです。
なにか自分が批判的なことを言ったつもりはないのですが
(VC++などを理解できない為)
その様にイグトランス様が受け取られたのでしたら
こちらのほうが、謝りたい心情で一杯です。
お許し下さい。
>しかし例のバグが直らない限りどうしようもないので,せめてそれまでの辛抱ということで。
頑張っていただいているイグトランス様に「敬意」を払っています。
今後とも是非頑張ってください。(結構、ずうずうしいです。)
「超新星の誕生」を期待しております。