Access VBA 質問スレ Part2 (788レス)
1-

181: 2020/11/26(木)22:16 ID:jD11+CM5(1) AAS
>>180
これか、ありがとう。
だとしたらupdateメソッド要らなくね?よく分からんが。
182
(1): 2020/11/27(金)16:20 ID:j3fR6c+j(1) AAS
レコード移動しないけど変更を保存したいときに必要だろう
183: 2020/11/29(日)20:06 ID:k+jvWZ30(1) AAS
>>182
それはそうね
184: 2021/01/11(月)16:27 ID:HFGgd7VU(1) AAS
ACCESSのSQLでビット比較ってどうすればいいですか
(value & 0x10) == 0x10 みたいに特定のビットが立ってるか比較したいのですが
185
(6): 2021/01/11(月)17:56 ID:qzYYjSUA(1) AAS
できるかわかりませんが、
(value and &H10) = &H10
だとダメですか?
186: 2021/01/12(火)19:10 ID:f1Ulh51r(1/2) AAS
>>185
試してみます、ありがとうございます
187
(1): 2021/01/12(火)19:16 ID:f1Ulh51r(2/2) AAS
ダメでした
andを&に変えてもダメでした
188
(1): 185 2021/01/12(火)19:30 ID:sGnBc5NV(1/3) AAS
そっか、SQLのAND演算子になっちゃうのか… &も文字列の結合演算子とみなされちゃうのかな?

&H10のビット限定なら、
(value \ 16) MOD 2
でいけそうですが、他にもパターンがあるでしょうから…
189
(1): 185 2021/01/12(火)19:34 ID:sGnBc5NV(2/3) AAS
何より分かりにくいですねw
整数除算(\)で該当のビット位置を一番右にずらして、MODでそのビットを取り出します
190
(1): 185 2021/01/12(火)19:49 ID:sGnBc5NV(3/3) AAS
16 じゃなくて &H10 と書く方が取り出すビットと一緒で分かりやすいですね(うまくゆくかはわかりませんが)

(value \ &H10) MOD 2
191
(1): 185 2021/01/13(水)02:15 ID:+GyFVgd4(1) AAS
連投すみません
188案は value が long型だとして、値が負数のとき正しい結果にならないことがあります
ごめんなさい
192: 2021/01/13(水)17:32 ID:Mb95xbD5(1) AAS
>>188-191
親切にありがとうございます。
\とか使えるのは知りませんでした。
試してみます
193
(1): 2021/01/13(水)17:50 ID:+yZZ5ziS(1) AAS
Windows10、Access365です。

Excelファイル上のデータに対して、ADOでアクセスして、データを取り込んでいるのですが、時間がかかります。
時間を短縮する方法はないでしょうか。

データは1ヶ月分9万件程度ですが、Accessのテーブルに取り込むのに、7分程度かかります。

テーブルのレコードの追加は、データ1件1件に対して、ADOのAddNewメソッド、Updateメソッドで追加しています。

試しに手動でAccessのインポート機能を使用して1ヶ月分のデータを取り込んでみたのですが、時間はかからなかったのですが、F20、F21など、空白の列まで要求されました。
そのためこの手段はあまり良くないと思っています。
省2
194: 2021/01/14(木)01:33 ID:yNTWs1ET(1/3) AAS
一件一件Updateするんじゃなくて、UpdateBatchでバッチ更新してみるとか
195: 2021/01/14(木)01:41 ID:yNTWs1ET(2/3) AAS
>>187
ふつうに>>185でできるはずだけど

valueの型が数値じゃないんじゃ?
196
(1): 2021/01/14(木)03:34 ID:eeXKDacn(1/2) AAS
>>193
レコードセットで要求の動作はできないと思われます
以下はレコードセットを使わない方法になります
前提として
・現在取込時にレコードセットを編集していない
・SQL が書ける

INSERT 文で
省6
197: 2021/01/14(木)05:18 ID:ecyWCD0F(1) AAS
知恵袋はあてにならんくて
198
(1): 2021/01/14(木)12:53 ID:kpvbRWbL(1) AAS
>>196
ありがとうございます
試しに1行をInsertしてみたところ、3分程度で処理できました。
ただ、.AddNewの方も、同じデータで3分-7分のくらいで処理できたので、思ったよりも処理速度は改善しませんでした。
あと、Nullだけのレコードが入ってしまうことも難点でした。

