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

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

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

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

SharePoint

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

SQL

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

Q&A

解決済

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

chaoschaos
chaoschaos

総合スコア11

VBA

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

SharePoint

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

SQL

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

1回答

0グッド

0クリップ

4457閲覧

投稿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

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

1

ベストアンサー

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

総合スコア1062

chaoschaos👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

chaoschaos

2022/03/04 13:07

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

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

VBA

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

SharePoint

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

SQL

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