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

608: 2023/03/25(土)14:20 ID:nHkGBQf7(2/2) AAS
本はあくまでも全体のほんの一部を抽出して購買欲そそるタイトル付けて売ってるだけ
MSのリファレンスに頼るのが本筋 
外部リンク:learn.microsoft.com
外部リンク:learn.microsoft.com

ネットの情報でも、ご丁寧にスクショ混ぜて説明してるのに、すでにUI変わってて役に立たないとかも多い
紛らわしい情報が氾濫する中で、どれがじぶんの求めるお宝なのかを見極める目を養うのもだいじ
609: 2023/03/27(月)19:32 ID:zT0GYsm+(1/2) AAS
>>603
CHARとVARCHARの違い
まあ、SQLの型の基本なんだが、ACCESS関連であまりちゃんと解説してるのみたことないな
外部リンク:learn.microsoft.com
OLE DB プログラマリファレンスの第 13 章および付録 A を参照してください、らしい
610: 2023/03/27(月)19:43 ID:zT0GYsm+(2/2) AAS
>>607
ビットマスクって考え方があって、別にVBAに限った話じゃない
が、VarTypeで18ってリファレンス見る限りないな。
どんな変数がその値だったんだ?
611
(1): 2023/03/29(水)07:20 ID:P3Zmpymz(1) AAS
AIに書いてほしいコードを聞くと正しく動くコードが返ってくる
bingとchatGPTは頼れる、かも
612: 2023/04/04(火)10:14 ID:Az13f9J9(1) AAS
最近の VisualStudio に搭載されたコード補完は
おせっかいなくらいにコードの続き出てくるな
613
(1): 2023/04/04(火)16:33 ID:vSpSLcg3(1) AAS
>>611
俺はChat GPTに嘘ばかり教えられている。
用語の定義から間違えている。
Chat GPTの吐いた嘘を貼り付けるページがあったら参加したいわ。
614: 2023/04/04(火)17:16 ID:SG+vqM06(1) AAS
>>613
確かに鵜呑みには出来ないね、よく嘘を言ってくる。ある程度自力で捌けないとヤバいね
615: 2023/04/05(水)00:48 ID:wtS5Em1S(1) AAS
嘘を嘘と見抜けない人の利用はお勧めできない、か

どっかで聞いた話だな
616: 2023/04/05(水)19:08 ID:iYloijFa(1) AAS
GPTのウソ、具体例有ったら教えて
617: 2023/04/08(土)23:18 ID:m5gy6cDu(1) AAS
Excelスレに貼られていたWebview2のコードはワロタ
618: 2023/04/10(月)19:36 ID:YifXJ3Ct(1) AAS
今日も大嘘をつかれました。

質問
MS Accessのvbaで既に存在するプログラム中に宣言されていない変数があります。これを探して,宣言するvba プロシジャーを教えて。

回答
MS AccessのVBAで、プログラム中で宣言されていない変数を検出して、宣言するための手順を説明します。

MS Accessを開き、VBAエディターを起動します。
検索機能を使用して、すべてのモジュール内の未宣言の変数を検索します。
省7
619: 2023/04/12(水)18:35 ID:b8lcjBjc(1) AAS
未宣言の変数が300種類くらいあるポンコツ業務用mdbがある。Option Explicit化して手作業で未宣言変数を探すとものすごく時間がかかる。ローカル変数だけならテキストに対しての構文解析だけで出来そうだけど、誰かやり方知ってますか?

