Access の VBA に関する質問スレです
質問テンプレ(雛形)は用意しませんが、OSとAccessのバージョンぐらいは必ず書きましょう
前回のスレッド
Access VBA 質問スレ Part1
https://mevius.5ch.net/test/read.cgi/tech/1328536426/
Access VBA 質問スレ Part2
1デフォルトの名無しさん
2018/12/12(水) 22:14:39.18ID:GF6Qf3Td174デフォルトの名無しさん
2020/10/23(金) 17:06:19.46ID:jTOWYlOX csvファイルに名前付けのルールとかがあって、規則性があるなら Left Mid Right
辺りを交えて工夫 全く一貫性が無いとかなら . を ppp とかにリネームする工夫
https://soudan1.biglobe.ne.jp/qa2877385.html ←これってこと?
http://tsware.seesaa.net/article/214574472.html ←ここにもヒントが
辺りを交えて工夫 全く一貫性が無いとかなら . を ppp とかにリネームする工夫
https://soudan1.biglobe.ne.jp/qa2877385.html ←これってこと?
http://tsware.seesaa.net/article/214574472.html ←ここにもヒントが
175デフォルトの名無しさん
2020/10/24(土) 06:13:20.49ID:3Br09s+m >>173
私はファイル選択、コピー、インポート、コピーしたファイルの削除、と言う手順でデータを取り込んでます。
私はファイル選択、コピー、インポート、コピーしたファイルの削除、と言う手順でデータを取り込んでます。
176173
2020/10/24(土) 23:19:53.94ID:s9oXa8gi177デフォルトの名無しさん
2020/11/21(土) 02:09:02.77ID:OkL4O3GG ACCESS365?でadoの話。
昨日、テーブルメンテナンス用にプログラム書いて、テストでupdateメソッド行をコメントアウトして実行したのにレコードが更新されて焦った。幸い意図した通りの更新が出来たので問題は無かったのだが、こんな事有る?
昨日、テーブルメンテナンス用にプログラム書いて、テストでupdateメソッド行をコメントアウトして実行したのにレコードが更新されて焦った。幸い意図した通りの更新が出来たので問題は無かったのだが、こんな事有る?
178デフォルトの名無しさん
2020/11/21(土) 19:58:38.03ID:4nufVV0K 通常ではあり得ない動作ですから
accdbが破損しているか
思い違いしているか
じゃないですかねぇ
accdbが破損しているか
思い違いしているか
じゃないですかねぇ
179デフォルトの名無しさん
2020/11/22(日) 23:10:13.61ID:DuDUZZqW だよね、自分の事じゃなければ私もそう思う。明後日に追試してみます。
180デフォルトの名無しさん
2020/11/25(水) 18:43:23.08ID:q3XRT9ff >177
ADOだと、Updateメソッド実行しなくてもレコードが保存される条件があったはず
https://docs.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/update-method-ado
>Update メソッドを呼び出すより前に追加中または編集中のレコードから移動すると、ADO によって自動的に Update が呼び出されて変更内容が保存されます。
ADOだと、Updateメソッド実行しなくてもレコードが保存される条件があったはず
https://docs.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/update-method-ado
>Update メソッドを呼び出すより前に追加中または編集中のレコードから移動すると、ADO によって自動的に Update が呼び出されて変更内容が保存されます。
181デフォルトの名無しさん
2020/11/26(木) 22:16:38.24ID:jD11+CM5182デフォルトの名無しさん
2020/11/27(金) 16:20:14.12ID:j3fR6c+j レコード移動しないけど変更を保存したいときに必要だろう
183デフォルトの名無しさん
2020/11/29(日) 20:06:15.16ID:k+jvWZ30 >>182
それはそうね
それはそうね
184デフォルトの名無しさん
2021/01/11(月) 16:27:04.20ID:HFGgd7VU ACCESSのSQLでビット比較ってどうすればいいですか
(value & 0x10) == 0x10 みたいに特定のビットが立ってるか比較したいのですが
(value & 0x10) == 0x10 みたいに特定のビットが立ってるか比較したいのですが
185デフォルトの名無しさん
2021/01/11(月) 17:56:37.60ID:qzYYjSUA できるかわかりませんが、
(value and &H10) = &H10
だとダメですか?
(value and &H10) = &H10
だとダメですか?
186デフォルトの名無しさん
2021/01/12(火) 19:10:42.78ID:f1Ulh51r >>185
試してみます、ありがとうございます
試してみます、ありがとうございます
187デフォルトの名無しさん
2021/01/12(火) 19:16:56.91ID:f1Ulh51r ダメでした
andを&に変えてもダメでした
andを&に変えてもダメでした
188185
2021/01/12(火) 19:30:22.83ID:sGnBc5NV そっか、SQLのAND演算子になっちゃうのか… &も文字列の結合演算子とみなされちゃうのかな?
&H10のビット限定なら、
(value \ 16) MOD 2
でいけそうですが、他にもパターンがあるでしょうから…
&H10のビット限定なら、
(value \ 16) MOD 2
でいけそうですが、他にもパターンがあるでしょうから…
189185
2021/01/12(火) 19:34:25.38ID:sGnBc5NV 何より分かりにくいですねw
整数除算(\)で該当のビット位置を一番右にずらして、MODでそのビットを取り出します
整数除算(\)で該当のビット位置を一番右にずらして、MODでそのビットを取り出します
190185
2021/01/12(火) 19:49:06.45ID:sGnBc5NV 16 じゃなくて &H10 と書く方が取り出すビットと一緒で分かりやすいですね(うまくゆくかはわかりませんが)
(value \ &H10) MOD 2
(value \ &H10) MOD 2
191185
2021/01/13(水) 02:15:13.93ID:+GyFVgd4 連投すみません
188案は value が long型だとして、値が負数のとき正しい結果にならないことがあります
ごめんなさい
188案は value が long型だとして、値が負数のとき正しい結果にならないことがあります
ごめんなさい
192デフォルトの名無しさん
2021/01/13(水) 17:32:20.96ID:Mb95xbD5193デフォルトの名無しさん
2021/01/13(水) 17:50:48.61ID:+yZZ5ziS Windows10、Access365です。
Excelファイル上のデータに対して、ADOでアクセスして、データを取り込んでいるのですが、時間がかかります。
時間を短縮する方法はないでしょうか。
データは1ヶ月分9万件程度ですが、Accessのテーブルに取り込むのに、7分程度かかります。
テーブルのレコードの追加は、データ1件1件に対して、ADOのAddNewメソッド、Updateメソッドで追加しています。
試しに手動でAccessのインポート機能を使用して1ヶ月分のデータを取り込んでみたのですが、時間はかからなかったのですが、F20、F21など、空白の列まで要求されました。
そのためこの手段はあまり良くないと思っています。
レコードセットを一気にInsertする方法とかないでしょうか。
よろしくお願いします。
Excelファイル上のデータに対して、ADOでアクセスして、データを取り込んでいるのですが、時間がかかります。
時間を短縮する方法はないでしょうか。
データは1ヶ月分9万件程度ですが、Accessのテーブルに取り込むのに、7分程度かかります。
テーブルのレコードの追加は、データ1件1件に対して、ADOのAddNewメソッド、Updateメソッドで追加しています。
試しに手動でAccessのインポート機能を使用して1ヶ月分のデータを取り込んでみたのですが、時間はかからなかったのですが、F20、F21など、空白の列まで要求されました。
そのためこの手段はあまり良くないと思っています。
レコードセットを一気にInsertする方法とかないでしょうか。
よろしくお願いします。
194デフォルトの名無しさん
2021/01/14(木) 01:33:57.64ID:yNTWs1ET 一件一件Updateするんじゃなくて、UpdateBatchでバッチ更新してみるとか
195デフォルトの名無しさん
2021/01/14(木) 01:41:15.38ID:yNTWs1ET196デフォルトの名無しさん
2021/01/14(木) 03:34:32.57ID:eeXKDacn >>193
レコードセットで要求の動作はできないと思われます
以下はレコードセットを使わない方法になります
前提として
・現在取込時にレコードセットを編集していない
・SQL が書ける
INSERT 文で
・「IN 句」に Excel ファイルを指定
・追加先テーブルに Access テーブルを指定
これでインポートと同等のパフォーマンスになると思います
詳細は MS のリファレンスを参照
https://docs.microsoft.com/ja-jp/office/vba/access/concepts/miscellaneous/in-clause-microsoft-access-sql
今(.xlsx)だと EXCEL 12.0 になります
レコードセットで要求の動作はできないと思われます
以下はレコードセットを使わない方法になります
前提として
・現在取込時にレコードセットを編集していない
・SQL が書ける
INSERT 文で
・「IN 句」に Excel ファイルを指定
・追加先テーブルに Access テーブルを指定
これでインポートと同等のパフォーマンスになると思います
詳細は MS のリファレンスを参照
https://docs.microsoft.com/ja-jp/office/vba/access/concepts/miscellaneous/in-clause-microsoft-access-sql
今(.xlsx)だと EXCEL 12.0 になります
197デフォルトの名無しさん
2021/01/14(木) 05:18:36.84ID:ecyWCD0F 知恵袋はあてにならんくて
198デフォルトの名無しさん
2021/01/14(木) 12:53:46.92ID:kpvbRWbL >>196
ありがとうございます
試しに1行をInsertしてみたところ、3分程度で処理できました。
ただ、.AddNewの方も、同じデータで3分-7分のくらいで処理できたので、思ったよりも処理速度は改善しませんでした。
あと、Nullだけのレコードが入ってしまうことも難点でした。
取り込みたいデータを取り込めたのと、列が30列くらいあり書き換えに時間がかかるので、一旦は今のままでいこうと思います。
ただ、今後も同じようなデータの取り込みがありそうです。
他に効率的なデータ入れ込み方法がありましたら、お教えいただけると幸いです。
ありがとうございます
試しに1行をInsertしてみたところ、3分程度で処理できました。
ただ、.AddNewの方も、同じデータで3分-7分のくらいで処理できたので、思ったよりも処理速度は改善しませんでした。
あと、Nullだけのレコードが入ってしまうことも難点でした。
取り込みたいデータを取り込めたのと、列が30列くらいあり書き換えに時間がかかるので、一旦は今のままでいこうと思います。
ただ、今後も同じようなデータの取り込みがありそうです。
他に効率的なデータ入れ込み方法がありましたら、お教えいただけると幸いです。
199デフォルトの名無しさん
2021/01/14(木) 16:43:18.02ID:eeXKDacn >>198
ループ中の AddNew を SQL の INSERT に置き換えたのでしょうか?
インポート対象(9万件程度)を1度の INSERT で行います
Null レコードは Where で除外可能かと思います
現実的なのは SQL 直発行かインポート機能の2択かと思います
インポート機能も定義を固めれば使い物になります
効率というのは人によって変わります
普段からコードに触れている人なら VBA からの SQL 発行が効率的
コードは書かないが Access を使い慣れている人ならインポート機能やクエリ定義が効率的
両者の方法とも取り込み実行時間はほぼ同じです
ループ中の AddNew を SQL の INSERT に置き換えたのでしょうか?
インポート対象(9万件程度)を1度の INSERT で行います
Null レコードは Where で除外可能かと思います
現実的なのは SQL 直発行かインポート機能の2択かと思います
インポート機能も定義を固めれば使い物になります
効率というのは人によって変わります
普段からコードに触れている人なら VBA からの SQL 発行が効率的
コードは書かないが Access を使い慣れている人ならインポート機能やクエリ定義が効率的
両者の方法とも取り込み実行時間はほぼ同じです
200デフォルトの名無しさん
2021/01/14(木) 18:14:16.61ID:EmIfgllR >199
いえ、INSERT SELECTからの列指定をして一気に入れ込みました。実験的に1列のみを。
インポート機能とSQLでの処理は速度が違う気がするのですが本当でしょうか?
テーブルへの書き込み方が根本的に異なるような気がします。
DoCmd.TransferSpreadsheet はぜひ使えるようになっておきたいですね。
エラーがよくわからないので今まで使っていませんでした。
いえ、INSERT SELECTからの列指定をして一気に入れ込みました。実験的に1列のみを。
インポート機能とSQLでの処理は速度が違う気がするのですが本当でしょうか?
テーブルへの書き込み方が根本的に異なるような気がします。
DoCmd.TransferSpreadsheet はぜひ使えるようになっておきたいですね。
エラーがよくわからないので今まで使っていませんでした。
201デフォルトの名無しさん
2021/01/14(木) 21:01:21.37ID:yNTWs1ET202デフォルトの名無しさん
2021/01/14(木) 23:19:32.20ID:KOTB1sbE >>201
ありがとうございます
参考にしながらやってみます。
https://www.google.co.jp/amp/s/foolexp.wordpress.com/2011/11/07/%25E5%2588%2587%25E6%2596%25AD%25E3%2581%2597%25E3%2581%259F%25E3%2583%25AC%25E3%2582%25B3%25E3%2583%25BC%25E3%2583%2589%25E3%2582%25BB%25E3%2583%2583%25E3%2583%2588%25E3%2581%25A8%25E3%2583%2590%25E3%2583%2583%25E3%2583%2581%25E6%259B%25B4%25E6%2596%25B0%25E3%2583%25A2%25E3%2583%25BC%25E3%2583%2589/amp/
https://docs.microsoft.com/ja-jp/sql/ado/guide/data/sending-the-updates-updatebatch-method?view=sql-server-ver15
あと、トランザクションの以下のコードですが、参考にしようと思うのですがこれは全体で1トランザクションになっていますか?
https://excel-excel.com/tips/vba_299.html
ありがとうございます
参考にしながらやってみます。
https://www.google.co.jp/amp/s/foolexp.wordpress.com/2011/11/07/%25E5%2588%2587%25E6%2596%25AD%25E3%2581%2597%25E3%2581%259F%25E3%2583%25AC%25E3%2582%25B3%25E3%2583%25BC%25E3%2583%2589%25E3%2582%25BB%25E3%2583%2583%25E3%2583%2588%25E3%2581%25A8%25E3%2583%2590%25E3%2583%2583%25E3%2583%2581%25E6%259B%25B4%25E6%2596%25B0%25E3%2583%25A2%25E3%2583%25BC%25E3%2583%2589/amp/
https://docs.microsoft.com/ja-jp/sql/ado/guide/data/sending-the-updates-updatebatch-method?view=sql-server-ver15
あと、トランザクションの以下のコードですが、参考にしようと思うのですがこれは全体で1トランザクションになっていますか?
https://excel-excel.com/tips/vba_299.html
203デフォルトの名無しさん
2021/01/15(金) 12:06:52.83ID:Z+pTsb/B204デフォルトの名無しさん
2021/01/16(土) 21:45:45.19ID:wM/4uvwh >>161
資格をモチベにしてる
資格をモチベにしてる
205デフォルトの名無しさん
2021/01/26(火) 12:20:07.19ID:pY3ojVqI ウチの社内の情報システムの制限でwindowsカメラアプリが制限されてるんだけど、VBAで無理矢理動かせないだろうか、、、
いろいろ検索してみても古い情報しかなくて、、
64bit版でも出来るようなプログラムの見本とか有れば助かる。
いろいろ検索してみても古い情報しかなくて、、
64bit版でも出来るようなプログラムの見本とか有れば助かる。
206デフォルトの名無しさん
2021/01/26(火) 12:31:00.16ID:bIVSUY/u そんな事してバレたら懲戒処分にならない?
207デフォルトの名無しさん
2021/01/26(火) 21:32:09.76ID:0moyOenU >>206
少し言い方が悪かったかな。
端末でWEB会議してるから、カメラを使うのは問題無いんだけど、静止画を撮るソフトが入っていないもんで、静止画を撮ってDBと紐づけたいってなると、できなくて。
小規模グループでAccess使ってるから、システムに相談しても本気でかけあってくれなくて、、
それだったらVBAでどうにかならないかと思って。
少し言い方が悪かったかな。
端末でWEB会議してるから、カメラを使うのは問題無いんだけど、静止画を撮るソフトが入っていないもんで、静止画を撮ってDBと紐づけたいってなると、できなくて。
小規模グループでAccess使ってるから、システムに相談しても本気でかけあってくれなくて、、
それだったらVBAでどうにかならないかと思って。
208デフォルトの名無しさん
2021/01/26(火) 22:49:05.99ID:5iMVHv+0 >>207
より悪いんだけど
より悪いんだけど
209204
2021/01/27(水) 17:26:57.82ID:Nmg5vWMl スタンダード受かった(^ω^)v
210デフォルトの名無しさん
2021/01/29(金) 13:44:54.10ID:Xkyf+iIu211デフォルトの名無しさん
2021/01/29(金) 16:32:16.97ID:SG5MocSx212デフォルトの名無しさん
2021/01/31(日) 10:42:42.16ID:/4jghnKY VB自体マイナーよりなのがね。。。
参考書の著者は名のある人(武藤玄さん?)だから安心でしょ
参考書の著者は名のある人(武藤玄さん?)だから安心でしょ
213デフォルトの名無しさん
2021/02/01(月) 19:30:44.14ID:JChayj2G 「課題テーブル」 の項目「ファイル:添付ファイル型(拡張子は.xlsx)」をSQLで取得して(1)、
そのファイル名を変更して保存(2)しようと思っています。
(2)の処理は問題ないのですが、肝心な(1)の処理が分かりません
SQLだと以下のような感じかと思うですが、これだと、「ファイル」の名称も取得すらできないようです。
なにかしらヒントをいただけないでしょうか。
検索にヒットするようなキーワードでもかまいません。
よろしくお願いいたします。
"SELECT ファイル FROM 課題テーブル where ID = 1" (件数は1件)
そのファイル名を変更して保存(2)しようと思っています。
(2)の処理は問題ないのですが、肝心な(1)の処理が分かりません
SQLだと以下のような感じかと思うですが、これだと、「ファイル」の名称も取得すらできないようです。
なにかしらヒントをいただけないでしょうか。
検索にヒットするようなキーワードでもかまいません。
よろしくお願いいたします。
"SELECT ファイル FROM 課題テーブル where ID = 1" (件数は1件)
214デフォルトの名無しさん
2021/02/01(月) 20:47:30.12ID:g0s2XOHS ファイルを取り出したいのか、ファイル名を変えたいだけなのか、何がしたいのかがわからない。
215デフォルトの名無しさん
2021/02/01(月) 20:48:57.97ID:g0s2XOHS ファイルをSELECTするとファイルが出てくるというのは奇妙な発想だな
216デフォルトの名無しさん
2021/02/01(月) 20:52:05.66ID:1CLvOTQ1217デフォルトの名無しさん
2021/02/01(月) 20:58:59.00ID:90ziZ1xl エクセルファイルはAccessには入ってないだろ
フォルダから取り出すのか?
フォルダから取り出すのか?
218デフォルトの名無しさん
2021/02/01(月) 20:59:30.52ID:90ziZ1xl 何がしたいのかマジで分からんw
219デフォルトの名無しさん
2021/02/01(月) 20:59:46.61ID:1CLvOTQ1 Accessのテーブルの添付ファイル型の項目に入っている
220デフォルトの名無しさん
2021/02/01(月) 21:01:37.65ID:90ziZ1xl そのアドレスをエクセルで開いてリネーム保存すればいいじゃん
221デフォルトの名無しさん
2021/02/01(月) 21:03:39.26ID:90ziZ1xl Dim MyExcel As New Excel.Application
とか使って
とか使って
222デフォルトの名無しさん
2021/02/01(月) 21:12:34.68ID:1CLvOTQ1223デフォルトの名無しさん
2021/02/01(月) 21:22:03.72ID:1CLvOTQ1 ファイルをディスクのどこかに保存するのは、SaveToFile メソッドですかね?
なんか使えそうに思うけどいかがですか?
なんか使えそうに思うけどいかがですか?
224デフォルトの名無しさん
2021/02/01(月) 21:43:47.01ID:FgW8bRhe そんな新しいAccessなんて持ってないから知らん
225デフォルトの名無しさん
2021/02/01(月) 21:44:43.65ID:90ziZ1xl https://oshiete.goo.ne.jp/qa/8167605.html
添付ファイル型はレコードセットになっていて
その中のフィールドのひとつ(3つ目。つまりF(2))がファイルネームになっていて、
それを取得する。らしい。
添付ファイル型はレコードセットになっていて
その中のフィールドのひとつ(3つ目。つまりF(2))がファイルネームになっていて、
それを取得する。らしい。
226デフォルトの名無しさん
2021/02/01(月) 21:45:48.50ID:90ziZ1xl >>223
普通にSaveAsじゃあかんの?
普通にSaveAsじゃあかんの?
227デフォルトの名無しさん
2021/02/01(月) 21:48:22.88ID:c76bdQcs ありがとうございます。
少しヒントが得られたかも。
明日試してみます。
少しヒントが得られたかも。
明日試してみます。
228213
2021/02/02(火) 11:31:56.15ID:UTRQGX0/ 添付ファイル型データのデータとファイル名取得が出来たので
参考に記載します。ありがとうございました。
http://www.proton.jp/main/windows/access-vba.html
(参考URL)添付ファイル型フィールドのファイルを開くには
コーディング抜粋
----------------------------------------------------------------
Dim SQL, fileName As String
Dim DB As DAO.Database
Dim RS,RS2 As DAO.Recordset
Set DB = CurrentDb
'なお、下記「フアイル」は「.xlsx」形式のデータ
SQL = "SELECT ファイル FROM テストテーブル where ID = 1 ; "
Set RS = DB.OpenRecordset(SQL)
'「ファイル」データ取得
Set RS2 = RS.Fields(0).Value
'「ファイル」データファイル名称取得
fileName = RS2.Fields("FileName").Value
------------------------------------------------------------------------------------
参考に記載します。ありがとうございました。
http://www.proton.jp/main/windows/access-vba.html
(参考URL)添付ファイル型フィールドのファイルを開くには
コーディング抜粋
----------------------------------------------------------------
Dim SQL, fileName As String
Dim DB As DAO.Database
Dim RS,RS2 As DAO.Recordset
Set DB = CurrentDb
'なお、下記「フアイル」は「.xlsx」形式のデータ
SQL = "SELECT ファイル FROM テストテーブル where ID = 1 ; "
Set RS = DB.OpenRecordset(SQL)
'「ファイル」データ取得
Set RS2 = RS.Fields(0).Value
'「ファイル」データファイル名称取得
fileName = RS2.Fields("FileName").Value
------------------------------------------------------------------------------------
229デフォルトの名無しさん
2021/02/02(火) 14:27:49.60ID:CQc47MX2 それ、SQLとRSは無駄にVariantになってないか?
230デフォルトの名無しさん
2021/02/04(木) 15:46:42.10ID:QbGo6q9b OLEオブジェクト型はどうやってSQL(select 文)で抽出するの?
231デフォルトの名無しさん
2021/02/04(木) 20:11:15.64ID:XRB3PpKu select文は普通に列名とテーブル指定するだけじゃないのか?
そっからどうやってデータ取得するかはどうやってDBアクセスしてるかによるんじゃね
とりあえずDAOかADOかとバージョンぐらい書け
そっからどうやってデータ取得するかはどうやってDBアクセスしてるかによるんじゃね
とりあえずDAOかADOかとバージョンぐらい書け
232デフォルトの名無しさん
2021/02/04(木) 20:23:44.53ID:w6PAg1HV >>228
ファイルを取得したいと言っていたのに、ファイル内のデータでよかったのか?
ファイルを取得したいと言っていたのに、ファイル内のデータでよかったのか?
233デフォルトの名無しさん
2021/02/05(金) 00:26:34.08ID:OHtcWSU6 VBSでmdbに接続してaddnewしてupdateするだけの簡単なスクリプトの挙動がおかしい。
sub や Functionにして callすると成功するくせに、subじゃなくて素のスクリプトだと何もしない。
ちなみに読込みはどっちでも成功する。
なぜ、addnewのときだけ、プロシジャーである必要があるのだろうか?
sub や Functionにして callすると成功するくせに、subじゃなくて素のスクリプトだと何もしない。
ちなみに読込みはどっちでも成功する。
なぜ、addnewのときだけ、プロシジャーである必要があるのだろうか?
234デフォルトの名無しさん
2021/02/05(金) 00:34:27.19ID:OHtcWSU6 vbseditがおかしいらしい。
適当なディレクトリに保存して実行したら素のスクリプトでも成功した。
わけわらん。
適当なディレクトリに保存して実行したら素のスクリプトでも成功した。
わけわらん。
235230
2021/02/05(金) 10:13:06.16ID:s99X7duh SELECT文でOLE型のファイル(拡張子.docx)を読み込んで保存しようとしています。
処理を行ったところ、「ファイル『temp.xls』は内容に問題があるため、開けませんでした。」という
メッセージが出ますが、「開いて修復」すれば元のファイルと同じに見えるので
SELECT文で項目だして、書き出すまである程度できているようなんですが、
どこがおかしいのでしょうか、ご意見をいただけたら幸いです。
参考サイト
https://www.moug.net/tech/acvba/0080032.html
画像を読み込む(GetChunkメソッド)
ソース一部抜粋
'OLE型用変数
Dim bytFile() As Byte
Dim nFileNo As Integer
Dim nSize As Long
Dim olename As String
Set DB = CurrentDb
'項目「OLE型データテスト」抽出のSELECT文の実行
Set rs = DB.OpenRecordset(sqlText)
nSize = rs.Fields("OLE型データテスト").FieldSize
bytFile() = rs.Fields("OLE型データテスト").GetChunk(0, nSize)
nFileNo = FreeFile
Open "C:\Users\testuser\Documents\test.docx" For Binary As #nFileNo
Put #nFileNo, , bytImage()
Close #nFileNo
処理を行ったところ、「ファイル『temp.xls』は内容に問題があるため、開けませんでした。」という
メッセージが出ますが、「開いて修復」すれば元のファイルと同じに見えるので
SELECT文で項目だして、書き出すまである程度できているようなんですが、
どこがおかしいのでしょうか、ご意見をいただけたら幸いです。
参考サイト
https://www.moug.net/tech/acvba/0080032.html
画像を読み込む(GetChunkメソッド)
ソース一部抜粋
'OLE型用変数
Dim bytFile() As Byte
Dim nFileNo As Integer
Dim nSize As Long
Dim olename As String
Set DB = CurrentDb
'項目「OLE型データテスト」抽出のSELECT文の実行
Set rs = DB.OpenRecordset(sqlText)
nSize = rs.Fields("OLE型データテスト").FieldSize
bytFile() = rs.Fields("OLE型データテスト").GetChunk(0, nSize)
nFileNo = FreeFile
Open "C:\Users\testuser\Documents\test.docx" For Binary As #nFileNo
Put #nFileNo, , bytImage()
Close #nFileNo
236デフォルトの名無しさん
2021/02/05(金) 13:09:23.30ID:7kBPI4G7 VBS って、まだシステムで使えるのか?
保守されてる?
保守されてる?
237デフォルトの名無しさん
2021/02/06(土) 11:30:21.47ID:PohEB++t bytImage() の中身は docx に直接上書き保存できるものなのか?
238デフォルトの名無しさん
2021/02/07(日) 12:21:08.72ID:EDRo6Y49 >>236
Windows 10そのものがまだ使っています。
Windows 10そのものがまだ使っています。
239デフォルトの名無しさん
2021/02/26(金) 20:55:30.10ID:BHdQltm/ AccessからOracleに接続して、テーブル定義を取得しようとした場合、Currentdbにリンクテーブル作成してtabledefで取得するしかないですかね?
240デフォルトの名無しさん
2021/02/26(金) 23:30:20.77ID:aSS4VuLP241デフォルトの名無しさん
2021/02/26(金) 23:38:57.64ID:JyNwBwDQ242デフォルトの名無しさん
2021/02/27(土) 00:39:35.09ID:lzDnqtNz 一応言っとくが、あわしろ氏は権威だぞ。
243デフォルトの名無しさん
2021/02/27(土) 03:37:26.48ID:oWYDZ6ol >>241
だからお前みたいな馬鹿には無理ってだけだ
だからお前みたいな馬鹿には無理ってだけだ
244デフォルトの名無しさん
2021/02/27(土) 09:00:35.16ID:kkUl7IkZ わからないんだろ?
教えられないのに質問スレでマウント取って
かっこいいね!
教えられないのに質問スレでマウント取って
かっこいいね!
245デフォルトの名無しさん
2021/02/27(土) 13:52:55.39ID:oWYDZ6ol 馬鹿が聞き出そうとして必死だな
元の質問が、
「しかないですかね?」
だから、
「他にある。馬鹿にはわからないだけ」
これで完結
元の質問が、
「しかないですかね?」
だから、
「他にある。馬鹿にはわからないだけ」
これで完結
246デフォルトの名無しさん
2021/03/12(金) 04:20:10.68ID:U5Mc6cIw クライアントPC複数台にコピーしてあるaccdbの更新を自動化したいのですが、上手い方法が有ったらアドバイス下さい。
今は、終了時に更新版があればコピー専用のaccdbを開く、という方法です。
時々コピーに失敗したり、更新後の起動が出来なかったり、なんかスマートに出来ません。
今は、終了時に更新版があればコピー専用のaccdbを開く、という方法です。
時々コピーに失敗したり、更新後の起動が出来なかったり、なんかスマートに出来ません。
247デフォルトの名無しさん
2021/03/12(金) 07:03:59.49ID:bg4PRHHU それぞれのPCに共有サーバーでクライアント各々に1つのものを使ってもらえば?
248デフォルトの名無しさん
2021/03/12(金) 07:47:36.33ID:vZYfq0zb え?
249デフォルトの名無しさん
2021/03/12(金) 15:03:23.20ID:6lWZMdzy >>247 コメントありがとうございます。
共有フォルダに置いたテーブルだけのバックエンドや、データベースサーバーにテーブルがあり、フロントエンドにリンクして使ってます。
各クライアントのフロントエンドを更新したいのです。
フロントエンドを共有フォルダに置いて皆んなで使うと壊れやすい、50台のクライアント全て閉じてもらわないと更新できないなどの問題があり、現在のかたちで運用しています。
共有フォルダに置いたテーブルだけのバックエンドや、データベースサーバーにテーブルがあり、フロントエンドにリンクして使ってます。
各クライアントのフロントエンドを更新したいのです。
フロントエンドを共有フォルダに置いて皆んなで使うと壊れやすい、50台のクライアント全て閉じてもらわないと更新できないなどの問題があり、現在のかたちで運用しています。
250デフォルトの名無しさん
2021/03/12(金) 16:26:24.53ID:ZUwUvURf 基本的には別ブログラム(Accessでなくてもいい)で上書きしてもらうしかないけど
タスクに登録して再起動してもらうとか
さがせばそれ用のツールとかありそうだけどな
タスクに登録して再起動してもらうとか
さがせばそれ用のツールとかありそうだけどな
251デフォルトの名無しさん
2021/03/12(金) 18:43:58.19ID:6lWZMdzy252デフォルトの名無しさん
2021/03/17(水) 08:24:13.18ID:o9MkZCaQ 他フォームや親フォームのコマンドを実行する時,
Call Forms!フォーム名.ボタン_Click
だと動かないのに,
With Forms!フォーム名
.ボタン_Click
End With
にすると動くのは私だけ?
Call Forms!フォーム名.ボタン_Click
だと動かないのに,
With Forms!フォーム名
.ボタン_Click
End With
にすると動くのは私だけ?
253デフォルトの名無しさん
2021/03/17(水) 08:27:13.40ID:o9MkZCaQ まちがった.
254デフォルトの名無しさん
2021/03/17(水) 08:27:40.08ID:o9MkZCaQ With Froms!フォーム名
255デフォルトの名無しさん
2021/03/17(水) 08:31:05.18ID:o9MkZCaQ スレ汚しすみません、やり直し。
他フォームや親フォームのコマンドを実行する時,
Call Forms!フォーム名.ボタン_Click
だと動かないのに,
With Forms!フォーム名
Call .ボタン_Click
End With
にすると動くのは私だけ?
他フォームや親フォームのコマンドを実行する時,
Call Forms!フォーム名.ボタン_Click
だと動かないのに,
With Forms!フォーム名
Call .ボタン_Click
End With
にすると動くのは私だけ?
256デフォルトの名無しさん
2021/03/23(火) 22:25:21.29ID:OYDSqGqD レポートのテキストボックスが関数を呼び出すことがあるんだけど、それを検索する方法はないですかね?
VBEをいくら検索しても、ある特定のFunctionをCallしているのがなんなのかさっぱりわからなくて途方に暮れた後にレポートのテキストボックスと気づいたときの疲労感は凄かった。
スマートに一発検索する方法ありますか?
VBEをいくら検索しても、ある特定のFunctionをCallしているのがなんなのかさっぱりわからなくて途方に暮れた後にレポートのテキストボックスと気づいたときの疲労感は凄かった。
スマートに一発検索する方法ありますか?
257256
2021/03/24(水) 19:23:21.05ID:Oy88L6kY どうも、ないようなので、for eachループを回して全部テキストにしました。
レポートの全部のコントロールを書き出したら24MBになりました。
コントロールから直接Callするのはお行儀が良くないですね。
レポートの全部のコントロールを書き出したら24MBになりました。
コントロールから直接Callするのはお行儀が良くないですね。
258デフォルトの名無しさん
2021/03/24(水) 19:53:42.42ID:Oy88L6kY DoCmd.PrintOut
同じコードなのに、一方ではちゃんと複数枚印刷して、もう一方では常に1枚しか印刷できない。
ググると似たトラブルが見つかる。バグなんだろうか?ご存じの方いますか?
同じコードなのに、一方ではちゃんと複数枚印刷して、もう一方では常に1枚しか印刷できない。
ググると似たトラブルが見つかる。バグなんだろうか?ご存じの方いますか?
259デフォルトの名無しさん
2021/03/25(木) 18:29:57.87ID:25o3kYjY Access365 Windows10です。
Excel上からVBAでDAOにてAccessのクエリのレコードセットを取得しています。
Access上のクエリで表示されるレコード数と、Excel VBA DAOから取得したクエリのレコードセットのレコードの数が異なり、原因がわかりません。
それぞれのレコード一覧を出力してみると、あるフィールド(IIf(・・・,”対象外”, “督促対象”)としている部分) の値が、Access上のクエリでは「対象外」、Excelから取得したレコードセットでは「督促対象」となっているため、抽出条件が誤認識されてレコード数が異なることに気がつきました。
クエリの他の抽出条件にワイルドカード等を使っていないと思います。
クエリをDAOで取得した場合に、違いが生まれる原因を推測できる方はいらっしゃいませんでしょうか? 回避策があればお教えいただけると助かります。
Excel上からVBAでDAOにてAccessのクエリのレコードセットを取得しています。
Access上のクエリで表示されるレコード数と、Excel VBA DAOから取得したクエリのレコードセットのレコードの数が異なり、原因がわかりません。
それぞれのレコード一覧を出力してみると、あるフィールド(IIf(・・・,”対象外”, “督促対象”)としている部分) の値が、Access上のクエリでは「対象外」、Excelから取得したレコードセットでは「督促対象」となっているため、抽出条件が誤認識されてレコード数が異なることに気がつきました。
クエリの他の抽出条件にワイルドカード等を使っていないと思います。
クエリをDAOで取得した場合に、違いが生まれる原因を推測できる方はいらっしゃいませんでしょうか? 回避策があればお教えいただけると助かります。
260デフォルトの名無しさん
2021/03/26(金) 12:11:20.45ID:x01Nq0VC >>259
Accessのテーブルを、Excelからのリンクテーブルにしているものがあるのですが、クエリを開いている状態で、ExcelからDAOでレコードセットを取得すると、テーブルにしているExcelファイルが自動で開かれます。
その状態で取得したレコードセットの内容がおかしいことに気がつきました。
なぜレコードセットの値が異なるのかは、不明なのですが、テーブルにしているブックが開かれているとエラーを出力するようにして、回避しました。
Accessのテーブルを、Excelからのリンクテーブルにしているものがあるのですが、クエリを開いている状態で、ExcelからDAOでレコードセットを取得すると、テーブルにしているExcelファイルが自動で開かれます。
その状態で取得したレコードセットの内容がおかしいことに気がつきました。
なぜレコードセットの値が異なるのかは、不明なのですが、テーブルにしているブックが開かれているとエラーを出力するようにして、回避しました。
261デフォルトの名無しさん
2021/03/26(金) 12:30:39.51ID:9TlDuTMy わからん すまん
262デフォルトの名無しさん
2021/04/04(日) 17:14:14.07ID:gjYxCKFw 基本的なことで申し訳ないんだけど
https://www.helpforest.com/access/amv_vba/ac080004.htm
に書いてある開いてるファイルのバックアップとるコードで
strNameCopy = Left(strNameMoto, Len(strNameMoto) - 6) & "_" & Format(Now, "yymmdd") & ".accdb"
ってのがあるんですが Left(strNameMoto, Len(strNameMoto) - 6) の意味がわかりません。なぜ -6 なんでしょうか?
それと、
Format(Now, "yymmdd") だと 210404 になりますが”yy_mmdd_hhmm” としました
ここを 21_0404_17h15m とするにはどうしたらいいですか?
hやmの入れ方がわかりません
https://www.helpforest.com/access/amv_vba/ac080004.htm
に書いてある開いてるファイルのバックアップとるコードで
strNameCopy = Left(strNameMoto, Len(strNameMoto) - 6) & "_" & Format(Now, "yymmdd") & ".accdb"
ってのがあるんですが Left(strNameMoto, Len(strNameMoto) - 6) の意味がわかりません。なぜ -6 なんでしょうか?
それと、
Format(Now, "yymmdd") だと 210404 になりますが”yy_mmdd_hhmm” としました
ここを 21_0404_17h15m とするにはどうしたらいいですか?
hやmの入れ方がわかりません
263デフォルトの名無しさん
2021/04/04(日) 17:38:22.47ID:26lFIPnO メッセージボックスは自動で閉じないしWSHもmessageboxtimeoutAもうまくできませんでした
通知の代わりに小さいフォームを0.5秒ほど表示させて閉じたいのですが、どのように記述したらいいですか?
通知の代わりに小さいフォームを0.5秒ほど表示させて閉じたいのですが、どのように記述したらいいですか?
264デフォルトの名無しさん
2021/04/04(日) 21:11:55.53ID:3M5QmD23265デフォルトの名無しさん
2021/04/04(日) 21:24:13.07ID:3M5QmD23266デフォルトの名無しさん
2021/04/04(日) 22:50:03.97ID:gjYxCKFw >>265
開くのはどうするんですか?
開くのはどうするんですか?
267デフォルトの名無しさん
2021/04/04(日) 22:50:34.96ID:gjYxCKFw ああこれで開いて閉じるのか
268デフォルトの名無しさん
2021/04/04(日) 22:56:05.15ID:gjYxCKFw269デフォルトの名無しさん
2021/04/07(水) 00:28:19.15ID:rJDYR4sC レポートの詳細の一番下に線引くのってどうやるの?
フィールドや仕切り線だと線の真ん中が指定位置にくるようで、線の太さ分はみ出てしまう
フィールドや仕切り線だと線の真ん中が指定位置にくるようで、線の太さ分はみ出てしまう
270デフォルトの名無しさん
2021/04/07(水) 05:48:31.03ID:Vznju2ao 詳細の最終行終わりにだけ線を引く方法が有るのか、知らんかった。
私はグループフッタの上に線を配置します。
私はグループフッタの上に線を配置します。
271デフォルトの名無しさん
2021/04/07(水) 12:38:41.43ID:RzHskyO4 >>269
VBAでEOFでVisible=trueにする
VBAでEOFでVisible=trueにする
272デフォルトの名無しさん
2021/04/07(水) 15:58:13.17ID:rJDYR4sC273デフォルトの名無しさん
2021/04/07(水) 16:12:27.97ID:bHi8pMA7レスを投稿する
ニュース
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 石井ちゃんです!
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 今から北海道行く
- お前らは“スカイマイルタワー”建設計画を知っているか?
- これ誰か分かるか?
- エプシュタインファイルの公開、決定 [805596214]
