初めて質問いたします。
ASPとVBAを使い、SQLサーバより取得したデータをサーバのEXCELファイルに挿入し、グラフを作成。
さらにグラフをgif化し、それをクライアントに表示するというシステムを作成したいのですが、EXCEL2000の場合のみマクロ付きのEXCELファイルをopenしたり、マクロを呼び出したりしようとすると、画面がかたまってしまいます。
最初は見えないところで「マクロを有効にする」などのメッセージがでているのかと思い、デジタル署名などを行ってみたのですが、ASPからVBAのマクロを呼び出すことができませんでした。
EXCEL97がはいっているサーバで試したところうまくいったのですが、EXCEL2000の場合のみうまくいきません。
環境は、
サーバ側:Windows2000+IIS5.0+office2000
クライアント側:IE5.0
です。

以下にソースを記します。
http://www.geocities.co.jp/SiliconValley-Cuperti …

原因及び回避方法がわかる方どうぞ力をお貸しください。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ごめんなさい。

VBでの書き方を持ち込んでしまいました。

Set objExcelBook = objExcelApp.Workbooks.Open("C:\temp\TestBook.xls",,True)

に変更してください。
    • good
    • 0

Excel2000では駄目というのが不思議ですね。



WindowsNT4.0 Workstation+PWS+Office2000なので、再現性がないかもしれませんが、修正しなくても動作しました。

ちょっと気になるのは、VisibleやActivateなのですが・・・原因とは関係ないと思いますが、VisibleやActivateあと、ブックを開くときをReadOnlyにしてみました。

<%
On Error Resume Next
Set objExcelApp = CreateObject("Excel.Application")

If Err <> 0 Then
' エラー処理
response.write "Excelを起動できませんでした"
response.write "エラー:" & Err.Description & ""
Else
On Error Resume Next
'確認ダイアログ非表示
objExcelApp.DisplayAlerts = False
'エクセルのオープン
Set objExcelBook = objExcelApp.Workbooks.Open(FileName:="C:\temp\TestBook.xls",ReadOnly:=True)
Set objExcelSheet = objExcelBook.Sheets(1)