取り込みたいデータを取り込めたのと、列が30列くらいあり書き換えに時間がかかるので、一旦は今のままでいこうと思います。

ただ、今後も同じようなデータの取り込みがありそうです。
省1
199
(2): 2021/01/14(木)16:43 ID:eeXKDacn(2/2) AAS
>>198
ループ中の AddNew を SQL の INSERT に置き換えたのでしょうか?
インポート対象(9万件程度)を1度の INSERT で行います
Null レコードは Where で除外可能かと思います

現実的なのは SQL 直発行かインポート機能の2択かと思います
インポート機能も定義を固めれば使い物になります

効率というのは人によって変わります
省3
200
(1): 2021/01/14(木)18:14 ID:EmIfgllR(1) AAS
>199
いえ、INSERT SELECTからの列指定をして一気に入れ込みました。実験的に1列のみを。

インポート機能とSQLでの処理は速度が違う気がするのですが本当でしょうか?
テーブルへの書き込み方が根本的に異なるような気がします。

DoCmd.TransferSpreadsheet はぜひ使えるようになっておきたいですね。
エラーがよくわからないので今まで使っていませんでした。
201
(2): 2021/01/14(木)21:01 ID:yNTWs1ET(3/3) AAS
>>200
全体で1トランザクションになるようにトランザクション張るか
UpdateBatchで更新するか試してみてくれ
202: 2021/01/14(木)23:19 ID:KOTB1sbE(1) AAS
>>201
ありがとうございます
参考にしながらやってみます。
外部リンク:www.google.co.jp

外部リンク:docs.microsoft.com

あと、トランザクションの以下のコードですが、参考にしようと思うのですがこれは全体で1トランザクションになっていますか?
外部リンク[html]:excel-excel.com
203: 2021/01/15(金)12:06 ID:Z+pTsb/B(1) AAS
>>199
もう一度SQLでやってみたところ、インポートと同じ時間で処理できました。
ありがとうございます

>>201
UpdateBatchでは処理時間に違いがありませんでした
レコードセットへの書き込みに時間がかかっているのかもしれません。
ありがとうございます
204
(1): 2021/01/16(土)21:45 ID:wM/4uvwh(1) AAS
>>161
資格をモチベにしてる
205: 2021/01/26(火)12:20 ID:pY3ojVqI(1) AAS
ウチの社内の情報システムの制限でwindowsカメラアプリが制限されてるんだけど、VBAで無理矢理動かせないだろうか、、、
いろいろ検索してみても古い情報しかなくて、、
64bit版でも出来るようなプログラムの見本とか有れば助かる。
206
(1): 2021/01/26(火)12:31 ID:bIVSUY/u(1) AAS
そんな事してバレたら懲戒処分にならない?
207
(1): 2021/01/26(火)21:32 ID:0moyOenU(1) AAS
>>206
少し言い方が悪かったかな。

端末でWEB会議してるから、カメラを使うのは問題無いんだけど、静止画を撮るソフトが入っていないもんで、静止画を撮ってDBと紐づけたいってなると、できなくて。
小規模グループでAccess使ってるから、システムに相談しても本気でかけあってくれなくて、、
それだったらVBAでどうにかならないかと思って。
208: 2021/01/26(火)22:49 ID:5iMVHv+0(1) AAS
>>207
より悪いんだけど
209
(1): 204 2021/01/27(水)17:26 ID:Nmg5vWMl(1) AAS
スタンダード受かった(^ω^)v
210
(1): 2021/01/29(金)13:44 ID:Xkyf+iIu(1) AAS
>>209
もめでとう!
資格は財産!
凄いなスタンダードは
211: 2021/01/29(金)16:32 ID:SG5MocSx(1) AAS
>>210
ありがとう。マイナー資格のせいか、
テキストは悪評にも関わらず他に選択肢ないし、
そのテキストもアプリもやたら高いけど、
一発合格のために全部ちゃんと買ったわー。
212: 2021/01/31(日)10:42 ID:/4jghnKY(1) AAS
VB自体マイナーよりなのがね。。。
参考書の著者は名のある人(武藤玄さん?)だから安心でしょ
213
(1): 2021/02/01(月)19:30 ID:JChayj2G(1) AAS
「課題テーブル」 の項目「ファイル:添付ファイル型(拡張子は.xlsx)」をSQLで取得して(1)、
そのファイル名を変更して保存(2)しようと思っています。
(2)の処理は問題ないのですが、肝心な(1)の処理が分かりません
SQLだと以下のような感じかと思うですが、これだと、「ファイル」の名称も取得すらできないようです。
なにかしらヒントをいただけないでしょうか。
検索にヒットするようなキーワードでもかまいません。
よろしくお願いいたします。
省1
214
(1): 2021/02/01(月)20:47 ID:g0s2XOHS(1/2) AAS
ファイルを取り出したいのか、ファイル名を変えたいだけなのか、何がしたいのかがわからない。
215: 2021/02/01(月)20:48 ID:g0s2XOHS(2/2) AAS
ファイルをSELECTするとファイルが出てくるというのは奇妙な発想だな
216: 2021/02/01(月)20:52 ID:1CLvOTQ1(1/4) AAS
>>214
ファイルを取り出したいんだけど、
SQLでなくクエリーでやるべきなの?
先日Access始めたから見様見真似。

