質問: Nothing ----------------------------------- (手動で閉じる) 大体おおまかにこんな感じで作ってあります。 起動するExcelにはボタンが張り付けてあり 押すと処理が開始されます。 実際、起動そのものはされるのですが、同一ファイルにて 1.AccessからExcelを起動してボタンを押す 2.Excelを直接起動してボタンを押す の場合、Accessからの起動では、うまく処理が行われません。 直接起動でうまくいくので、ExcelのVBAの問題ではなく、 起動時の指定、または起動のやり方がまずいのでは、と とらえていますが、調べてもわからない状態が続いています。 (開き方や、マクロの呼び出し等方法を変えましたが うまくいきません) Excelでは主に、ピポットテーブルを利用してPasteSpecialで値を 設定している作りになっています。 Access2007でもAccess2003でも同じだったと思います。 同様な経験をされ解決した方、方法をご存じの方、 ぜひ教えていただければと思います。
回答: こんにちは。 >Set xlApp = CreateObject("Excel.Application") これは、オートメーション・オブジェクトであって、Excel本体で起動するのとは、若干違います。というか、オートメーション・オブジェクトを作るのは、別の意図(つまり、Excel本体を含む他の影響を受けないため)を持って作るのであって、同じ働きとは必ずしも言えません。具体的には、たとえば、Excelの二重起動の際、片方が、読み取り専用になってしまいます。それでは、もうひとつのブックは保存することはできなくなってしまいます。 そして、大きな違いは、アドインやPersonal.xls を呼び出していません。また、Auto_Open などは素通りしていくこと、セキュリティが関係がなくなる、などがあります。 今回は、上記のような問題はないので、フル機能のExcelを使う場合は、このようにします。 ret = Shell("c:\Program Files\Microsoft Office\Office\EXCEL.EXE " & FileName,1) または、 Set WshShell = CreateObject("Wscript.Shell") WshShell.Run "EXCEL.EXE " & FileName , 1 , True などとします。 注意:EXCEL.EXE のあとは、半角スペースを必ず空けて、ファイル名を付けてください。