質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.53%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

SharePoint

SharePointは、マイクロソフトにより開発された、ソフトウェア開発のドキュメント管理やコラボレーションを行うプラットフォームの総称です

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

9660閲覧

VBA(EXCEL)を用いてSharepointListへのデータ挿入を行いたい

chaoschaos

総合スコア11

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

SharePoint

SharePointは、マイクロソフトにより開発された、ソフトウェア開発のドキュメント管理やコラボレーションを行うプラットフォームの総称です

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2022/03/04 06:40

こんにちは。
エクセル上のボタンを押すとダイアログから対象のエクセルファイルを開いてその中身を既存Sharepointリストに新規アイテム作成するといったプログラムを作成中です。

データコネクションにはADOを使用しています。
UPDATE文やDELETE文は問題なく動いたのですが、INSERT 文を実行すると以下のエラーが発生します。

============================================
実行時エラー '-2147217887(80040e21)':
フィールド'Title'は更新できません。フィールドが更新可能ではありません。

============================================
Do Until文で2行目以下の中身を変数に置き換えて空白になるまで新規作成を続けるという形です。
「ListID」は既にこれより前に定義済でUPDATE文やDELETE文で動作確認はできています。

Sharepointリスト側での必須入力はタイトルのみで、普段使わないようにしていてNAといれるようにしています。
""や'で囲んだりしてみましたがうまくいきませんでした。
SQL文が悪そうだと推測していますが、具体的にどのように変えたらいいのかが試行錯誤したり調べてみてもわかりませんでした。。
何卒ご教授のほどよろしくお願いいたします。

Debug.Print testSQLのイミディエイト↓例
INSERT INTO ListId (Title,test,test2) VALUES("NA",'A','A') ;
INSERT INTO ListId (Title,test,test2) VALUES('NA','B','B') ;

Do Until Cells(y + 1, 1).Value = ""
StrUserName = Cells(y + 1, 2).Value
StrID = Cells(y + 1, 3).Value
With rs
.Open "SELECT * FROM list", cn
.MoveFirst
testSQL = "INSERT INTO ListId (Title,test,test2) VALUES(""NA""," & "'" & StrUserName & "'" & "," & "'" & StrID & "') ;"
Debug.Print testSQL
cn.Execute testSQL
.Close
End With
Loop

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

VBA

1With rs 2 .Open "SELECT * FROM list", cn 3 Do Until Cells(y + 1, 1).Value = "" 4 .AddNew 5 !Title = "NA" 6 !test = Cells(y + 1, 2).Value 7 !test2 = Cells(y + 1, 3).Value 8 .Update 9 Loop 10 .Close 11End With```

投稿2022/03/04 08:54

iruyas

総合スコア1067

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chaoschaos

2022/03/04 13:07

ご回答ありがとうございます! INSERTではなく.AddNewを使用するのですね。。。 また、こちらを試した後にActive X Data Objects 6.1 Libraryにチェックが入っていなかったためにエラーが出て四苦八苦していましたが、最終的にチェックを入れることで解決して無事読み込むことができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.53%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問