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

421: 2021/09/05(日)03:44 ID:Ocn+wvkQ(1) AAS
外部からaccessの特定のレポートを開く方法ある?
422: 2021/09/05(日)14:14 ID:ICYnYWWd(1) AAS
外部って?
普通にCOMで操作すれば良いんじゃねえのか
423: 2021/09/07(火)12:53 ID:3mZ93kfX(1) AAS
パススルークエリのパラメータをaccess外から設定する機能教えてください。
424: 2021/09/07(火)13:13 ID:7P2mUzTw(1) AAS
access外って?
何がやりたいかわからん
425
(1): 2021/09/07(火)14:16 ID:QthkAqNV(1) AAS
ADO
ADODB
DAO
426
(1): 2021/09/08(水)22:14 ID:jpM3jR9r(1) AAS
>>425
データベースに
ドライバなしでvbaで接続する方法ってないの?
427: 2021/09/09(木)01:34 ID:4EZcQadY(1) AAS
>>426
外部リンク:docs.microsoft.com
428
(1): 2021/10/09(土)23:35 ID:uMcy1fPR(1) AAS
VBAエキスパートって取ったほうがいいでしょうか
429: 2021/10/10(日)08:29 ID:fy4lWk3l(1) AAS
資格マニアを見る世間の目は冷たい
430: 2021/11/02(火)07:37 ID:0Z1mhYfJ(1) AAS
>>428
資格より実践を積むべし
431
(3): 2021/11/29(月)15:04 ID:vB15GkdT(1/2) AAS
レコードが存在しない場合に INSERTを動作させようとしてます

FROMが無いと、演算子がありません、となるため
ダミーの FROM を入れましたが(Oracle でいうところの dual)
レコードが追加されません

INSERT INTO t_table(id, name)
SELECT 1, "name"
FROM dummy
省4
432: 2021/11/29(月)15:15 ID:MiFRCJa7(1/2) AAS
直接の返答じゃないけど、SQL一発書きじゃなきゃだめなの?
事前にレコード数チェックして分岐じゃだめなの?
433: 2021/11/29(月)15:17 ID:vB15GkdT(2/2) AAS
UPDATE と組み合わせて、SQL一発を考えてます
無理であれば、おっしゃるように分岐かなと
434: 2021/11/29(月)16:01 ID:MiFRCJa7(2/2) AAS
ちょっと気になったので手元で実験してみたけど、dummyテーブルが存在して空ではないときには
(多分)431の想定どおりの挙動をしていると思う
バッドノウハウ臭いので、おとなしく事前チェックして分岐かなぁ
まぁAccessのSQLって変だよね
435
(1): 2021/11/29(月)17:41 ID:XYio4/pG(1) AAS
access はupdateいっぱつで初挿入もできたはず
しゅきーのヌルを上書きする感じで
436
(1): 2021/11/30(火)05:36 ID:KirC+CSy(1/5) AAS
>>435
さすがにそんなことはないと思うが、ちょっとサンプルコード書いてみてくれ
437
(1): 2021/11/30(火)09:01 ID:qEKwfbTR(1) AAS
>>436
選択クエリは更新できる
UPDATE TableA RIGHT JOIN TableB ON TableA.ID = TableB.ID
SET TableA.ID = [TableB]![ID], TableA.Data1 = [TableB]![Data1], TableA.Data2 = [TableB]![Data2];
438
(1): 2021/11/30(火)10:50 ID:d0QAjKSx(1) AAS
>>431
values (1, "name")
じゃ駄目なの
439: 2021/11/30(火)10:58 ID:+NfPg838(1) AAS
>>438
単純にinsertするだけならそれでいいんだけど、existsを使って条件付けようとしてるのでvaluesは使えない(エラーになる)
440
(2): 2021/11/30(火)12:38 ID:nsxxcWz3(1) AAS
それ自分でDUALという名称でテーブルを作って1レコード入れておけば出来るよ。
OracleのDUALも実体はそんな感じだったと思う。
441
(1): 2021/11/30(火)16:33 ID:KirC+CSy(2/5) AAS
>>437
更新はできるけど、存在しない行を更新しようとしたとして
その行を新規追加することなんてないだろ...
と思ったけど、追加されるのか

ACCESS無茶苦茶しやがるな
リンクテーブルに対してでも追加しやがる