添付ファイルを取得すれば、renameして保存するところはわかるんだけど。
217: 2021/02/01(月)20:58 ID:90ziZ1xl(1/6) AAS
エクセルファイルはAccessには入ってないだろ
フォルダから取り出すのか?
218: 2021/02/01(月)20:59 ID:90ziZ1xl(2/6) AAS
何がしたいのかマジで分からんw
219: 2021/02/01(月)20:59 ID:1CLvOTQ1(2/4) AAS
Accessのテーブルの添付ファイル型の項目に入っている
220: 2021/02/01(月)21:01 ID:90ziZ1xl(3/6) AAS
そのアドレスをエクセルで開いてリネーム保存すればいいじゃん
221
(1): 2021/02/01(月)21:03 ID:90ziZ1xl(4/6) AAS
Dim MyExcel As New Excel.Application

とか使って
222: 2021/02/01(月)21:12 ID:1CLvOTQ1(3/4) AAS
>>221
それ使ってるんですけど添付ファイル型ってchar型とかと同じように扱えれるんですかね、
よろしければもう少しヒントを。
223
(1): 2021/02/01(月)21:22 ID:1CLvOTQ1(4/4) AAS
ファイルをディスクのどこかに保存するのは、SaveToFile メソッドですかね?
なんか使えそうに思うけどいかがですか?
224: 2021/02/01(月)21:43 ID:FgW8bRhe(1) AAS
そんな新しいAccessなんて持ってないから知らん
225: 2021/02/01(月)21:44 ID:90ziZ1xl(5/6) AAS
外部リンク[html]:oshiete.goo.ne.jp

添付ファイル型はレコードセットになっていて
その中のフィールドのひとつ(3つ目。つまりF(2))がファイルネームになっていて、
それを取得する。らしい。
226: 2021/02/01(月)21:45 ID:90ziZ1xl(6/6) AAS
>>223
普通にSaveAsじゃあかんの?
227: 2021/02/01(月)21:48 ID:c76bdQcs(1) AAS
ありがとうございます。
少しヒントが得られたかも。
明日試してみます。
228
(1): 213 2021/02/02(火)11:31 ID:UTRQGX0/(1) AAS
添付ファイル型データのデータとファイル名取得が出来たので
参考に記載します。ありがとうございました。

外部リンク[html]:www.proton.jp
(参考URL)添付ファイル型フィールドのファイルを開くには

コーディング抜粋
----------------------------------------------------------------
Dim SQL, fileName As String
省11
229: 2021/02/02(火)14:27 ID:CQc47MX2(1) AAS
それ、SQLとRSは無駄にVariantになってないか?
230
(1): 2021/02/04(木)15:46 ID:QbGo6q9b(1) AAS
OLEオブジェクト型はどうやってSQL(select 文)で抽出するの?
231: 2021/02/04(木)20:11 ID:XRB3PpKu(1) AAS
select文は普通に列名とテーブル指定するだけじゃないのか?
そっからどうやってデータ取得するかはどうやってDBアクセスしてるかによるんじゃね
とりあえずDAOかADOかとバージョンぐらい書け
232: 2021/02/04(木)20:23 ID:w6PAg1HV(1) AAS
>>228
ファイルを取得したいと言っていたのに、ファイル内のデータでよかったのか?
233: 2021/02/05(金)00:26 ID:OHtcWSU6(1/2) AAS
VBSでmdbに接続してaddnewしてupdateするだけの簡単なスクリプトの挙動がおかしい。

