
「Excel VBA ADODB」の本を手元にして、Excelのデータ処理を勉強しております。
以下の2つの例では、旨くいきますが、次の3番目では、エラーとなります。delete
は、使えないのでしょうか?
Const DATA_SOURCE = "Data Source=人事データ.xls;"
Const DATA_SOURCE販売管理データ = "Data Source=販売管理データ.xls;"
Const DATA_SOURCE商品マスタ = "Data Source=商品マスタ.xls;"
Const ExProperties = "Extended Properties=Excel 8.0;"
Sub SELECT文によるテーブル結合() ' 570
Dim myConn As New ADODB.Connection
Dim myRS As New ADODB.Recordset
Dim myField As Field, i As Long
myConn.Open ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0; " & _
DATA_SOURCE販売管理データ & ExProperties
ThisWorkbook.Activate
Worksheets("570").Activate
myRS.Open Source:="SELECT 売上No, 売上.商品コード, 商品名, 単価, 数量 FROM 売上 INNER JOIN 商品マスタ ON 売上.商品コード=商品マスタ.商品コード;", _
ActiveConnection:=myConn
i = 1
For Each myField In myRS.Fields
Cells(1, i).Value = myField.Name
i = i + 1
Next myField
Range(Cells(1, 1), Cells(1, i - 1)).Interior.ColorIndex = 35
Range("A2").CopyFromRecordset Data:=myRS
myRS.Close: Set myRS = Nothing
myConn.Close: Set myConn = Nothing
End Sub
Sub INSERT文によるレコード追加() ' 571
Dim myConn As New ADODB.Connection
Dim myCmd As New ADODB.Command
Dim myField As Field, i As Long
myConn.Open ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0; " & _
DATA_SOURCE & ExProperties
ThisWorkbook.Activate
With myCmd
.ActiveConnection = myConn
.CommandText = "INSERT INTO 社員マスタ VALUES(11, '石川俊介', '大阪', 25);"
.Execute
''' 追加は、範囲の下にデータがあってはいけない。
''' 追加後、範囲名は広がらない。
' .CommandText = "UPDATE 社員マスタ SET 所属支店='東京' WHERE 社員No=5;"
End With
Set myCmd = Nothing
myConn.Close: Set myConn = Nothing
End Sub
Sub DELETE文によるレコード削除() ' 573
Dim myConn As New ADODB.Connection
Dim myCmd As New ADODB.Command
myConn.Open ConnectionString:="Provider=Microsoft.Jet.OLEDB.4.0; " & _
DATA_SOURCE & ExProperties
ThisWorkbook.Activate
With myCmd
.ActiveConnection = myConn
.CommandText = "DELETE FROM 社員マスタ WHERE 社員No=6;"
.Execute
End With
Set myCmd = Nothing
myConn.Close: Set myConn = Nothing
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
多分できないと思います。
下記はVB.NET & ADO.NETの場合ですがhttp://support.microsoft.com/kb/316934/ja
抜粋
『レコードの削除
Jet OLE DB プロバイダを使用すると、Excel ブックのレコードの挿入および更新はできますが、DELETE の操作を行うことはできません。1 件以上のレコードに対して DELETE 操作を実行しようとすると、次のエラー メッセージが表示されます。
この ISAM では、リンク テーブル内のデータを削除することはできません。
この制限事項は、Excel ブックをデータベースとして扱う場合に固有のものです。 』
当方、Excel2010なので、XLS(JET)、XLSX(ACE)で試しましたが、
『この ISAM では、リンク テーブル内のデータを削除することはできません。』
です。
JET/ACEを使っている時点でダメっぽい?ですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルの結合の仕方 MSAccess...
-
Excel VBA ADODB
-
EXISTSを使ったDELETE文
-
SQL文で、合計が0のレコードを...
-
ACCESS 商品毎の最新の単価を設...
-
フォームからの抽出結果をExcel...
-
Accessの実行時エラーについて
-
アクセス フィールド名に変数...
-
外部参照してるキーを主キーに...
-
差し込み後、元データを変更し...
-
SQLで特定の項目の重複のみを排...
-
フィルターかけた後、重複を除...
-
Outlook 送受信エラー
-
select文のwhere句に配列を入れ...
-
Access:クエリーにて集計後に...
-
SELECT 文 GROUP での1件目を...
-
エクセルの関数について教えて...
-
エクセルで最後の文字だけ置き...
-
VIEWの元のテーブルのindexって...
-
SQL Left Join で重複を排除す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXISTSを使ったDELETE文
-
SQL文で、合計が0のレコードを...
-
Accessの実行時エラーについて
-
ACCESS ツリービューの作り方
-
ACCESS 商品毎の最新の単価を設...
-
日付により変動する「単価」を...
-
アクセス フィールド名に変数...
-
ACCESSでDLookUpすると、不正な...
-
Excel VBA ADODB
-
ACCESSでクエリ作成時複数のフ...
-
異なるデータベース間のテーブ...
-
ACCESSのマスタの変更について
-
Access2013で商品に複数の単価...
-
前月の取得について
-
日付の範囲検索で
-
アクセス★非課税、課税の合計金...
-
SQL2005 クエリ文について
-
AS400にてサブファイルレコード...
-
自己結合について
-
ビューの更新タイミング
おすすめ情報