Access用の解析ツールは時間がかかりすぎるので諦めました
620
(1): 2023/04/14(金)12:20 ID:ooEkRg5K(1) AAS
全角数字を含むフォームは普通VBEのプロジェクトエクスプローラでも全角数字で表示される。
しかし、俺の持っているmdbはなぜかフォームによってはVBEで半角の場合がある。
つまりForm1番→Form1番
というように半角になっている。
フォームのもっている名前とモジュールの名前が異なるので検索漏れが発生して何かと不便。
解決策ありますかね?
621
(1): 2023/04/19(水)15:36 ID:hTeej4zs(1) AAS
>>620
Accessのバージョンによって全半角を同一視されるのとされないのがあったよーな
半角に統一して、置換するしかないんじゃね
622: 2023/04/19(水)21:07 ID:UiOYL9zn(1) AAS
>>621
VBEはクラスオブジェクトのリネームはできないんですよねえ

Text化してファイル名を統一してから読み込みますかねえ?それでなおるか未確認ですが。

今は検索文字列のパターンを増やして対応してますが、邪道だなあと思いながらやってます。
623
(1): 2023/04/20(木)00:39 ID:Ck2wYtqO(1) AAS
ACCESS側で名前変更しても、VBE側が変わらないことがあるっぽいな

フォームの コード保持 を いいえ にして保存してから はい にしたら同じになったぞ
まあ、コード全部いったん消えるがな
624: 2023/04/20(木)10:07 ID:b7y+tf5m(1) AAS
>>623
テキスト化してフォームと同じ全角のファイル名にしてからLoadしたらVBEのクラスオブジェクトの名前と一致させることが出来ました。
思うに、このプログラムを書いた人はテキスト化して、お好みのエディタで書いていたんでしょうね。
だからOption Explicitなんてしてなくて、問題なく書けるので、変数のスペルミスがあります。
今回はファイル名の全角半角を間違えてままLoadしてフォーム名とクラスオブジェクト名が一致しないということになったと思います。
よほどVBEを使いたくなかったんでしょうね。
625: 2023/04/28(金)05:20 ID:d0ZMhP2N(1) AAS
やけにエラーが出るので調べたら、クラスオブジェクトの名前のカッコが前側が半角、後側が全角のものを発見。しかも複数。
俺はプロじゃないけど、このデータベースに毎月金を払っている。金取るならちゃんとしたものを作って欲しいわ。
宣言だけして読み書きしない変数が約2000個、呼び出されないプロシジャーと空のプロシジャーが100個以上がもあるし、どうなっているんだ?
戻り値のないプロシジャーをFunctionにして,呼び出すだけのために変数を使ったりしてアホかと思うことばかり
626: 2023/05/03(水)21:33 ID:u6AyBhT9(1/2) AAS
クエリがいくつかあってそのなかであるテーブルを使ってるかどうか検索する方法ないですか
627: 2023/05/03(水)21:34 ID:u6AyBhT9(2/2) AAS
これVBA関係ないな
628: 2023/05/04(木)13:12 ID:xnh5NJU8(1) AAS
関係無いけど、ヒマだから
外部リンク[html]:www.feedsoft.net
この手順でコツコツ「リレーションシップ」を出力してけば把握できる
629
(1): 2023/05/04(木)20:33 ID:i/jCXYvG(1) AAS
QueryDefsのSQLプロパティをinstringで調べる
それをループ かな
630: 2023/05/10(水)00:24 ID:qaMHPguU(1) AAS
>>629
これがベストだね
631: 2023/05/12(金)20:45 ID:nGf/Bj/G(1) AAS
流行りのChatGPTをACCESSで使えるようにしてみた
BingやBardもレスポンス良く使えるようになったのであまり意味はなかったが面白かった
VBAコードはChatGPTに書かせたのをほぼコピペで動くようにできた
632: 2023/05/13(土)09:19 ID:uR6hVfud(1) AAS
スレの意図を無視するがAccessは出来るだけVBA使わず作成する方がバージョンアップにも対応し易い
633: 2023/05/13(土)13:15 ID:JkElVRfp(1) AAS
お客様に納品するならそういう気遣いも要りますね
自家用なので気の済むまで作り込みます
自社の50人くらいが快適なように
634: 2023/05/13(土)16:13 ID:74jfRr8+(1) AAS
どうした? 総合で同意が得られなかったから改めてコッチに書いたのか?
Accessをインストールだけして使わないでいればバージョンアップもへったくれも無いから、そうした方がいいぞ?
635: 2023/05/14(日)08:52 ID:UU9sI9hc(1) AAS
Rubberduckは大きいデータベースだとパース中にエラーが出て使い物にならないねえ