sub や Functionにして callすると成功するくせに、subじゃなくて素のスクリプトだと何もしない。
ちなみに読込みはどっちでも成功する。
なぜ、addnewのときだけ、プロシジャーである必要があるのだろうか?
234: 2021/02/05(金)00:34 ID:OHtcWSU6(2/2) AAS
vbseditがおかしいらしい。
適当なディレクトリに保存して実行したら素のスクリプトでも成功した。
わけわらん。
235: 230 2021/02/05(金)10:13 ID:s99X7duh(1) AAS
SELECT文でOLE型のファイル(拡張子.docx)を読み込んで保存しようとしています。
処理を行ったところ、「ファイル『temp.xls』は内容に問題があるため、開けませんでした。」という
メッセージが出ますが、「開いて修復」すれば元のファイルと同じに見えるので
SELECT文で項目だして、書き出すまである程度できているようなんですが、
どこがおかしいのでしょうか、ご意見をいただけたら幸いです。

参考サイト
外部リンク[html]:www.moug.net
省16
236
(1): 2021/02/05(金)13:09 ID:7kBPI4G7(1) AAS
VBS って、まだシステムで使えるのか?

保守されてる?
237: 2021/02/06(土)11:30 ID:PohEB++t(1) AAS
bytImage() の中身は docx に直接上書き保存できるものなのか?
238: 2021/02/07(日)12:21 ID:EDRo6Y49(1) AAS
>>236
Windows 10そのものがまだ使っています。
239
(1): 2021/02/26(金)20:55 ID:BHdQltm/(1) AAS
AccessからOracleに接続して、テーブル定義を取得しようとした場合、Currentdbにリンクテーブル作成してtabledefで取得するしかないですかね?
240
(1): 2021/02/26(金)23:30 ID:aSS4VuLP(1) AAS
>>239
そんな訳ないだろ
お前の頭には無理ってだけだ
241
(1): 2021/02/26(金)23:38 ID:JyNwBwDQ(1) AAS
>>240
どうやってやっているんですか?
そんなに人に偉そうにいうくらいならお詳しいんですよね?
242: 2021/02/27(土)00:39 ID:lzDnqtNz(1) AAS
一応言っとくが、あわしろ氏は権威だぞ。
243: 2021/02/27(土)03:37 ID:oWYDZ6ol(1/2) AAS
>>241
だからお前みたいな馬鹿には無理ってだけだ
244: 2021/02/27(土)09:00 ID:kkUl7IkZ(1) AAS
わからないんだろ?
教えられないのに質問スレでマウント取って
かっこいいね!
245: 2021/02/27(土)13:52 ID:oWYDZ6ol(2/2) AAS
馬鹿が聞き出そうとして必死だな
元の質問が、
「しかないですかね?」
だから、
「他にある。馬鹿にはわからないだけ」
これで完結
246: 2021/03/12(金)04:20 ID:U5Mc6cIw(1) AAS
クライアントPC複数台にコピーしてあるaccdbの更新を自動化したいのですが、上手い方法が有ったらアドバイス下さい。
今は、終了時に更新版があればコピー専用のaccdbを開く、という方法です。
時々コピーに失敗したり、更新後の起動が出来なかったり、なんかスマートに出来ません。
247
(1): 2021/03/12(金)07:03 ID:bg4PRHHU(1) AAS
それぞれのPCに共有サーバーでクライアント各々に1つのものを使ってもらえば?
248: 2021/03/12(金)07:47 ID:vZYfq0zb(1) AAS
え?
249: 2021/03/12(金)15:03 ID:6lWZMdzy(1/2) AAS
>>247 コメントありがとうございます。

