Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10全般 : Excel 2016)
ブックを開かずに書き込みしたい
投稿日時: 21/03/29 00:24:56
投稿者: mi mi mi
メールを送信

質問失礼します。
VBAでExcelブックを開かずに、
そのブックに操作を加えることはできますでしょうか。
 
操作したいこと…
・データのクリア
・別ブックの情報をコピペ
 
Excelブックを開かずデータ取得することはできたのですが、
データの書き込みはできないでしょうか?
 
開かずに操作したい理由は、
対象ブックが数式が大量に入っていてため、
ブックを開かずに操作すれば
処理が早くなると思ったためです。

回答
投稿日時: 21/03/29 07:56:36
投稿者: WinArrow
投稿者のウェブサイトに移動

>Excelブックを開かずデータ取得することはできたのです
多分、ADOを使ったものと推測します。
リスト形式で作成されているという条件があると思います。
 
お希望の
データクリア
他ブックのデータ複写
は、セルアドレスを伴う(Excelの機能を使用する)処理は
無理だと思います。
 
画面に表示させない方法もあるので
開いて処理したほうが無難ではないでしょうか?

回答
投稿日時: 21/03/29 17:35:48
投稿者: hatena
投稿者のウェブサイトに移動

mi mi mi さんの引用:
Excelブックを開かずデータ取得することはできたのですが、
データの書き込みはできないでしょうか?

これが ADO を使っているのなら、ADOで、SQLを使うかレコードセットを使って、書き込みや削除も可能です。
 
ADOでマスタ更新(SQL)|VBAサンプル集
https://excel-ubara.com/excelvba5/EXCEL116.html
 
【VBA】ADOを使用してExcel表をDB操作する方法のまとめ(範囲指定、書き込みなど) - Qiita
https://qiita.com/t-yama-3/items/e79056079ffdcdb79391#3-%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%9B%B4%E6%96%B0%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95

投稿日時: 21/03/29 23:17:24
投稿者: mi mi mi
メールを送信

ご回答ありがとうございます。
 
>Excelブックを開かずデータ取得することはできたのです
多分、ADOを使ったものと推測します。
→ADOという高度なものは使用せず、下記の通りで開かずデータ取得ができました、
    Range("d3:g" & LR) = "='C:\Users\1001\Desktop\[入出庫リスト_test.xlsx]商品CDメンテ'!d3"
 
>画面に表示させない方法もあるので
開いて処理したほうが無難ではないでしょうか?
→なるほどですね、表示させないにすれば、少し速度は速くなるんですかね。
試してみたいと思います。

投稿日時: 21/03/29 23:20:31
投稿者: mi mi mi
メールを送信

hatena様
ご回答ありがとうございます。
 
>これが ADO を使っているのなら、ADOで、SQLを使うかレコードセットを使って、書き込みや削除も可能です。
→ADOではなく単純に以下コードで行っていました。
    Range("d3:g" & LR) = "='C:\Users\100001R09501\Desktop\[入出庫リスト_test.xlsx]商品CDメンテ'!d3"
 
 ADO、今回初めて知ったのですが、開かずに操作ができるのですね、SQL構文も関連してきそうで、
 どちらも未開拓分野なのですが、調べて試してみたいと思います。ありがとうございます。

回答
投稿日時: 21/03/30 18:32:42
投稿者: WinArrow
投稿者のウェブサイトに移動

ADOでExcelシートを取り扱う場合の注意事項
 
データはリスト形式、または、テーブル形式であること
セルは結合しない
シートの1行目、または、セル範囲の1行目は、項目名とする(推奨)
同一項目名はNG
読込時も書き出し時も「値」のみ・・・(数式は使えない)
 
ほかにも注意することがあると思う。

回答
投稿日時: 21/04/02 15:29:33
投稿者: ip8bk

引用:
Range("d3:g" & LR) = "='C:\Users\1001\Desktop\[入出庫リスト_test.xlsx]商品CDメンテ'!d3"

 
横から失礼いたします。
 
同様のコードで試してみたところ、ウインドウが立ち上がってファイルを選択してOKをクリックしたところ、選択したファイルのセルの内容が取り出せました。
 
ファイルを選ぶのは自身(手動)で行われていますか?
それでも良いということでしょうか?

トピックに返信