数年前よりはるかにマシになったけど。
636: 2023/05/16(火)21:12 ID:dmITDlP3(1) AAS
msgboxの戻り値を格納する変数の型をvbMsgboxResultにするかLongにするか悩んだので、
時間を計ろうと思って、古い本を引っ張り出して、二つを比較するプロシジャーを書いた。
ふと、全く同じテストをしたらどうなるのか気になったので、やってみたら、全く同じプロシジャー同士の比較なのに30%位スピードに差が出る。さっきやったら最大で37%速度差があった。
一方が速いこともあれば、もう一方が速いときもある。こんなのでスピード比較する意味あるのかなあ?

時間測定はGetTickCountを使って、変数宣言のみ100万回のループをするプロシジャーを100回呼び出すという感じ。
なんかいい測定方法ありますかね?
637: 2023/05/16(火)21:52 ID:Mqz2m8JL(1) AAS
timer使っても同じかな
638: 2023/05/17(水)06:33 ID:AOXlzNDq(1) AAS
timerが秒単位でGetTickCountはミリ秒単位と古い本に書いてあったなあ
あと、timerはそれ自体の動作が遅いって書いてあった
639
(2): 2023/05/18(木)18:57 ID:8+QzSev9(1) AAS
ユーザーフォームが大きいんで下半分を隠す、上半分を隠す、という2つのコードを書きたいんです。下半分を隠す、はハイト プロパティを小さくすれば可能なんだけど、上半分を隠す、は不可能なんですかね。
640
(1): 2023/05/18(木)20:29 ID:FTp82+/Y(1) AAS
>>639
何をやりたいのかイマイチ分からんけど、タブコントロールじゃだめなん?
641: 2023/05/18(木)21:32 ID:UaeB70YO(1) AAS
上半分を隠したら×ボタン無くなってにっちもさっちも行かなくなるぞ
642
(1): 2023/05/18(木)21:36 ID:/q1eE0wB(1) AAS
>>639
2つのフォームに分けたら良いと思うの
643: 2023/05/19(金)21:09 ID:j+pEmA6B(1) AAS
>>640
>>642
ありがとう。皆さんのアイデアをためします
644
(1): 2023/05/23(火)14:00 ID:MnQDcyxi(1/3) AAS
質問です。
Excelファイルを読み込んで、加工してからテーブルとして保持したいんですが、
Excelファイルのまま編集してinsertするのと、
一度テーブルとして読み込んでから編集してinsertするのはどちらが高速でしょうか?
645: 2023/05/23(火)14:42 ID:3uLTyIP1(1/3) AAS
insert ? inport の手順なら下記リンク先を参考に
外部リンク[html]:hamachan.info 
Excelファイルをリンクでもいけるし 同作業を何度も繰り返すとかでも、操作を保存しとけば楽だし
データのボリューム次第とかマシンスペックとかも兼ね合いがあるから、どちらとも
ウィザードの途中画面をよく見て、事前にExcel側を整えて置けば inport も楽だし
編集内容がより細かく設定できるのはExcelなのかAccessなのかを知る事でも、どちらの方法を採るかの判断になる
646: 2023/05/23(火)15:03 ID:MnQDcyxi(2/3) AAS
いろいろありがとございます、しかしimportではなくinsertです
内容を見て既存のテーブルに1行ずつinsert(もしくはupdate)していく形になります。
647: 2023/05/23(火)15:26 ID:3uLTyIP1(2/3) AAS
んーと、Access側のテーブルはあくまでもデータストック用な立ち位置?
事前にExcelでの編集が伴うなら、Accessのテーブルとしてから編集するのはムダなような
外部リンク:tonari-it.com コッチのが参考に成るかも 実行速度の検証もしてる様子
648: 2023/05/23(火)16:47 ID:MnQDcyxi(3/3) AAS
ありがとうございます!
いまさらっとですが見てみたところ、速度比較などもしていて参考になりそうです。
見てみます!

