ASPにおいてExcelバージョンの判断方法

このQ&Aのポイント
  • Excelバージョンの判断方法とは、ASPでExcel出力を行う際に生じるエラーに対処する方法です。
  • Excel2003でのエラーチェックの挙動と、Excel2000での挙動の違いを確認しましょう。
  • Excelのバージョンが2000か2003であるかを判断して、適切な処理を行わせる方法を教えてください。
回答を見る
  • ベストアンサー

ASPにおいてExcelバージョンの判断方法

ASPにおいてExcel出力を行う処理があるのですが、 Excel2003で出力すると文字列として表示した数値(例:02) があるセルの左上にエラーとしてマークがついてしまいます。 ちなみにExcel2000ではこのようなことはおきません。 (1)2003ではツール→オプション→エラーチェックにある 「文字列として登録されている数値」のチェックボックスをFalse にすればよいみたいなのでソース上に(1)の処理を入れると 今度は2000の場合に動かなくなります。 そこでExcelのバージョンが2000か2003であるかを 判断して2003の場合のみ(1)の処理を行わせたいのですが、 どうしたらいいでしょうか?? ※アクセスする端末によってExcelのバージョンは違います。予想としてはレジストリが関連するのではないかと思うのですが。。。もし、Excelが2つ入っている場合などがちょっと心配ではあります。自動的に最後に使用したアプリケーションのバージョンとなるのでしょうか?? 以上、ご教授よろしくお願いします!!!!

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

2000や2003とかでは返ってきませんが .Version でバージョンを得ることができます バージョンの違うエクセルが2つ入っている時に バージョンを指定してエクセルをCreateObjectできると思いますが、 ちょっと試すことができる環境にないので自信なし。

