Access VBA 質問スレ Part2 (788レス)
上下前次1-新
557: 2022/06/30(木)20:22 ID:1+oYjPxt(1/2) AAS
デコンパイル、昔は割と鉄板の解決方法だったんだけどね
それでだめなら新規作成して全モジュールインポートとかもあったな
最近は必要性が減ったけど、まだたまにはあるんだな
558: 516 2022/06/30(木)22:53 ID:1OP/W/CA(3/3) AAS
コンパクトだけでも良かったのかも知れないが,習慣で両方やることにしている
ついいましがたも.Docmd.OpenReportのOpenArgsがレポートに渡らなくて困っていたが,コンパクトをしたら作動した.
終了時にコンパクトするオプションがあるくらいだから頻繁にやるべきなんだろうね.
コード書いているときは非常に頻繁に破損するからね.
559: 2022/06/30(木)23:46 ID:1+oYjPxt(2/2) AAS
あれはデータ領域を圧縮するのが主で、コード部分にはあまり影響しなかった気がするが
最近のアクセスでコードが破損するのはだいぶ減ったと思うが
VBEからコンパイルするだけで解決してたんじゃないか?
560: 516 2022/07/01(金)00:40 ID:SILFs/Ha(1) AAS
くわしいことはわからないが,挙動不審が治ることがあるんだよねえ
とにかく,試行錯誤していると必ずと言っていいほど,壊れるよねえ.
メモリーが不足していますとか出始めると,その日のうちに全フォーム消失とか起こるからなあ.
561: 2022/07/01(金)10:45 ID:x9gnk4T5(1) AAS
試行錯誤の過程のほとんどを貯め込むからな 設定で「終了時に最適化」で、都度終了を心掛けるか
大幅な改修の度にコンパイルのクセを付けるか ファイルサイズに気を付けて、「こんなサイズのはずは無い」ってな時は要注意
で、それは、お道具の使い方が雑、間違ってるってだけで、すぐAccessのせいにする連中はお里が知れる ってこと
562(2): 516 2022/07/07(木)15:33 ID:9tJXVGoG(1/3) AAS
下のコードでmdbのディレクトリが表示されると思いきや、
ディレクトリ Documents
フルパス C:\Users\MyName\Documents
が表示された。vbsならscriptの存在するディレクトリだからmdbの存在するディレクトリが表示されると思ったのに、違う。
このことを説明してある資料ありますかね?
Sub test()
Dim fso
省6
563: 2022/07/07(木)16:12 ID:N4ENiOaQ(1) AAS
>>562
mdb/accdbファイルの場所が欲しいのなら
CurrentProject.Path
を使おう
CurDir$や>>562の例なんかで返されるカレントディレクトリはファイルダイアログとかで開いたフォルダになるっぽい
その辺の仕様に関する資料は知らんけど
564(1): 2022/07/07(木)19:57 ID:V/fQnZ1U(1/2) AAS
そもそも、
>vbsならscriptの存在するディレクトリ
が間違ってる気がするが
カレントディレクトリの概念って最近は説明されてるの見ないなぁ
GetFolder(".")が返してるのはカレントディレクトリ(からの相対パスで自分自身)
カレントディレクトリはACCESS.EXEの場所や.MDBファイルの場所とは別に存在する
まあMDB開くときはそこをカレントにする場合が多いけどな
省1
565(1): 516 2022/07/07(木)20:26 ID:9tJXVGoG(2/3) AAS
>>564
> そもそも、
> >vbsならscriptの存在するディレクトリ
> が間違ってる気がするが
VBSで稼働していたスクリプトをVBAに移植している際に気づいたので、正しいと思います。
スクリプトを任意のフォルダにコピーしてそのフォルダ内のファイルを一括処理するのに使っていましたので。
566: 2022/07/07(木)20:31 ID:ty1oWU7C(1) AAS
chdirで変えられちゃうけど
567: 516 2022/07/07(木)20:55 ID:9tJXVGoG(3/3) AAS
ユーザはおいら1人だからいいのです。
568: 2022/07/07(木)21:30 ID:V/fQnZ1U(2/2) AAS
いやだから、scriptの存在するディレクトリじゃなくて、
カレントディレクトリが表示されてるって話なんだがな
たまたまそれが同じだっただけだ
ここ理解しないと思ったディレクトリが表示されない理由が理解できないぞ
569: 2022/07/07(木)22:24 ID:rKn8i4wF(1) AAS
馬鹿に何を言っても無駄な例だぞ
570: 2022/07/08(金)10:33 ID:aHYxM19P(1) AAS
>>565
そのスクリプトをショートカットにして、
作業フォルダを変えて動かしてみたい
571: 2022/07/08(金)12:10 ID:/znuHP85(1/2) AAS
カレントディレクトリみたいな、あやふやなものを使ってはいけない。
これが使えるのは、絶対に変化しない場合だけ
起動時に、特定のフォルダを指定するとか、
あらかじめ定数などに保存しておく
572: 2022/07/08(金)12:16 ID:/znuHP85(2/2) AAS
例えばデスクトップに、以下のショートカットを作ると、
WSL2 で、Ubuntu 18.04 を起動して、
その /home/ユーザー名/test ディレクトリを、VSCode で開く
リンク先
C:\Windows\System32\wsl.exe code .
作業フォルダ
\\wsl$\Ubuntu-18.04\home\ユーザー名\test
573: 2022/07/08(金)12:30 ID:PreZKXp3(1) AAS
もはやAccess VBAとは関係ない話になってるし、元質問者は聞く耳持たないみたいだから
これ以上続ける意味無いよ
574(1): 2022/07/11(月)11:04 ID:1W23UOpt(1) AAS
>>562
fso使ってるんだから当たり前
575: 2022/07/12(火)17:20 ID:xDQ7ywi9(1) AAS
>>574
なぜ「fsoを使うと」なにが、「当たり前」なんだい?
576(2): 2022/07/13(水)18:08 ID:sooqvjiy(1/2) AAS
7月12日のWindows Updateを実施した端末で軒並み「要求されたタイプ ライブラリまたはウィザードは VBA プロジェクトではありません。」
というエラーが出てAccessで作ったものが起動できない症状が出てるんだけど、何か知ってる?
ちなみにAccess Runtimeを再インストールすると直る。修復ではダメ。
577: 2022/07/13(水)18:15 ID:sooqvjiy(2/2) AAS
>>576 書き忘れたけど手元で問題が発生しているのはAccess Runtime 2013 32bitの端末。
OSはWin8.1とWin10の両方で発生してる。
578: 2022/07/13(水)19:12 ID:PtV2v+lq(1) AAS
うちの環境とほぼ同じですね、まだ発生してないけど明日あたり起きるのかな。
runtimeの入れ直しですね、了解っす。
579: 2022/07/14(木)09:57 ID:gGJjrJSy(1) AAS
>>576
特定した。
KB5002121を入れると症状が発生する。
Access Runtimeを再インストールしても再度Windows Updateを実施すると元に戻るから
KB5002121をブロックしないとダメだ。
580: 44 2022/07/14(木)12:52 ID:Fq9OF9ol(1) AAS
迷惑な話ですねえ。
MSのプログラマーがアホなのは今に始まったことじゃないけど
581: 2022/07/14(木)18:41 ID:Zi9qyvS+(1) AAS
昔EXCELのVBAで似たような話が合った気がするな
その時はテンポラリディレクトリの掃除したら起動するようになったはずだから
いちど試してみては
582(1): 2022/07/18(月)12:31 ID:1omE+gQa(1) AAS
MSは自社製品のテスト駆動開発すらしてない
テストが面倒になるとサポート打ち切り
583: 2022/07/18(月)13:02 ID:dNd6yRIh(1) AAS
>>582
それソースあるの?
584(1): 2022/07/19(火)13:18 ID:4mWHj4S5(1) AAS
2022年7月パッチで「Microsoft Access」に問題、バージョンが異なるとファイルが開けない
外部リンク[html]:forest.watch.impress.co.jp
>異なるバージョンの「Microsoft Access」で作成されたデータベースファイル(ACCDE/MDE)を開こうとすると、「要求されたタイプ ライブラリまたはウィザードは VBA プロジェクトではありません」というエラーが発生する場合がある
585(1): 2022/07/20(水)10:36 ID:Rwr2SDqT(1) AAS
Formを変数にSetするとき下の二つのやり方のどちらが速いか試したら、結構まちまちなんですよね。
後者はEarly Bindingだと思うんだけど、ループさせると前者が速いことも結構あって不思議だ。
だれかこのあたりの事情をご存じの方いますか?
Dim F As Form
Set F = Forms!FormName
Dim F As Form_FormName
Set F = Forms!FormName
586: 2022/07/20(水)11:16 ID:2HHkZJi9(1) AAS
>>584
runtime版でそれ出たな、試行錯誤でruntime2016からruntime365に変えたら動いたw事がある。
587: 2022/07/20(水)15:41 ID:qJwz0nM8(1) AAS
runtimeは糞
588: 2022/07/20(水)18:29 ID:BaO5YoZA(1) AAS
>>585
あってるかどうかは知らんが
!は実行時に列挙する気がするんだが
後者は型チェックと変換が入るから後者のほうが遅いと思う
前者も入るかもしれんが、そうなるとForm型とForm_FormName型でどっちのキャストが早いかで
結局やっぱり後者が遅い気がする
どっちにしたってFは型指定されているので事前バインドだが、
省2
589(1): 2022/10/28(金)11:06 ID:L4jXkRvB(1/2) AAS
PC画面のスクショを撮って、印刷させたいのですが
とっかかりすら分からない初心者です
検索しても該当サイトはなかったので
よろしければご教授願いたいです
590(1): 2022/10/28(金)12:19 ID:QXDDHW1b(1) AAS
>>589
Windows標準の切り取り&スケッチを使えばできます
ACCESSからコントロールしたいのですか?
591: 2022/10/28(金)12:33 ID:L4jXkRvB(2/2) AAS
>>590
はい、ExcelかAccessでとのことで、
今後の勉強含めAccessに挑んでいます。
不特定多数が使用する環境で
(リテラシーが低い人も混在)
ボタン一つで全画面スクショ印刷と
アクティブウィンドウのみスクショ印刷
省7
592(1): 2022/10/28(金)12:48 ID:14o/00kf(1) AAS
API経由で[PrtSc](全画面)、[Alt]+[PrtSc](アクティブウィンドウのみ)を押せばクリップボードに画面キャプチャができるだろうから
それをレポート上のImageに突っ込んで印刷すればいいんじゃないのかな?
試してないから実際にできるかは知らんけど
593: 2022/10/28(金)18:23 ID:ivdM6iIS(1) AAS
>>592
ありがとうございます
土日に試してみます!
594: 2022/12/09(金)21:17 ID:XI7rGRQs(1) AAS
サーバーから検索したいのに上手くいかない
どこか修正するとこありますか?
Private Sub CommandButton1_Click()
Const BASE_PATH = "\\L\設計\図面"Dim myPath As String, myName As String
Dim FSO As Object, oFolder As Object, oSubFolder As Object, oFile As Object
On Error Resume Next
If TextBox1.Value = ""Then Exit Sub
省15
595: 2022/12/10(土)17:10 ID:HwePKFIg(1) AAS
何がどううまくいかないんだ?
On Error Resume Next外して、エラー内容かけ
596: 2022/12/11(日)02:53 ID:08xatqWx(1) AAS
知らんけど、コマンドプロンプトで取得した方が速いと思うぞ。
597: 2022/12/11(日)14:47 ID:BK2dpDEr(1) AAS
ネットワークだとビックリするほど遅いよね
598: 2022/12/21(水)12:29 ID:29nQbkr4(1/2) AAS
表形式にしたフォーム上の一行一行に対して、そのレコードのID.pdfが指定のフォルダにあれば○、無ければ空白って文字を連結したテキストボックスに入れたいんだけど。
Dir使って判定させるところまでは出来たけど、vbaを実行させるタイミングの問題なのかな?
詳細セクションの描画時選んだら代入出来ませんって出た。
試しに詳細セクションダブルクリックだと該当レコードだけは入ったけど。。
一括で全レコード対象にする方法あるんでしょうか。。?
599(1): 2022/12/21(水)13:19 ID:oTvIdtcL(1) AAS
データシートビューのソースの段階でクエリ使ってる?
〇や(空白)を入力するフィールドは確保されてる?
元のソースにpdfファイルがあるか無いかを画面上で比較しながらひとつずつ入力するつもり?
仮のテーブル作ってフォルダ内のpdfのファイル名をDir使ってそのテーブルに代入すれば
簡単に元のソースにも反映出来ると思うけど どうしてもデータシートビューで比較しながら入れたい?
pdfが入ってるフォルダ内がしょっちゅう追加・変更・削除がある場合だとしても、仮のテーブル使っとけば
都度最新の状況での比較が可能だと思えるし、不足してるからpdf作らなきゃ、の指針にも成るような気がする
省2
600: 2022/12/21(水)14:08 ID:29nQbkr4(2/2) AAS
>>599
ありがとうございます
一旦別のテーブルなりCSVなりにファイル一覧作ってみる事にします!
思い付きもしませんでした
601(1): 2023/03/02(木)17:30 ID:oTm0acsN(1) AAS
値にtrueやfalseが含まれるexcelファイルをDocmd.TransferSpreadsheetを使ってテーブルに取り込むと、
数値として反映されてしまうんですが、理論値のまま取り込む方法はありますか?
変換かけるしかないのかな
602: 2023/03/05(日)12:31 ID:Yb2sf8rL(1) AAS
>>601
取り込んだ後でクエリーで値変えれば良かろうに
603(1): 2023/03/24(金)00:30 ID:higFVnZ+(1) AAS
recordset.Fields.Append "フィールド名", adChar, 200
とかでフィールドを新規設定するといろいろと挙動不審になって、エラーが頻発した。
俺が気がついたのはLen関数がおかしな数字を返すこと。スペースの数を返す。
これのおかげなのか、DictionaryのKeyが変なことになり、ただしいItemが取得出来なくて2日潰したわ。
Trim関数に入れたらまともに動き出した。よけいなスペースが付加されていたため、本来の値と異なっていた。
このあたりの事情を書いたものあるのかなあ?
604: 2023/03/24(金)10:46 ID:pyQciQm5(1) AAS
Recordsetの作成(DAO編)
外部リンク[html]:www7b.biglobe.ne.jp
レコードセットの作成(ADO編)
外部リンク[html]:www7b.biglobe.ne.jp
第4話 DAOとADOの違い
外部リンク:www.r-staffing.co.jp
同一システム内でDAOとADOを併用しないよう留意 とか?
605: 2023/03/25(土)11:49 ID:zs10i3Ml(1/2) AAS
エラーが出るもんだから、VarType関数使って疑わしい変数を調べたら、18が返ってきた。
しかし、そんな定数ないんだよなあ。これはどういうことだ?
606(1): 2023/03/25(土)11:59 ID:nHkGBQf7(1/2) AAS
値の合計なので、10と8とか 5と6と7とか 思い当たるのをひとつずつ潰してく
607(1): 2023/03/25(土)13:37 ID:zs10i3Ml(2/2) AAS
>>606
ありがとう。
Msgboxでそような定数の合計をしますね。
ところで、そのような知識は私の持っているVBA、VBS、Accessの本には記載されていない様な気がします。
もしかしたら、Visual Basicでは常識なのでしょうか?それとも一般的なプログラミングの世界での常識ですか?
私は仕事でVBAをいじるだけで、一般的なプログラミングはほとんど知らないのでお尋ね致します。
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使っても同じかな
上下前次1-新書関写板覧索設栞歴
あと 151 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.028s