2011-10-11 28 views
1

HTMLフォームから情報を取り出し、ASP/VBScript(VB.NETではなく)でExcelファイル(xlsx)に入力しようとしています。私はJavaとPHPでいくつかの経験を持っていますが、VBの世界では初めてです。 Sofar私はGET/POSTメソッドからデータを取得する方法を見つけました。今、ExcelファイルへのADO接続を作成しようとしています。ASP/VBScriptを使用してExcelファイルに書き込む

Dim cn as ADODB.Connection 
Set cn = New ADODB.Connection 
With cn 
    .Provider = "Microsoft.ACE.OLEDB.12.0" 
    .ConnectionString = "Data Source=EXCEL_FILE.xlsx;" & _"Extended Properties=Excel 12.0 Xml;HDR=YES" 
    .Open 
End With 

私はここからの接続文字列を得た:connectionstrings.com と、このガイドに固執しようとした:http://support.microsoft.com/kb/257819/en-us しかし、運今まで はここに、これまでに私のコードです。 これは私の質問です:

1)これは一般的な考えですか?たとえば、POSTからデータを取得してから、ADOとの接続をExcelファイルに開き、接続オブジェクトのクエリに情報を追加しますか?

2)コードに明らかな欠陥がありますか?

3)誰かがHTMLフォームからExcelファイルにデータを書き込んで解決策を説明できれば素晴らしいと思います。

ありがとうございます。

編集:私はCNの「開く」を呼び出したら、それは私に500内部エラーが発生します

Dim cn 
Set cn = Server.CreateObject("ADODB.Connection") 
With cn 
    .Provider = "Microsoft.ACE.OLEDB.12.0" 
    .ConnectionString = "Data Source=EXCEL_FILE.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES""" 
'From : http://www.connectionstrings.com/excel-2007 
    .Open 
End With 

: [OK]をここでは、私がしようとしたコードです。私は明白な間違いをしているかどうかはわかりませんが、エラーログをどこで見つけるかわからないので、どこから探し始めるのか分かりません。

+0

もう1つ質問があります。私は、接続文字列のことについて完全にはわかっていません...または、一般的には、ADOが適切な方法であれば、私は様々な流行語(Excelの代わりにDSNとしてアクセスしています)を読んでいますし、です。 – MrPink

答えて

1

1 -としてExcel を使用する必要がある場合は、そうです。しかし、データベースが必要な場合は、Excelシートではなくデータベースを使用してください。
2 - VBScriptは早期バインディングをサポートしていません。データ型なしで変数を定義する必要があります。CreateObjectを使用してオブジェクトを作成する必要があります。また、接続文字列(引用符)の変更が必要です。

Dim cn 
Set cn = Server.CreateObject("ADODB.Connection") 
With cn 
    .Provider = "Microsoft.ACE.OLEDB.12.0" 
    .ConnectionString = "Data Source=EXCEL_FILE.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES""" 
    'From : http://www.connectionstrings.com/excel-2007 
.Open 
End With 
' 
' Add new records etc. 
' 
cn.Close 
Set cn = Nothing 

3から新しいレコードを追加する例(代わりに'Add new records etc.上記の入れ)HTMLフォーム(POSTメソッド)から値を取得します。

Dim rs 
Set rs = Server.CreateObject("Adodb.Recordset") 
With rs 
    .Open "[Sheet1$]", cn, 1, 3 
    .AddNew 
    .Fields(0).Value = Request.Form("Param1") 'Column A1 (or with name rs.Fields("col1").Value = exp) 
    .Fields(1).Value = Request.Form("Param2") 'Column B1 
    .Update 
    .Close 
End With 
Set rs = Nothing 
+0

は、Excelへの接続(特に書き込みアクセス権を持っている場合)が複数のユーザーのファイルロックに惑わされる可能性があることを指摘する必要があります。また、 'Server.MapPath()'を使ってExcelファイルへの実際のパスを取得し、それを接続文字列に追加する必要があります。 –

+0

並行性の問題は考えていませんでした。 Access DB(.mdb)を使用し、後でExcelにエクスポートする方がよいでしょう。 これまでの回答に感謝します。 接続を開こうとすると、上記のコードでエラーが発生しています。 .Open 問題は「Internal 500」エラーです。ASPファイルを削除してオンラインで見ることができるフォルダを持つプロバイダしかありません。どのように私はデバッグすることができますか?私が知らないログがありますか?エラーメッセージがなければ、よく知られていない言語で何がうまくいかないのか分かりません。 アイデアは大歓迎です。 ありがとう! – MrPink

+0

変更を加えた場合は、コードで質問を更新する必要があります。 –

関連する問題