ASPでExcelのセルに罫線、色付け

このQ&Aのポイント
  • ASPを使用してExcelのセルに罫線や色を付ける方法について教えてください。
  • WebサーバーにExcelがセットアップされていないため、ADODB.Recordsetを使用してExcelオブジェクトを作成しました。接続文字列とSQLを渡してレコードセットを開きました。
  • 値をセットすることはできましたが、罫線や色を付ける方法がわかりません。具体的な方法を教えてください。
回答を見る
  • ベストアンサー

ASPでExcelのセルに罫線、色付け

WebサーバーにExcelがセットアップされてないので、 Set rs=Server.CreateObject("ADODB.Recordset") を使用し、Excelオブジェクトを作成後、 接続文字列、SQLを渡して、レコードセットを開きました。 strSQL = "select * from DATA_RANGE" Rs.Open strSQL, Con, 0 '0=adOpenForwardOnly 以下のようにして、Excelに値をセットすることはできたのですが、 rs.Fields(0).Value = "AAA" 罫線や、色をつける方法がわかりません。 どうかご教授ください。

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

  • ベストアンサー
  • bdr
  • ベストアンサー率43% (35/80)
回答No.1

まずは、結論から。 ご質問された方法「Set rs=Server.CreateObject("ADODB.Recordset")」では罫線や色をつけるのは不可能です。 「Server.CreateObject("ADODB.Recordset")」はエクセルオブジェクトではなく、データオブジェクトなので、データの操作はできますが、セルの操作はできません。 データをセットするエクセルはサーバー上にある既存のファイルということでよろしいでしょうか? 既存のファイルであるならば、 (1)事前に罫線や色をつけておく (2)エクセルマクロのファイルオープンイベントにセルの値を読み込んで、罫線や色をつける (3)エクセルに条件付書式をつかって、罫線や色を設定する などの3つの方法があります、他にもあるかもしれませんが。

pyontanrie
質問者

お礼

大変ありがとうございました。おっしゃるとおり、どのようにしても、うまくいかないと思ってました。 (3)の方法で、実行してみようと思います。 本当にありがとうございました。