中間テーブルを作成してから編集した方がいいよ、という声を聞いたんですが
いちいち使わないテーブルに投入する必要はないのでは?と思い質問いたしました。
事前編集方式でやってみます!
649: 2023/05/23(火)18:12 ID:3uLTyIP1(3/3) AAS
Excelの元データと、何をどう編集したいかも判らないから、中間テーブルの必要性は当人しか判断不能
上でも書いたけど、編集内容がExcelの方が楽で早いのかAccessの方なのかでも手順は変わるような
速さを第一に求めているように読めるけど、「一行ずつ」って書かれた部分で「おや?」と
スムースにデータを移行させるには、最初のリンク先の「データクレンジング」も読んでおいてもムダには成らない
アチコチに目を配らなければならない様子でお疲れ でもそれがじぶんの糧に成る
650: 2023/05/24(水)08:46 ID:AU7HKxhu(1) AAS
>>644
ExcelインポートしてAccessで加工する方が速いよ
ExcelでVBAでデータ加工するなんて愚の骨頂
651: 2023/05/24(水)10:26 ID:eouMPy16(1) AAS
みなさまいろいろありがとうございます
自分の説明不足&理解不足ですみません。

ACCESSに入っている一覧情報を定期的に更新しなければならず、
その更新情報がExcelで来るのでそれを読み込んで…とやる感じです。
ACCESS側で固有に更新している情報もあるのでまるっと上書きではなく、
一行ずつ確認して該当の列のみ追加や上書きをしなくてはいけません。

それを、いまはAccessVBA内でExcelファイルを開いて
省6
652: 2023/05/24(水)10:50 ID:l+gVJ33A(1) AAS
そういうことなら中間テーブルに取り込んで、テーブル同士の差分をチェックかな
外部リンク:tasukete-access.com
[フィールド単位での差分をチェックする] この方法のが近いのか
653: 2023/05/24(水)23:16 ID:CzWxWRtY(1) AAS
返信遅れてすみません!ありがとうございます!
こんなやり方ができるんですね!
全部SQL書こうと想ってましたがクエリで楽に作れるかもしれず嬉しいです。
参考に書いてみます、本当にありがとうございます!
654: 2023/05/26(金)17:24 ID:sT8UcBqC(1) AAS
500以上のモジュールにOption Explicitが書いてない。
当然、宣言されていない変数が何百もある。
ここにOption Explicitを書くと、宣言されていない変数を見つけるたびにコンパイルが止まるので面倒。
一括して発見する方法を知ってる人いますか?
VBEが発見できるので、その方法が分かればユーザにも分かるはずだと思うが、検索しても見つからない。

Cのコンパイラを自作する技術があれば、文法解析の手法が使えると思って調べたけど、全余暇時間をコンパイラ自作に割り当てても6ヶ月かかったと言ってる人がいて、踏み出せない。
655
(1): 2023/05/26(金)19:16 ID:+AT6wCCw(1) AAS
こんなん見付からはりました
外部リンク:stabucky.com  実際に検証はしてないんで、自己責任 ←重要!!
現物mdb(そんなのはAccdbでは無くmdbだと勝手に決め付けてる)では無く、コピーしたファイルで
尚且つネットから切り離しスタンドアロンで、更に30秒後に発火するかも知れないので消火器用意してから
試してみてください 結果報告が期待されます