'''セルに値の貼り付け
for i=1 to 10
objExcelSheet.Cells(i,1).Value = i
next

'マクロの呼び出し
objExcelApp.Run("Module1.macro1")


'エクセルファイルの保存
objExcelBook.SaveAs "C:\temp\TestBook2.xls"

Set objExcelSheet = Nothing
objExcelBook.Close
Set objExcelBook = Nothing
objExcelApp.Quit
Set objExcelApp = Nothing
Response.Write("作成しました。")
End If
%>

あとは、Excel2000が起動するように意図的にバージョンを指定するぐらいでしょうか。

Set objExcelApp = CreateObject("Excel.Application.9")
    • good
    • 0
この回答へのお礼

さっそくのご回答ありがとうございます。m_roadです。
arataさんに訂正していただいたソースを実行してみたのですが、

Set objExcelBook = objExcelApp.Workbooks.Open(FileName:="C:\temp\TestBook.xls",ReadOnly:=True)

というところで、')'がありません。というようなエラーになってしまったのですが、arataさんのほうは普通に動いていらっしゃるのでしょうか?

お礼日時:2001/07/24 17:11

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWindows2000 と SQLServer2000 と IIS5.0 の組み合わせでASPが動かない

今、WindowsNT SP6と IIS と SQLServer2000を使って、
(すべて1つのPCの中にインストールしてあります)

WEB側から、サーバーのデータベースの中を
検索し、参照するプログラムを動かすことができています。


同じことを、Windows2000 にしてやろうと
しているのですが、

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバが見つかりません。

となり、参照することができません。
ODBCの設定は合っていると思うのですが、
Windows2000 ではできないのでしょうか?

ユーザーの設定とかでしょうか?権限の問題?

どなたか教えてください。困ってます。
足りない情報があれば補足致します。

Aベストアンサー

Microsoft OLE DB Provider for SQL Serverを使えば良いのでは?

Q.NET ASP クライアント側でファイルの保存

.Net でWebのアプリケーションを作成しています。

サーバー側にあるデータを、クライアントにTXTファイルとして提供したいのですが、方法が良く分かりません。

System.IOを使おうとしたのですが、サーバにアクセスする権利がないとエラーになり、作成できません。

サーバ側のファイルにアクセス権をつけたりせず、データだけを、クライアントに渡して、ファイルにしたいのですが、できないのでしょうか?

Aベストアンサー

ダウンロード画面を出すということであれば

参考URL:http://www.ailight.jp/ASPDownload.aspx

Qブラウザーからサーバ側のaspファイルを読み込む方法について

クライアント側のVBscriptやJavaScriptなどのスクリプト
言語から画面を遷移しないでプログラム内でaspファイルを
呼びサーバ側での処理をした後にまたその後のプログラム
を実行するような処理をしたいのですがどのように記述し
たらよいのでしょうか?
(クライアントのプログラム内でサーバ側のaspファイルの
関数を呼び処理の結果をクライアントのスクリプト言語に
反映させたいのですが。。。)

Aベストアンサー

まったく使ったことはありませんのでなんとも言えませんが、リモートスクリプティングでできるかもしれません。

クライアントサイドのJavaScriptからサーバーサイドのスクリプトを実行して結果を受け取るような使い方ができるそうです。

「リモートスクリプティング」をGoogleで検索すると解説やサンプルがヒットしますので調査してみてはどうでしょうか。

参考URL:http://www.microsoft.com/japan/msdn/columns/scripting/scripting041299.asp

QASPで一定のデータをEXCELに出力しサーバに保存

ASPで一定のデータをEXCELに出力しサーバに保存し、結果印刷するものを作ってます。
1)ASPで、基本のシート(フォーム)をフォームをコピーする。
2)データの項目がブレイクしたらシートを変える。
3)横の列が256以上になったら、新しいシートに書く。
といったものです。

が、雛型のシートをコピーしても新しく出来たシートには設定がなくなってしまいます。
また、新しいシートを追加するとき、右方向に追加したいのですが、どうしても左方向にシートが出来ていきます。
「AFTER:=」はエラーになってしまいます。「,」ではうまく行きませんでした。
下記のコメント部分も試してみました。

どのような書き方をすれば、うまく結果がでますか?
解決策を教えて下さい。

Set sheetobj=bookobj.Sheets.Add
'bookobj.Sheets("フォーム").copy , sheetobj
'Set sheetobj=bookobj.Sheets(intSheetCnt)

'Set sheetobj=bookobj.Sheets("基本のシート").copy bookobj.Sheets(1)
'Set sheetobj=bookobj.Sheets.Add

ASPで一定のデータをEXCELに出力しサーバに保存し、結果印刷するものを作ってます。
1)ASPで、基本のシート(フォーム)をフォームをコピーする。
2)データの項目がブレイクしたらシートを変える。
3)横の列が256以上になったら、新しいシートに書く。
といったものです。

が、雛型のシートをコピーしても新しく出来たシートには設定がなくなってしまいます。
また、新しいシートを追加するとき、右方向に追加したいのですが、どうしても左方向にシートが出来ていきます。
「AFTER:=」はエラーになっ...続きを読む

Aベストアンサー

>上書きコピーになってしまい、追加コピーがされないのです。

意味がよくわかりませんが・・・

Bookの初期状態が雛形シートの1枚しかない前提でのやり方としては、
1.まず雛形となるシートのコピーを2枚目に作成する。
2.1枚目のシートに書き込みを行う。
3.1枚目のシートの書き込み限界がきたら、2枚目を最後尾にコピーし、2枚目のシートに書き込みをする。
・・・と繰り返して行き、最終のデータ書き込みをした時点でそのデータを書き込んでいたシートが全体数より少なければ、多い分(必ず多くなるはずですが・・・)を後ろから削除し、別名保存する。
といった形式で行えば、雛形・設定等は残った形(未書込状態)でのコピーは行えます。

QC#でASPでEXCELをマクロ動かすものを作ろうと思うのですが、

C#でASPでEXCELをマクロ動かすものを作ろうと思うのですが、
どうやって作ったらよいでしょうか。

具合的にいいますと、
クライアントで表示した画面のあるボタンを押すと、
サーバにあるExcelのマクロが起動して結果(Excelの表)を
クライアント側で表示する。

といったものです。
サーバ側にはExcelは入ってないので、
クライアント側にダウンロードしてきてマクロを起動すると
いったものになると考えています。

ざっくりとした説明ですが、
どうやって実現すればいいか分からない状況です。

自分でも調べていますが、
どなたか教えていただければと思います。

ここを見ればとかヒントのようなものでも
かまいませんので是非お願いします。

Aベストアンサー

ちょっと趣旨が噛みあっていないようなので。。

基本的には、
・サーバ(Webサーバ、またはLAN/VPN上のWindowsサーバ)があって、そこにデータベースがある
・クライアント(PC)があって、マクロ(プログラム)の入っているExcelを動かす
ということではないかと思います。

そのうえで、
・クライアント上でExcelを動かし、サーバからデータを持ってきて、表示する。
・あとはExcel上で何かする(整形やコピー、印刷、場合によってはサーバへの書き戻しなど)

Excel上の従来型「マクロ」ではC#やVB.NET言語は使用できません。使えるのは旧式のVBAのみ。
現在は、Visual Studio 2005以上を使い、C#やVB.NETで「VSTO=Visual Studio Tools for Office System」形式でアドオンやドキュメント上のDLLモジュールを開発します。
VSTOであればC#で開発でき、(もしあれば)VBAで昔、作らたマクロを呼び出すことも可能です。
もちろん、.NETの全機能が使用できるので、古臭いExcel VBAの機能に制限されることもありません。
相手がWebサーバでも、XML WebサービスやWCFを使ってデータの読み書きが可能です。

要するにプログラムのインターフェース画面をExcelやWordにするため、その上で動くモジュールを開発する、ということです。Offuice2003以上で対応します。
C#でWindowsアプリケーションを開発したことがあれば、そんなに難しいことではないと思います。
(VSTOはVisual Studio 2003までは別商品でしたが、VS2005からは内蔵されています)

参考URL:http://www.atmarkit.co.jp/fdotnet/special/vstodev/vstodev_01.html

ちょっと趣旨が噛みあっていないようなので。。

基本的には、
・サーバ(Webサーバ、またはLAN/VPN上のWindowsサーバ)があって、そこにデータベースがある
・クライアント(PC)があって、マクロ(プログラム)の入っているExcelを動かす
ということではないかと思います。

そのうえで、
・クライアント上でExcelを動かし、サーバからデータを持ってきて、表示する。
・あとはExcel上で何かする(整形やコピー、印刷、場合によってはサーバへの書き戻しなど)

Excel上の従来型「マクロ」ではC#やVB.NET言語は...続きを読む


人気Q&Aランキング

おすすめ情報