指定したセルを更新する を 使った ソースコードを紹介する表示色の説明:ASP VBScriptは <% 〜 %> キーワードは指定したセルを更新する です。
<%@LANGUAGE=VBScript%>
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
<html>
<head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<title>ADOでExcel(*.xls)に接続 指定したセルを更新する</title>
</head>
<body>
<h1>ADOでExcel(*.xls)に接続 指定したセルを更新する</h1>
test103-2.asp<br>
ASPからADOを使用してExcel(*.xls)に接続して、<br>
指定したセルを更新します<br>
<br>
<% 'データがPOSTで送られてきた時のみ処理を実行する
If IsEmpty(Request.Form("DATA")) = False Then
strXLSNAME = Server.MapPath("test103.xls") 'ファイルのパス+名前
strSHEETNAME = Request.Form("SHEET")
strX = Request.Form("X") '列
If Asc(strX) < Asc("A") Or Asc("E") < Asc(strX) Then
strX ="A"
End If
strY = Request.Form("Y") '行
If Asc(strY) < Asc("1") Or Asc("5") < Asc(strY) Then
strX ="1"
End If
strRANGE = strX & strY '列+行
strDATA = Left(Request.Form("DATA"),20) 'わるいけど頭20文字だけ書く
Call TestExcelDATASet(strXLSNAME, strSHEETNAME, strRANGE, strDATA)
End If
%>
<h2>テストデータを入力する</h2>
<FORM ACTION="test103-2.asp" METHOD="POST">
<b>シート名を選択:</b>
<INPUT TYPE="RADIO" NAME="SHEET" VALUE="Sheet1" CHECKED>Sheet1
<INPUT TYPE="RADIO" NAME="SHEET" VALUE="Sheet2">Sheet2
<INPUT TYPE="RADIO" NAME="SHEET" VALUE="Sheet3">Sheet3
<br>
<b>列を選択:</b>
<INPUT TYPE="RADIO" NAME="X" VALUE="A" CHECKED>A列
<INPUT TYPE="RADIO" NAME="X" VALUE="B">B列
<INPUT TYPE="RADIO" NAME="X" VALUE="C">C列
<INPUT TYPE="RADIO" NAME="X" VALUE="D">D列
<INPUT TYPE="RADIO" NAME="X" VALUE="E">E列
<br>
<b>行を選択:</b>
<INPUT TYPE="RADIO" NAME="Y" VALUE="1" CHECKED>1行
<INPUT TYPE="RADIO" NAME="Y" VALUE="2">2行
<INPUT TYPE="RADIO" NAME="Y" VALUE="3">3行
<INPUT TYPE="RADIO" NAME="Y" VALUE="4">4行
<INPUT TYPE="RADIO" NAME="Y" VALUE="5">5行
<br>
<b>セットするデータは?:</b>
<% Randomize : zz = "testDATA" & Int(Rnd * 1000) %>
<INPUT TYPE="TEXT" NAME="DATA" SIZE="20" VALUE=<%=zz%>>
<br>
<INPUT TYPE="SUBMIT" VALUE="test103.xlsへ書き込む">
</FORM>
<hr>
[<a Href="test103.xls" TARGET="_blank">test103.xls</a>]←更新されるファイル<br>
<hr>
<%
Sub TestExcelDATASet(strXLSNAME, strSHEETNAME, strRANGE, strDATA)
'---- CursorTypeEnum Values ----
Const adOpenForwardOnly = 0
Const adOpenKeyset = 1
Const adOpenDynamic = 2
Const adOpenStatic = 3
'---- LockTypeEnum Values ----
Const adLockReadOnly = 1
Const adLockPessimistic = 2
Const adLockOptimistic = 3
Const adLockBatchOptimistic = 4
'---- CursorLocationEnum Values ----
Const adUseServer = 2
Const adUseClient = 3
'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
Set db=Server.CreateObject("ADODB.Connection")
'接続文字を作成する
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strXLSNAME & ";" & _
"Extended Properties='Excel 8.0;HDR=NO'"
Response.Write "作った、使った接続文字列は<br>"
Response.Write "<CODE>Con = <b>" & strCon & "</b></CODE><hr>"
'データベース(xls)を開く
db.open strCon
'SQL文 Sheet$範囲 として設定
strSQL = "select * from "
strSQL = strSQL & "[" & strSHEETNAME & "$" & strRANGE & ":" & strRANGE & "]"
Response.Write "作った、使ったSQL文字列は<br>"
Response.Write "<CODE>strSQL = <b>" & strSQL & "</b></CODE><hr>"
'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, db, adOpenDynamic, adLockOptimistic 'レコードセットを開く
Response.Write "開いたレコードセットに対して.MoveFirst<br>"
rs.MoveFirst '先頭へ ※イラナイかもね
Response.Write "データ[" & strDATA & "]をセット後.Updateする"
rs.Fields(0).Value = strDATA 'データのセット
rs.Update '更新(データ確定)
Response.Write "rs.Close でレコードセットを閉じる<br>"
rs.Close
Set rs = Nothing 'オブジェクト変数を開放する
Response.Write "db.Close でxlsとの接続を閉じる<br>"
db.Close
Set db = Nothing 'オブジェクト変数も開放する
Response.Write "<b>データを書き込みました、xlsを確認してみてね</b><br>"
Response.Write "[<a Href='test103.xls' TARGET='_blank'>"
Response.Write "書き込まれたtest103.xlsを確認</a>]<hr><br>"
End Sub
%>
</body>
</html>
| 最近発売の雑誌を紹介する
科学や技術の雑誌です。
- パリティ 2008年 09月号
- プラスチックスエージ 2008年 09月号
- 環境浄化技術 2008年 09月号
- 機械技術 2008年 09月号
- 日経サイエンス 2008年 10月号
- 油脂 2008年 09月号
- Newton (ニュートン) 2008年 10月号
- PLANT ENGINEER (プラント エンジニア) 2008年 09月号
- ツールエンジニア 2008年 09月号
|