VBE上でCtrl + Spaceで入力支援機能(サジェストっつーの?)を出して、いっこずつTABで拾いだす案を
提案しようと思いつつぐぐってたら出てきた代物 宣言してなかったら自動メンバー表示(どの名称が正式か知らん)
省3
656: 2023/05/29(月)16:07 ID:AvjLnKXj(1) AAS
>>655
ありがとう。
少しずつ試してみます。

いろいろ調べて、いまはFlexとbisonという奴でもやってみたくなっています。
657
(1): 2023/06/08(木)22:05 ID:tPqYzYSn(1) AAS
配布したaccdbを365runtimeで動かしてて、今朝突然レポートが開かなくなった
ほぼ午前中すったもんだして2013runtimeならレポートの印刷やプレビューが問題無い事がわかってruntime差し替えた
こんな目にあったひと他にいない?
658: 2023/06/09(金)03:25 ID:i6Y59lYy(1) AAS
>>657
はい、います
365で突然、帳票の罫線が消えた事があります
その時はAccessのバージョンを1つ前にロールバックして解決しました

方法は以下のURL参照
■Office - Microsoft コミュニティ
外部リンク:answers.microsoft.com
省2
659: 2023/06/09(金)04:50 ID:uT9lsXlY(1) AAS
ロールバック、覚えときます
ありがとう
660
(1): 2023/06/09(金)12:36 ID:G8Vh+N8B(1/2) AAS
それって、MSからバグフィックスや修正が為されたのを察知するにはどうしたらいい?
ロールバックしっ放し? 勝手にアプデされてまだ直らなかったら二つ前にロールバック?
ずっと修正されなかったらロールバックバックバックとかに成らん?
661: 2023/06/09(金)16:09 ID:XhtkwaOO(1/2) AAS
>>660
察知は毎月リリースページを確認していました
バグが修正されるまでは Office の自動更新を止めます
なのでロールバックは最初の1回だけです
バグが修正されたら自動更新を有効に戻して最新版にする感じでした

更新は重大バグ修正の時のみ、原則自動更新は使わないという運用もあります
これに関してはお客さん次第ですかね
662
(1): 2023/06/09(金)16:20 ID:G8Vh+N8B(2/2) AAS
そうだよね 委託を請けてる業者さん目線だよね
エンドのユーザーはそんなのに目を通さないしね 見てもどれが自分の不具合に当て嵌まるか解かり辛いしね
じゃあ内製のユーザーはロールバックバックバックし続けるしか無いよね
アプデを停め続けるひとも居るかも知らんけど、そうすると1年分とか溜まってそれはそれで地獄を見るしね

やっぱこういう場所で症状とかを意見交換するのは貴重なんだ、と再認識
663: 2023/06/09(金)17:23 ID:XhtkwaOO(2/2) AAS
>>662
はい、開発委託業者です
確かにエンドユーザーさんにリリースページは無縁ですよね
一応システム担当者さんにはお知らせしましたけど、こちらで随時チェックという感じでした
また修正されてもリリースページに載らない細かい不具合修正も多いです
レポートの罫線不具合はまさにそれでした

■最新チャネル リリースのリリース ノート - Office release notes | Microsoft Learn
省1
664
(1): 2023/06/10(土)18:20 ID:u0MJNtiG(1/2) AAS
あと、マクロだと screen.active.control とか出来ないよね
665: 664 2023/06/10(土)18:20 ID:u0MJNtiG(2/2) AAS
誤爆
666: 2023/06/11(日)17:21 ID:/gnEKRu3(1) AAS
sleep をどんだけにするかどうやって決めるの?
667
(2): 2023/06/13(火)15:38 ID:bu7CkXDV(1) AAS
VBAで自作のクラスモジュール作成したんですが、
それを引数で渡す関数の書き方がわかりません

Sub test(ByVal hoge As Hoge)

