• ベストアンサー

エクセルへファイルを開かずにデータの操作

アクセスへはADOを使うと ldbファイルができあがり アプリケーションを開かずに値の取得や変更が可能ですが エクセルへADO(もしくはそれ以外)を使って値の変更などは可能でしょうか? エクセルはいちいちファイルを開かないと無理でしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 http://support.microsoft.com/kb/278973 ADO を使用して Excel ブックのデータの読み取りおよび書き込みを行う方法 (ExcelADO) 上記の資料は、Excel to Excel ではなく、ASP to Excel です。ここを参考にしました。 .Properties("Extended Properties").Value = "Excel 8.0;HDR=NO;" HDR=NO; を入れると、ヘッダー(フィールド)がなくても取れますが、現在のマクロでは、Excelのようなマトリックス型では取れません。 '------------------------------------------ Sub getExcelData()   '要参照設定:Microsoft ActiveX Data Object x.x   Dim oConn As New ADODB.Connection   Dim oRS As New ADODB.Recordset   Dim FileName As String   Dim ret As Variant     'ファイル名   FileName = "D:\Test.xls"   With oConn     .Provider = "Microsoft.Jet.OLEDB.4.0"     .Properties("Extended Properties").Value = "Excel 8.0;HDR=NO;"     .Open FileName   End With      On Error Resume Next   oRS.Open "Select * from [[Sheet1$A1:A1]", oConn, adOpenStatic   Do While Not (oRS.EOF)     ret = oRS.Fields(0).Value     If Err.Number = 0 Then       MsgBox ret     Else       MsgBox Err.Description       Exit Do     End If     Err.Clear     oRS.MoveNext   Loop   oRS.Close   On Error GoTo 0   Set oRS = Nothing   oConn.Close   Set oConn = Nothing End Sub

nifufu2
質問者

お礼

ありがとうございます。 [[Sheet1$A1:A1]を [Sheet1$A1:A1]でできました!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 AccessもExcelも同じです。データベースのファイルスタイルを作ってあれば、書き込みは可能です。  '要参照設定:Microsoft ActiveX Data Object x.x   Dim oConn As New ADODB.Connection   With oConn     .Provider = "Microsoft.Jet.OLEDB.4.0"     .Properties("Extended Properties").Value = "Excel 8.0"     .Open FileName   End With しかし、ADOで開けることが、ご質問者さんが言う「いちいちファイルを開ける」というほどに違いがあるのでしょうか。Excelで、ADOを、いくら参照設定して、Early Binding であっても、インスタンスを作っていることでは、思ったほどの効果がありませんし、操作が限定されます。

nifufu2
質問者

お礼

ありがとうございます。 サンプルどおりにやってみたらできました。 しかしここから、シート1のA1の値を取得することは可能でしょうか? MsgBox Sheets("Sheet1").Range("a1").Value MsgBox oConn.Sheets("Sheet1").Range("a1").Value これではうまくいきませんでした。

すると、全ての回答が全文表示されます。

関連するQ&A