SQL ServerだってFromでJoinしてUPDATEできるけど、
省2
442: 2021/11/30(火)16:35 ID:KirC+CSy(3/5) AAS
あ、最後なんか変な行入った
443: 2021/11/30(火)17:23 ID:aruulzL7(1) AAS
あくせく働くぜ
444
(1): 2021/11/30(火)18:49 ID:VsTnDahT(1/2) AAS
>>441
Access的には「更新可能クエリ」はテーブルと同等の扱いなのだろう
445: 2021/11/30(火)22:05 ID:KirC+CSy(4/5) AAS
>>444
Viewが実テーブルとほぼ同じ扱いってのは別に問題じゃない
UPDATE文でテーブルの行数が変わるのが無茶苦茶なんだよ
446: 2021/11/30(火)22:10 ID:VsTnDahT(2/2) AAS
SELECT * FROM TableA RIGHT JOIN TableB ON TableA.ID = TableB.ID

これの更新だから行数は変わっていない
447: 2021/11/30(火)23:40 ID:KirC+CSy(5/5) AAS
UPDATE文で実テーブルの行数が、な
448: 2021/12/01(水)09:46 ID:dv4Z+qI2(1) AAS
>>431
SQL一発では出来ないよ
残念だが
DOループで回す事になる
449: 431 2021/12/02(木)11:57 ID:nKskuO+T(1) AAS
ありがとうございます
分岐で分けることにしました
450
(2): 440 2021/12/02(木)22:29 ID:vu0CN48k(1) AAS
もうちょっと俺を信用してもええんやないかと思ったが
出来たんならええか
451
(2): 2021/12/08(水)11:00 ID:8eCyKUYS(1/2) AAS
データベースに対し、レポートを外部データの取込で追加するのですが、
この操作をGUIでなくコマンドで行う事は出来ますでしょうか。
452
(1): 2021/12/08(水)11:36 ID:XFpeOKs/(1) AAS
mdbファイルまるごと差し替えでok
453: 2021/12/08(水)14:57 ID:8eCyKUYS(2/2) AAS
>>452
返信ありがとう
やっぱ基本はDBごと差し替えになるんですね・・・
最新を管理しないといけないということですか
454: 2021/12/08(水)16:58 ID:sRvDCOgH(1) AAS
>>450
レコード入れずに試してみてました
あとで確認してみます
455: 2021/12/08(水)18:12 ID:ixTDMdmo(1) AAS
>>451
access起動コマンドラインオプションに
/x マクロ名
で自動実行可能

向きが逆だけどオブジェクトのコピーでレポートをコピー出来る
456: 2021/12/08(水)20:30 ID:FsTgnRus(1) AAS
>>451
DoCmd.TransferDatabase acImport
457: 2021/12/13(月)11:19 ID:HhLRYuYl(1) AAS
>>440,450
ありがとうございます、確認しました
dummy テーブルにレコードを入れて動作しました