関連するQ&A

  • 2次元のdictionary

    こんにちは。 recordsetの結果をDictionaryにいれたいと思っています。 環境はWindows Vista、vbScriptで書いています。 set dc = createobject("scripting.dictionary") Set rs = Server.CreateObject("ADODB.Recordset") rs.open (sql文), con  for i = 0 to rs.recordcount -1 for j = 0 to rs.fields.count - 1 dc.add rs.fields(j).name, rs.fields(j).value next next ちょっとイメージっぽく書きましたが(このままではエラーでます)、要は複数のフィールドを持つ複数のレコードを入れられないかということです。 色々調べたりしてみたのですがわかりません。 できないのかな?と思いました。 もしできるなら書き方をご教授頂けたらと思います。 よろしくお願いします。

  • WSHでVBScript使いDBのデータを削除、新規登録する。

    申し訳ありませんが、素人の質問です。 WSHをVBSCriptでDBのレコードを削除、 テキストファイルを呼びだし、 呼び出したデータを変数に格納し、DBにインサートしたいのですが、 DBへの接続の仕方がわかりません。 ASPで作成したものは正常に動作するのですが、 WSHで作成したものは、接続するさいにエラーしてしまいます。 エラー箇所は下記の部分です。 すみませんが、回答お願いします。 テキスト呼び出し箇所 Set fso = Server.CreateObject("Scripting.FileSystemObject") Set fts = fso.OpenTextFile("D:\**\*\*\*\A.dat", 1, False, 0) 接続箇所 Con_s.BeginTrans DELETE箇所 Set Rs = Server.CreateObject("ADODB.Recordset") Cmd_s.CommandText = delSq Rs.Open Cmd_s, , adOpenForwardOnly インサート箇所 Set Rs = Server.CreateObject("ADODB.Recordset") Cmd_s.CommandText = strSql Rs.Open Cmd_s, , adOpenForwardOnly 切断箇所 Con_s.CommitTrans

  • ASPでRecordCountが使用できない

    Accessの100件のデータを10行づつブラウザに表示したいのですが、rs.PageCount、rsRecordCountなど色々と試しましたが正しい結果が得られず 困っています。 rs.AbsolutePage、Rs.PageSizなども試してみましたが、やはり結果は-1しか返されません。 Set db1=Server.CreateObject("ADODB.Connection") db1.Provider="Microsoft.Jet.OLEDB.4.0" db1.ConnectionString=Server.MapPath("../master.mdb") db1.Mode=1 db1.Open ' Set rs1=Server.CreateObject("ADODB.Recordset") Rs1.Pagesize = 5 ' keyword = "ABC" ' SQL1a = "SELECT top 5 * FROM dbFILE WHERE dbTABEL Like '%" & Keyword & "%'" Set Rs1=db1.Execute(SQL1a) Response.Write rs1.PageCount このようなリストで試しています。よき方法があれば是非 教えて下さい。 最終的にはSQL 7.0に置き換える予定です。 宜しく、お願いします。

  • ADOでエクセルからSQL Serverへデータを移行するには

    エクセルvbaのADOを使って、 SQL Serverの「test」という名のデータベースの「Table_1」に 新規レコードを追加する事はできますか? エクセルからアクセスには Sub test() Dim データベース名 As String Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New ADODB.Recordset cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & データベース名 rs.Open "Tテーブル1", cn, adOpenKeyset, adLockOptimistic rs.AddNew rs.Fields("フィールド1") = データ rs.Update rs.Close cn.Close Set rs = Nothing Set cn = Nothing End Sub で移行しています。 これをエクセルからSQL Serverへ移行させるにはどうすればいいのでしょうか? よろしくお願いします。

  • 【EXCEL VBA】ローカルmdbからデータを取得したい

    (環境)  WindowsXP  Excel2003  Access2003 現在、SQLサーバーからデータを取得しています。 下記のソースです(一部抜粋) Private Const SRC_SQL = "Provider=SQLOLEDB.1;User ID=testid;Password=testpass;Data Source=TEST-DB-1;Initial Catalog=testDB" Private Const TBL_TEST = "TEST.テストテーブル" Public Sub TEST_PRO Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = CreateObject("ADODB.Connection") cn.CommandTimeout = 0 cn.Open SRC_SQL strSQL = "SELECT X.*, FROM " & TBL_TEST & " X" strSQL = strSQL & " WHERE X.担当者CD = '" & wNAME & "'" strSQL = strSQL & " AND X.オープン日 >= '" & start_dt & "'" strSQL = strSQL & " AND X.オープン日 < '" & end_dt & "'" strSQL = strSQL & " ORDER BY X.オープン日 ASC" Set rs = CreateObject("ADODB.Recordset") rs.Open strSQL, cn With rs ~~~ End With Set rs = Nothing End Sub これを、SQLサーバーではなく、 C:\TESTACCESS.mdbのテーブル:テストテーブル からデータを取得するように変更したいのですが、 どのようにコーディングすればよろしいでしょうか? よろしくお願いします。

  • ExcelからAccessのテーブルの値の取得ができない

    Excel2003からAccess2003のDBの値を取得するVBAを作成中なのですが、 ExcelのフォームにてTextBox1に入力した社員番号からネットワーク接続されたサーバーにあるmdbファイルから値を取得する内容で 以下のエラーが表示されます。  「実行時エラー '-2147217904 (80040e10)':   1つ以上の必要なパラメータの値が設定されていません。」 デバッグをすると、「rs1.Open sql1, con」の箇所と指摘されます。 以下にコードを貼り付けますので、間違っている点のご指摘をお願いいたします。 Private Sub CommandButton2_click() Dim shainID As Long Dim constr As String '接続文字列の定義 Dim con As ADODB.Connection Dim rs1 As ADODB.Recordset If TextBox1.Value = "" Then MsgBox "社員番号を入力してください", vbOKOnly + vbCritical, "社員番号入力エラー" TextBox1.SetFocus Else shainID = TextBox1.Value Range("B13").Value = shainID 'Connectionの設定 Set con = CreateObject("ADODB.Connection") constr = "provider = Microsoft.Jet.OLEDB.4.0;Data Source = \\192.168.1.100\ShainDB\shaindb.mdb" 'DB接続 con.Open constr 'RecordSetの作成 Set rs1 = CreateObject("ADODB.Recordset") 'SQL sql1 = "select 社員漢字氏名,性別,生年月日,電話番号,住所 from 社員テーブル where 社員番号 = shainID" If sql1 = "" Then MsgBox "入力した社員番号の社員はいません。", vbOKOnly + vbCritical, "社員番号入力エラー" TextBox1.SetFocus Else 'SQLを実行して対象をRecordSetに入れる rs1.Open sql1, con Set rs1 = con.sql1 Range("B14").Value = 社員漢字氏名 Range("B15").Value = 性別 Range("B16").Value = 生年月日 Range("B17").Value = 電話番号 Range("B18").Value = 住所 Unload Me 'フォームを閉じる End If End If End Sub

  • ASPでRecordCountが使用できない(2)

    前回、指示をされた内容ででテストを試みましたがやはり、結果は-1 Set db1=Server.CreateObject("ADODB.Connection") db1.Provider="Microsoft.Jet.OLEDB.4.0" db1.ConnectionString=Server.MapPath("../master.mdb") db1.Mode=1 db1.Open ' Set rs1=Server.CreateObject("ADODB.Recordset") Rs1.Pagesize = 5 ' keyword = "ABC" ' SQL1a = "SELECT top 5 * FROM dbFILE WHERE dbTABEL Like '%" & Keyword & "%'" Set Rs1=db1.Execute(SQL1a) Rs1.CursorType = adOpenKeySet intP = Rs1.RecordCount Response.Write "RecordCount = " & intp & "<BR>" MSDNの説明でRecordCountなど参照しましたが理解不足でしょうか ? 宜しく、お願いします。

  • aspでaccessにデータを入れ替えすができない?

    以下のファイルを実行時にエラーを出てきました。どうすれば直るでしょうか?よろしくお願いします。 使用機械はNECのVC5002D、OSはXPのPRO(MEからのアップグレット)。 ------------------------ <% '分類訂正 Dim StrSQL, rs,newsclass_oldname,newsclass_newname Set rs = server.CreateObject("ADODB.Recordset") rs.LockType = adLockOptimistic StrSQL = "SELECT * FROM newsclass WHERE newsclass_name = '" & request("newsclass_oldname") & "'" newsclass_oldname=request("newsclass_oldname") newsclass_newname=request("newsclass_newname") rs.Open StrSQL, Con,,,adCmdText rs("newsclass_name") = request("newsclass_newname") rs.Update----------------line 13 %> ------------------------------------- HTTP 500.100 - 内部サーバー エラー - ASP エラー インターネット インフォメーション サービス -------------------------------------------------------------------------------- 技術情報 (サポート担当者用) エラー タイプ ADODB.Recordset (0x800A0BCD) BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。 correctnewssort_2.asp, line 13

  • Excel VBA EOFに関して

    テキストボックスにDateを入力し、SQLServerに接続しSelectの結果をシートに書き込むだけのものなのですが、「BOFとEOFのいずれかがTrueになっているか、または現在のレコードが削除されています」というエラーでさっぱりわかりません。どなたかアドバイスをお願い致します。 -前後省略- stdate = UserForm1.stdate.Value endate = UserForm1.endate.Value strsql = "select ***" strsql = strsql & "from ***" strsql = strsql & "where *** and ***.start_date between '" & stdate & "' and '" & endate & "' " con.Open connectionString Set rs = con.Execute(strsql) Sheets("Data1").Select rs.MoveFirst i = 2 Do Until rs.EOF Cells(i, 1) = rs.Fields(0).Value Cells(i, 2) = rs.Fields(1).Value Cells(i, 3) = rs.Fields(2).Value Cells(i, 4) = rs.Fields(3).Value i = i + 1 rs.MoveNext Loop con.Close Set con = Nothing Exit Sub Err_DBConnectOpen: MsgBox Err.Description If con.State <> ADODB.adStateClosed Then con.Close End If Set con = Nothing End Sub

  • wshでcsvファイルのソートを行いたい

    wshのプログラムで困っているため教えてください。 wshでcsv(カンマ区切り)のファイルのソートを行い、Escel形式で保存するプログラムを書いています。 調べてみたところ、wshではソート関数がないようで、 adodbのsort関数を使用して対処しようとしていますが、どうもうまくいきません。 (※adodbの必要はないのですが、ExcelVBAのsortのコードを書こうとするとエラーになってしまったので、adodbにしています。) <仕様> csvファイルのソートのキーになるのは、「判定区分」の値で昇順に行いたいです。 csvファイルの一行目は、カラム名としてソート対象にはなりません。 読み込んだcsvファイルをexcel形式に保存したいです。 ■csvファイルの形式は、以下のような形です。 性別,年代,判定区分,生年月日,日付 女性,10,0,2010/01/10,2013/7/7 23:57 男性,50,2,2000/03/30,2013/7/7 13:7 女性,10,0,1990/01/20,2013/7/7 15:22 女性,20,1,2001/12/10,2013/7/7 8:10 *----------------------------------- <ソース> Set con = CreateObject("ADODB.Connection") With con .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path & ";" _ & "Extended Properties='text;HDR=Yes;FMT=Delimited'" .Open End With Set rec = CreateObject("ADODB.Recordset") rec.Open "select * from " & csvfile & " order by 判定区分", con *----------------------------------- うまくいかないため ↓でも書いています。 *----------------------------------- Const adDate = 7 Const adVarChar = 200 Dim ans Set objADO = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") Set re = CreateObject("VBScript.RegExp") rs.Fields.Append "性別", adVarChar, 255 rs.Fields.Append "年代", adVarChar, 255 rs.Fields.Append "判定区分", adVarChar, 255 rs.Fields.Append "生年月日", adDate rs.Fields.Append "日付", adDate rs.Open ans = "" rs.Sort ="判定区分 ASC" rs.MoveFirst Do While Not rs.EOF ans = ans & rs.Fields(0).Value & vbCrLf rs.MoveNext Loop MsgBox ans エラーになってしまいます。 ソート処理だけですでににっちもさっちもいかないため、教えていただきたいです。 どうぞ宜しくお願いいたします。

専門家に質問してみよう