関連するQ&A

  • エクセル関数で文字列か数値かを判断する

    エクセルの関数で指定した場所のデータが文字列か数値かを判断させることは可能でしょうか? 可能な場合、それをIFとからめて「文字列だったら○○」「数値だったら○○」という条件をつけて処理をしたいのですが。 よろしくお願いします。

  • ASPでEXCELを扱うには?

    こんにちは。 ASPでEXCELを起動させたいのですが、 Set objExcel = CreateObject("Excel.Application") ここでエラーが出ます。 ”ActiveX コンポーネントはオブジェクトを作成できません。: 'Excel.Application'” 環境はwindows2000とEXCEL2000です。 最終的には、EXCELの各シートをCSVで保存したいと思っています。 初心者ですがよろしくお願いします。

  • EXCEL97のバージョンについて

    Windows2000(SP2)上でEXCEL97を利用して帳表を出力するマクロを作成しました。 EXCEL97 SR-2がインストールされた複数のマシンでマクロを実行したところ 特定のマシンのみHPageBreaksのAddでアプリケーションエラーを起こします。 EXCELの「ヘルプ-バージョン情報」で表示させると全てSR-2と表示されますが 「システム情報-ソフトウェアの環境-実行中のタスク」のファイル日付がアプリ ケーションエラーを起こすマシンのみ1997/08/13になっており、他のマシンは 1997/09/23になっています。 SR-2が正しくあたっていないのかと思ったのですが、EXCEL97のバージョンを 細かく調べる方法がわかりません。 EXCEL97のバージョンを細かく調べる方法はありますか?

  • Excelのバージョンの違いで VBA の実行エラー

    エクセル2003で、 VBAを使い、行を非表示にする ドグルボタンを作成し、 シート保護をし、行の書式だけ編集可能にし保護しました。 Range("63:67").EntireRow.Hidden = True Selection.EntireRow.Hidden = False というのを使用しました。  つまり、ドグルボタンで、列の表示と非表示をできるように しました。 しかしながら、あるユーザから、 ドグルボタンを押すと"実行エラー 1004"が表示される。 Range クラスのHidden プロバティを設定できません。 と表示されると報告がありました。 まるで、シート保護時に、列の書式にチェックをしなかった ような症状です。 よく聞いてみると そのユーザはExcel2000のユーザでした。 Excelのバージョンの違いによって生じたエラーなのでしょうか? わかる人教えてください。

  • ASPへのデータの受け渡しについて

    以下のようなリンクが自動生成されるHTMLをつくりました。 http://**********/****/zzz.asp?A=5,B=nande zzz.aspの内部で A=request.querystring("A") B=request.querystring("B") と記述して、受け渡しを完了しているのですが、 Aについては数値として扱いたいのですが、 チェックをしていると、どうも文字列として変数の中に格納されているようです。 ここで質問です。 (1)requestオブジェクトを使って値の受け渡しをした場合 すべて受け渡し後は文字列としてしか扱えないのでしょうか? (2)文字列としてしか扱えない場合、数値として受け渡し後に 扱いたい場合の対処方法はあるのでしょうか? ちなみに受け渡しの時のMethodはGetを使っています。 よろしくお願いします。

  • 【緊急】ASPでのExcel出力方法について

    いつも参考にさせていただいております。 現在、aspで作成したweb環境を運用しております。 その中で抽出したデータをExcelに出力する処理がありますが、これを以下の方法で行っております。 ==================================== response.buffer = true response.ContentType = "application/vnd.ms-excel" response.AddHeader "content-disposition", "inline; filename=dynamic.xls"  ~ response.flush response.end ==================================== ただ、「Excel2013」であることから、出力されたExcelを開くたびにバージョン不一致の警告(ファイル形式と拡張子が一致しません)が表示されて不便です。 よって、Excel出力をExcelオブジェクトを用いた方法に変更しようと考えております。 ==================================== 'ファイルシステムオブジェクト生成 Set oFs = Server.CreateObject("Scripting.FileSystemObject") 'テンポラリファイル名取得 sFileName = Split(oFs.GetTempName, ".") 'エクセルファイル名にする sXlsName = sFileName(0) & ".xls" 'テンプレートが保存されているフォルダの物理パスを取得 sPath = oFs.GetFolder(Server.MapPath("/hogehoge/")).ParentFolder 'エクセルのオブジェクトを生成 Set oXls = Server.CreateObject("Excel.Application") 'エクセルのテンプレートファイルを開く Set oTmp = oXls.Workbooks.Open(sPath & "\temlate\template.xls")  ~ ==================================== ここからが質問です。 Excelオブジェクト作成時、エラーになってオブジェクトの作成が失敗します。 ==================================== 【オブジェクト作成を「Server.CreateObject」で行った場合】 Set oXls = Server.CreateObject("Excel.Application") ⇒ 以下のエラーが表示されます。   Server オブジェクト エラー 'ASP 0177 : 80080005'   Server.CreateObject に失敗しました 【オブジェクト作成を「CreateObject」で行った場合】 Set oXls = CreateObject("Excel.Application") ⇒ 以下のエラーが表示されます。   Microsoft VBScript 実行時エラー エラー '800a01ad'   ActiveX コンポーネントはオブジェクトを作成できません。: 'Excel.Application' ==================================== いろいろなサイトを情報をもとに対応しましたが、解決の糸口が見えない状況です。 ==================================== 【今まで試みた対応】 (1)コンポーネントサービスの「DCOMの構成」にて、「Microsoft Excel Application」の「起動とアクティブ化のアクセス許可」に「EveryOne」を追加。 (2)以下のフォルダを用意してフォルダのアクセス許可に「EveryOne」を追加。  C:\Windows\System32\config\systemprofile\Desktop  C:\Windows\SysWOW64\config\systemprofile\Desktop (3)オブジェクト作成時、「Excel.Application」を「Excel.Application.15」に変更。 ==================================== なお、開発環境は以下となります。 ==================================== 【開発環境】 OS:windows 8.1 64bit IIS:8.5 Excel:2013 その他:(1)aspを使用(.netではありません)     (2)「windows 8.1」はあくまでテスト環境です。      正常に動作することを確認後、本番環境「Win2008Server R2」に組み込む予定です。 ==================================== 私事ではありますが、スケジュール的に押し迫っております。 お忙しいところ申し訳ありませんが、解決方法のご教授をお願いいたします。 以上です。

  • エクセル バージョン

    以前のバージョンのExcelデータを2007で読む場合何ら問題なく読み込めると聞いたのですが・・ Excel2007で作ったデータをExcel2003にメール送信して データを読み込む場合、拡張子を「xlsx」で保存すればデータを読み込めるのでしょうか? それより以前のバージョンのExcelにデータを渡す場合は「名前を付けて保存」するとき「xls」にする必要があります。 逆に以前のバージョンのExcelデータは2007で読む場合何ら問題なく読み込めます。

  • エクセル 数値を決まった文字で表示したい

    よろしくおねがいします。 excel2003 または excel2007 です。 数値を決まった文字列であらわしたいのです。できれば VBA を使わずに。 たとえば 1・・・あ 2・・・い 3・・・う などとして  123(数値)を あいう(文字列)で表示したいのです。 数値の桁数は最高で7桁です。 よろしくおねがいします。  

  • EXCEL2007で他の方からいただいたブックを見ると、数値で入ってい

    EXCEL2007で他の方からいただいたブックを見ると、数値で入っている欄の左上に緑の三角形マークが 入っていました(それは、エラーチェックで付くものだということがわかりました。セルの書式設定で 見ると、書式が文字列になっていました)。 そのセルに数字を入れると、左上に三角マークが勝手につくようになっています。ところが、他のエク セルで作成したシートから数値を単純に貼りつけると、当然のことながら数値として貼りついてしまう ので三角マークは出ません。 そこで、貼り付ける元の数値を文字列に変えて貼り付けてみたのですが、三角マークは出てきません。 他のシートからのコピー、貼り付けを行なって、三角マークを出させたい場合、何か手立てがあるのでしょうか。宜しくお願い致します。

  • エクセルのかなり複雑な処理の解決法を教えて下さい!

    エクセルでこのような複雑な作業を組み込むことが可能なのかどうか教えてください。 重複した数値にインデックスされた文字列の昇順に関わる問題です。 任意の文字を並べた列の直下に(※ここでは<0>~<9>)、それぞれ数値を配置しているとします。 <0> <1> <2> <3> <4> <5> <6> <7> <8> <9> 17 , 14 , 15 ,14 , 10 , 16, 17 , 11 ,10 , 17 <0>と17、<5>と16など文字列と数値は上下セットとして考えます。 このセットを、数値の大きい順番に並び替え、さらにその並び替えた先で文字列も自動で一緒に並び替えるというのが目的です。 私なりに少ない頭を使って考えて、LARGE関数とINDEX関数&MATCH関数をなんとか用い、値を昇順させ並び替え、さらに値を呼応させて文字列も並び替えるようにしてみたのですが、 ここでどうしても『数値の重複問題』という壁が出てきてしまいます。。 先の関数を用いるとこのように値が出力されます。 17 , 17 , 17 ,16 , 15 , 14, 14 , 11, 10, 10 <0> <0> <0> <5> <2> <1> <1> <7> <4> <4> 数値がすべて、重複せずに済めば事足りるのですが、数値が重複している場合、『<0> <0> <0> 』のように呼応している文字列も重複してしまいます。。これ以上はこの関数では自動で並び替えることができません。 ここからなのですが、このように数値が重複した場合、さらにここから重複している数値同士の間でさらに昇順を行い、文字列が<0>に近い順(セル上ならより左側にある文字列の順)で並び替えたいと思っています。 17 , 17 , 17 , 16 , 15 , 14, 14, 11, 10 , 10 <0> <6> <9> <5> <2> <1> <3> <7> <4> <8> このような並び替えを自動でさせるにはどうしたら良いでしょうか?そもそも可能なのでしょうか。。 私のエクセルレベルは、関数をネットで調べてきてそこそこいじって組み込む程度のレベルです。 どなたか教えて下さると助かります。 所持しているエクセルは『Excel2010 windows7 版』です。よろしくお願いします。

専門家に質問してみよう