みたいな感じで書いたのですがうまくいきません。
(As Hogeが自動でAs hogeと変換されるし、エラーになります)
どなたか教えていただけませんでしょうか?
668: 2023/06/13(火)19:34 ID:d6Pomi9y(1) AAS
>>667
引数hogeに引っ張られるVBAの仕様です
VBAでは変数にクラス名を使うのは避けた方が良いですよ
プロジェクト内に変数hogeが存在している時も同様です
669
(1): 2023/06/14(水)11:24 ID:3Eu4F25u(1) AAS
>>667
VBAでクラスモジュールなんて不要
670: 2023/06/15(木)16:26 ID:VlP0x+zk(1/3) AAS
>>669
流石にそれはない。クラスモジュールがある方が便利だよ。
671: 2023/06/15(木)19:09 ID:y9q9PTdn(1) AAS
bindってのでクラスモジュールの有り難みを知りました
672: 2023/06/15(木)20:42 ID:RAXKxz4R(1) AAS
俺もクラス使いたい派
保守性が全然違う
673
(1): 2023/06/15(木)22:46 ID:VlP0x+zk(2/3) AAS
クラス使わないと同じようなコードが量産されて面倒くさすぎる
674: 2023/06/15(木)22:47 ID:VlP0x+zk(3/3) AAS
ただでさえポンコツな言語なんだから、クラスぐらい使おうよ。
675: 2023/06/16(金)20:25 ID:cjNqE8A3(1) AAS
>>673
そのせいだったのか、クラス使えば良かった
676: 2023/06/21(水)20:54 ID:b8UND1s3(1) AAS
ADOでCSVからテーブルを作ろうとしたらレコードが大きすぎますって怒られるんですよ!
1レコード2000バイトも無いのにですよ!
400列くらいあるのがダメなんですか?
2013なんですが。
677: 2023/06/21(水)21:15 ID:gk5UG/Z5(1) AAS
フィールド数の上限は255だからかな
678: 2023/06/23(金)13:04 ID:pHYUvccd(1) AAS
フィールド数上限は実は罠
679: 2023/06/23(金)15:26 ID:X84KLwiQ(1) AAS
過去最大のフィールド数は500
テーブル分割して収納した
680: 2023/06/23(金)15:42 ID:jhieer6M(1) AAS
分割したらフィールド数じゃないな
681
(1): 2023/06/23(金)16:07 ID:/GlO4XTI(1) AAS
メモ型にコンマ付で格納
682: 2023/06/24(土)09:17 ID:5hQB8dV1(1) AAS
>>681
それに意味有るの?
683
(1): 2023/06/26(月)19:43 ID:nvUGoLmX(1/2) AAS
Access2019でリボン非表示にするのは、どうするの?
684: 2023/06/26(月)20:17 ID:nvUGoLmX(2/2) AAS
>>683
細工されないようにXMLで記述したい
685: 2023/06/26(月)21:25 ID:Ezf4n+79(1) AAS
XML???
VBAでなら
DoCmd.ShowToolbar "Ribbon", acToolbarNo
ってのがあるが
686: 2023/06/27(火)08:56 ID:5UYjwK7S(1) AAS
それだと使用者に解除されちゃうので、XMLで空のカスタムリボン作って、オプション→現在のデータベース→リボンとツールバーのオプションに設定したいんよ
Access2019だとスクラッチからリボン作ってもファイルボタンが残っちゃうのが解ったので、それで我慢する
687: 2023/09/14(木)09:18 ID:t/htNvkA(1/6) AAS
サブフォームをもつフォームにおいて、
親フォーム側から
Me.サブフォーム.Requery
を実行すると、サブフォームのCurrentイベントが2回発生するんだけど、なんでなんだろ?
688
(1): 2023/09/14(木)10:41 ID:UPFEbPP4(1/4) AAS
大抵はそう組まれているからそう動作する
親フォームからひとつずつチェックしてみれば「あぁ、ここか」が出てきたりする
1-
あと 100 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.018s