共有フォルダに置いたテーブルだけのバックエンドや、データベースサーバーにテーブルがあり、フロントエンドにリンクして使ってます。
各クライアントのフロントエンドを更新したいのです。
フロントエンドを共有フォルダに置いて皆んなで使うと壊れやすい、50台のクライアント全て閉じてもらわないと更新できないなどの問題があり、現在のかたちで運用しています。
250
(1): 2021/03/12(金)16:26 ID:ZUwUvURf(1) AAS
基本的には別ブログラム(Accessでなくてもいい)で上書きしてもらうしかないけど
タスクに登録して再起動してもらうとか

さがせばそれ用のツールとかありそうだけどな
251: 2021/03/12(金)18:43 ID:6lWZMdzy(2/2) AAS
>>250
WSHで一日一回各クライアントで実行する例があったんですが、やってる事は同じなのです。なんかスマートな方法無いのかなあ。
もう少し探してみます。お騒がせしました。
252: 2021/03/17(水)08:24 ID:o9MkZCaQ(1/4) AAS
他フォームや親フォームのコマンドを実行する時,
Call Forms!フォーム名.ボタン_Click
だと動かないのに,
With Forms!フォーム名
.ボタン_Click
End With
にすると動くのは私だけ?
253: 2021/03/17(水)08:27 ID:o9MkZCaQ(2/4) AAS
まちがった.
254: 2021/03/17(水)08:27 ID:o9MkZCaQ(3/4) AAS
With Froms!フォーム名
255: 2021/03/17(水)08:31 ID:o9MkZCaQ(4/4) AAS
スレ汚しすみません、やり直し。

他フォームや親フォームのコマンドを実行する時,
Call Forms!フォーム名.ボタン_Click
だと動かないのに,
With Forms!フォーム名
Call .ボタン_Click
End With
省1
256
(1): 2021/03/23(火)22:25 ID:OYDSqGqD(1) AAS
レポートのテキストボックスが関数を呼び出すことがあるんだけど、それを検索する方法はないですかね?
VBEをいくら検索しても、ある特定のFunctionをCallしているのがなんなのかさっぱりわからなくて途方に暮れた後にレポートのテキストボックスと気づいたときの疲労感は凄かった。
スマートに一発検索する方法ありますか?
257: 256 2021/03/24(水)19:23 ID:Oy88L6kY(1/2) AAS
どうも、ないようなので、for eachループを回して全部テキストにしました。
レポートの全部のコントロールを書き出したら24MBになりました。
コントロールから直接Callするのはお行儀が良くないですね。
258: 2021/03/24(水)19:53 ID:Oy88L6kY(2/2) AAS
DoCmd.PrintOut
同じコードなのに、一方ではちゃんと複数枚印刷して、もう一方では常に1枚しか印刷できない。
ググると似たトラブルが見つかる。バグなんだろうか?ご存じの方いますか?
259
(1): 2021/03/25(木)18:29 ID:25o3kYjY(1) AAS
Access365 Windows10です。

Excel上からVBAでDAOにてAccessのクエリのレコードセットを取得しています。
Access上のクエリで表示されるレコード数と、Excel VBA DAOから取得したクエリのレコードセットのレコードの数が異なり、原因がわかりません。

それぞれのレコード一覧を出力してみると、あるフィールド(IIf(・・・,”対象外”, “督促対象”)としている部分) の値が、Access上のクエリでは「対象外」、Excelから取得したレコードセットでは「督促対象」となっているため、抽出条件が誤認識されてレコード数が異なることに気がつきました。

クエリの他の抽出条件にワイルドカード等を使っていないと思います。

クエリをDAOで取得した場合に、違いが生まれる原因を推測できる方はいらっしゃいませんでしょうか? 回避策があればお教えいただけると助かります。
260: 2021/03/26(金)12:11 ID:x01Nq0VC(1) AAS
>>259
Accessのテーブルを、Excelからのリンクテーブルにしているものがあるのですが、クエリを開いている状態で、ExcelからDAOでレコードセットを取得すると、テーブルにしているExcelファイルが自動で開かれます。
その状態で取得したレコードセットの内容がおかしいことに気がつきました。

なぜレコードセットの値が異なるのかは、不明なのですが、テーブルにしているブックが開かれているとエラーを出力するようにして、回避しました。
261: 2021/03/26(金)12:30 ID:9TlDuTMy(1) AAS
わからん すまん
1-
あと 527 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.017s