INSERT INTO t_table(id, name)
SELECT 1, "name"
FROM dummy
WHERE NOT EXISTS(
省2
458: 2022/01/15(土)00:52 ID:ALzAiADU(1) AAS
VBAって、サポート切れてんの?

企業とかこれから、多数のツールどうすんだろうね。
459: 2022/01/15(土)07:46 ID:8MS0rOI1(1) AAS
サポート気にするような部署でvbaを採用するだろうか?
460: 2022/01/17(月)00:16 ID:oS3b1eNW(1) AAS
VBAって単独の製品じゃないんだが
そもそもVBAがサポート切れってどこの情報だ?
461
(1): 2022/01/17(月)12:28 ID:t8m0YBBL(1) AAS
OneDriveにコードをバックアップして直接開いたところ

画像リンク[jpg]:imgur.com

こういった線が付きました
Office2016 Proなのですが設定等でVBエディターでも表示できますでしょうか
またお恥ずかしながらこの線の一般的な名称も教えて頂けませんでしょうか
462
(1): 2022/01/17(月)17:44 ID:hBkYcVxQ(1) AAS
>>461
何で開いたのかは知らんけど、AccessとかのVBAエディタには、そういった今どきの便利な機能は無いかと
一般名称かどうかはしらんけど、VSCodeとかの設定では Indent Guide でひっかかるんじゃないかな
463: 2022/01/17(月)20:02 ID:r2vXEkpI(1) AAS
>>462
ありがとうございます
名称のほうぐぐってみまして、確かにVS関連の情報が多く出てきました
大変便利ゆえに残念です!
464
(1): 2022/01/31(月)11:21 ID:ZCY1so+a(1) AAS
Microsoft 365 Access Runtime ダウンロードリンクが動作してないのですが
ダウンロードできた方おられます??
465: 2022/01/31(月)11:29 ID:Di33df7w(1) AAS
>>464
見てみたけど、ダメだねぇ
466
(1): 2022/02/22(火)22:36 ID:h8gQU92u(1/2) AAS
アクセス2010でVBA内でエクセルのブックを操作するためにブック選択ダイアログを開こうとしています.ブックが存在するフォルダーはc:\x\y内にあります.
それでChDirでGetOpenFilename実行時に開くフォルダーをc:\x\yにしたいのですが,規定のドキュメントフォルダーが開きます.
Debug.Print CurDirは"C:\x\y"を返しますので,システムが認識するカレントフォルダーが"C:\x\y"に変わっているのは確認済みです.GetOpenFilenameが開くフォルダーをGetOpenFilenameに変更できないことが問題です.

sub test

ChDir "C:\x\y"
Debug.Print CurDir
Set exApp = CreateObject("Excel.Application")
省10
467: 2022/02/22(火)22:38 ID:h8gQU92u(2/2) AAS
間違えました。
GetOpenFilenameが開くフォルダーをGetOpenFilenameに→
GetOpenFilenameが開くフォルダーをc:\x\yに
468
(1): 2022/02/23(水)09:19 ID:yBLUqW/Q(1) AAS
外部リンク:hironimo.com

WorkBooks.Open
469: 2022/02/23(水)10:16 ID:/GeE/zJY(1/3) AAS
>>468
GetOpenFilenameでダイアログが立ち上がったときのフォルダーをc:\x\yにしたいという意味です。
470
(1): 2022/02/23(水)14:00 ID:3ksW4w1X(1) AAS
FileDialogを使う
471: 2022/02/23(水)15:58 ID:noR6ud0U(1) AAS
外部リンク:officevba.info こっちスかね
メリットもデメリットも書いてあって親切
472
(1): 2022/02/23(水)16:48 ID:/GeE/zJY(2/3) AAS
>>470
ありがとうございました.
FileDialogだとカレントフォルダーで開いてくれました.
473: 2022/02/23(水)16:53 ID:/GeE/zJY(3/3) AAS
>>472
ありがとうございます。この説明はとても親切ですね。よくわかりました
474: 2022/02/24(木)15:49 ID:G5PhgONP(1) AAS
>>466
Excel.ApplicationのDefaultFilePathを設定していったん終了したら、
次からそこで開くっぽいぞ

Set exApp = CreateObject("Excel.Application")
exApp.DefaultFilePath = "C:\x\y"
exApp.Quit
Set exApp = CreateObject("Excel.Application")
省4
475: 2022/02/28(月)11:00 ID:JmI4xSUc(1/2) AAS
初歩的な質問でお恥ずかしいのですが教えて下さい
面倒な計算や処理をして値を返す関数Aがあった場合

その戻り値を判定したい場合

If A = 1 or A = 2 then

と記述するとaccessは 2回処理することになるのでしょうか

それでしたら仮に変数(V)を用意して、一旦
V = A
省4
476: 2022/02/28(月)11:49 ID:JmI4xSUc(2/2) AAS
すみません、試してわかりました。
後者は一回で済みました。

質問することでその後すぐ簡単な確認方法を思いつくことがよくあります
お恥ずかしい。スレ汚し失礼しました;
477: 2022/02/28(月)12:38 ID:jOzz1fM6(1) AAS
どんまい 気付きや学びに成りゃ無駄じゃ無い
478: 2022/02/28(月)12:41 ID:frLBMESq(1) AAS
ちょっと違う話だけど、VBAにもOrElseやAndAlsoが欲しいなと思うときはある
479
(2): 2022/03/06(日)15:10 ID:R+n9Kzax(1/2) AAS
SQLの勉強をさいきんはじめました

動的SQLによる数独の超高速解法
というのを読みました

動的にSQLを生成するため
・一つはJDBCを使う方法
・もう一つはストアド・プロシージャを用いた方法
云々って書いてあります
省4
480: 2022/03/06(日)16:34 ID:TgGQVPNx(1) AAS
2つとも分からんけど、VBAが使える環境なら動的SQLは可能なはず
481: 479 2022/03/06(日)17:10 ID:R+n9Kzax(2/2) AAS
SQLとは、使用人から経営者になることだ
今まで自分で作業してたのをしなくてよくなる
使用人に、「こういうのを出してくれ」と
言うだけでよい

数独についてであれば、今まで
総当りするプログラムとか
条件判定とかを自分で考えていたが
省6
482: 2022/03/07(月)07:14 ID:xVPINsIe(1) AAS
経営しなくてもお金が稼げるSQLがどこかに書いてあると良いのに。
483: 2022/03/07(月)12:53 ID:+OeG3Wfd(1) AAS
>>479
JDBC Driver で Access MDB に接続できる

つまりワカラン
484
(1): 2022/03/07(月)13:11 ID:3lxJ/2QX(1) AAS
これかな?
外部リンク:codezine.jp
外部リンク:codezine.jp
外部リンク:codezine.jp
記事中においてJavaでSQLを生成している部分はVBAで書けるだろうけれど、
他のRDBMSで使えるSQLの全てがAccessでも使えるわけじゃないから
その辺をうまく置き換えたりVBAで補ったりする必要はあると思う
485: 2022/03/07(月)14:07 ID:tjPYNfUL(1) AAS
各DBで使えるSQL構文一覧表
(ROLLUPは jet使えない oracleはokとか)
のページが昔あったのに
今見たら見あたらなかったわ
486: 2022/03/08(火)06:28 ID:fGzXxwFZ(1/2) AAS
総あたりする場合、SQLはどうやって
候補を管理してるんだろ?
ふつうにメモリ上に持ってたら
メモリが足りないような
487
(1): 2022/03/08(火)20:13 ID:fGzXxwFZ(2/2) AAS
数字の書かれたパネルがあります
このパネルのマスをいくつか
ぬりつぶし、残った数字の積が、
たて・横のどの列も12になるように
してください

2523
6257
省5
488: 2022/03/09(水)11:17 ID:wDARNtYc(1) AAS
動的SQLっていうから

DBエンジンにSQL投げる

その結果を受けて自分を書き換えて
再度新しいSQL投げる

望む結果になるまで繰り返す
省2
489
(1): 2022/03/10(木)18:36 ID:y/Xk/sN2(1) AAS
>>487
SELECT 解答
FROM すべてのあり得る盤面
WHERE 今回の条件
だから
まず盤面を1行にして
2523625752622334
省10
490: 2022/03/11(金)12:30 ID:+z9vFN5I(1) AAS
>>489
>>484の記事を1から読んでこい
491
(1): 2022/05/01(日)00:28 ID:uZ+uV6s8(1/4) AAS
VBAのコード内の文字を置換するプログラムをVBAで行うことはできるでしょうか?
置換の組合せが複数あるので一つずつCtrl+Hで操作すると間違いそうなので,
置換前文字列と置換後文字列の配列を書いて,それを順に実行するようにしたいのです.

自分のコード内に当該置換文字列をがでてくるので,その回避も考えないといけないですが

よろしくお願いします
492: 2022/05/01(日)07:29 ID:1HGTgNe1(1/2) AAS
>>491
できるよ
493: 2022/05/01(日)07:36 ID:1HGTgNe1(2/2) AAS
ごめん、AccessVBAスレだった
知らん
494
(3): 2022/05/01(日)16:14 ID:4P2yloMu(1) AAS
ACCESSにもApplication.VBEがあるっぽいから、エクセルとかと同じようにできるんじゃね
そもそもコード内をそうそう置換するって状況がよくわからんがな
495: 2022/05/01(日)20:13 ID:uZ+uV6s8(2/4) AAS
>>494
オブジェクト名を修正すると,名前の自動修正機能で,オブジェクト間の整合性は保たれます.
例えば,Aクエリー内でBテーブルを使用していて,Bの名前をCに変更するとA内のBテーブル名もCに自動的に修正されます.
ところが,コード内でオブジェクト名を引数に使用している場合(DoCmd.OpenQuery()やQeryDef()など)は,自動的に修正されないので
コード内の文字置換で修正するしかありません.
オブジェクト名をより統一的にしたいとか,あるルールで短くしたいなどの事情です.

でも本当にコードを使ってコード内の文字置換できますか?
省1
496
(2): 2022/05/01(日)20:33 ID:XyObubkl(1) AAS
>>494がApplication.VBEってヒント出してくれてるのに自分で調べる気は無いの?
497
(1): 2022/05/01(日)20:51 ID:uZ+uV6s8(3/4) AAS
>>496
いままでApplication.VBEとVBAの違いをしりませんでした.
Application.VBEで検索して,オブジェクトであることをしりました.
できそうな気がしてきました.
調べます
498
(1): 2022/05/01(日)21:27 ID:q0kLnjNb(1/2) AAS
>>497
お前みたいな馬鹿は、方法自体間違えていると思うよ
499: 2022/05/01(日)22:36 ID:uZ+uV6s8(4/4) AAS
>>498
正しい方法言ってみな。
言えなきゃ超バカ決定。
500: 2022/05/01(日)23:10 ID:q0kLnjNb(2/2) AAS
やっぱり馬鹿だったか
馬鹿に馬鹿と指摘すると怒りだす
501
(1): 2022/05/03(火)18:13 ID:hABwtxOZ(1) AAS
>>494>>496
497ですが、
Application.VBE.ActiveVBProject.VBComponents(i).codemodule.ReplaceLine(j,"修正後コード文字列")
を使ってできました。
1-
あと 287 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.019s