Access VBA 質問スレ Part1

レス数が1000を超えています。これ以上書き込みはできません。
2012/02/06(月) 22:53:46.88
AccessのVBAに関する質問スレです

★1 質問テンプレ(雛形)は用意しませんが、OSとAccessのバージョンは必ず書きましょう。

★2 AccessのVBA以外の部分に関する質問はNGです。
   但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。

★3 AccessのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。

 VBAとは、『Visual Basic for Application』の略で
  Application
  ├Workbooks
  |└Workbook
  |  ├Worksheets
  |  |└Worksheet
 というApplication以下のオブジェクトを、VB言語で操作するものを指します。
 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。

★4 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

★5 わからなければとりあえず「マクロの記録」(Alt, T, M, R)

関連スレ
Excel VBA 質問スレ Part23
http://toro.2ch.net/test/read.cgi/tech/1327763113/l50
2018/08/30(木) 14:29:11.04ID:4drhoSMA
>>937
acForm=2なので、acFormじゃなく直接2を指定してみると上手く行くかも

DoCmd.Close 2, "フォーム名"
↑でやってみて
2018/08/30(木) 16:02:05.01ID:onaqxfsR
>>938さん、939さん
ありがとうございます。
939さんの方法でいけました。
ありがとうございますm(_ _)m
番号で指定する方法があったのですね。
感謝です。
2018/08/30(木) 23:00:19.83ID:NGm4WU4A
Access.AcObjectType.acForm が 2
2018/09/13(木) 01:52:34.58ID:iAlG4Fvk
アホな質問ですまん。
クエリの中でクエリを複数使うクエリを作成したんだけど、これをSQLに書き直すときにエイリアスを使いたいんだけど、クエリに対するエイリアスは使えるのかな?テーブルだけかな?
実験した感じではダメそうなんだけど、どうですか?
943デフォルトの名無しさん
垢版 |
2018/09/13(木) 03:14:29.75ID:liq2Qruq
>>942
普通に使えるはずだが
AS付けてないとか
944デフォルトの名無しさん
垢版 |
2018/09/13(木) 03:15:45.30ID:liq2Qruq
DAO経由じゃないとだめだったかも
2018/09/13(木) 12:56:01.88ID:C2gZ+hmS
>>942
普通に出来るはずだぞ
どういう状況でダメになってるんだ?
2018/09/13(木) 13:07:05.55ID:C2gZ+hmS
>>942
サブクエリの話だよな?
自作ツールで確認したがASで普通にできてたぞ
2018/09/14(金) 08:17:56.50ID:JMy0VfN7
たぶん、サブクエリじゃなくて作成済みのクエリをSQL内部のFROM句やJOIN句にテーブルのように使う時にエイリアスを使いたいという話だと思うんだが、それでも普通に使えると思う。
948942
垢版 |
2018/09/14(金) 11:04:12.59ID:cjIZJ/+q
みんな、ごめん。使えました。
おいらがSQLビューで書くときに、どっか間違えたみたい。
クエリのエイリアスも使えるし、サブクエリでネストも出来るし、accessって凄いね。糞長いSQLを書きたくなるね。
問題は余計な括弧がいっぱいくっつくところだよね。
2018/09/14(金) 12:54:33.03ID:cjIZJ/+q
またまたくだらない質問です.
UPDATEで苦労していますが,https://www.ipentec.com/document/sql-multi-record-update に書いてある
update working set value=price from products where working.name = products.name
だとエラーが出ます.試行錯誤して成功したのは
UPDATE working, products SET working.[value] = [products].[price]
WHERE (((working.name)=[products].[name]));
でした.UPDATEの述語に参照するだけのproductテーブルが書いてあるのが不可解ですね.
なんで,こんな変な書き方をするのか分かる人いますか?
950デフォルトの名無しさん
垢版 |
2018/09/14(金) 13:41:49.29ID:5xDSXwp0
fromが無いから
2018/09/14(金) 15:43:10.38ID:cjIZJ/+q
>>950
FROMを書きました.下のようにしました.でも,演算子がありませんと怒られます.

UPDATE [working],[products]
SET [working].[value] = [products].[price]
FROM [products]
WHERE ((([working].[name])=[products].[name]));
2018/09/14(金) 15:43:55.27ID:cjIZJ/+q
これも同じように怒られます.

UPDATE [working]
SET [working].[value] = [products].[price]
FROM [products]
WHERE ((([working].[name])=[products].[name]));
2018/09/14(金) 18:33:15.77ID:JMy0VfN7
それだと[products].[price]の後が何だか分からん。

[products].[price]を求めるSQLをそのまま書くかJOIN使った方が良い。

UPDATE [working]
SET [working].[value] = (SELECT [products].[price]
FROM [products]
WHERE ((([working].[name])=[products].[name])));

UPDATE [working]
INNER JOIN [products]
ON [working].[name]=[products].[name]
SET [working].[value] = [products].[price];

スマホからテキトーに書いてるので間違ってたらスマン。
2018/09/14(金) 20:41:59.46ID:cjIZJ/+q
>>953
上のは,更新可能なクエリであることが必要です と怒られました.
下のは成功です.ありがとうございます.

FROMを記載したコードでは出来ないというのが興味深いですね.
クエリーと一般のSQLではコードを処理する方法がかが違うんですかね?
聞きかじりですが,オプティマイザとか実行計画とか言う奴ですかね?

次はクエリを参照するUPDATEを書かないといけないのですが,テーブルならOKでクエリでは怒られるんですよね.
http://www.10days.org/diary/20090705.htmlとかその他いろいろヒットしますが,VBAからSQLを発行したら出来るんですかね?
とりあえず実験します.
2018/09/14(金) 21:06:57.90ID:wdFP/Mir
>>951
横入だがAccessがUPDATEでのFROMを
サポートしていないという意味での「FROMがないから」
じゃないの?
2018/09/14(金) 21:11:41.20ID:wdFP/Mir
>>954
確かAccessはUPDATEでFROMは使えないぞ
2018/09/14(金) 21:32:20.19ID:cjIZJ/+q
>>956
マジすか?ありがとうございます.
SQLって方言が多いんですね.
2018/09/15(土) 02:34:58.26ID:7Yaecm93
UPDATE文は特に方言が多いんだよ
959デフォルトの名無しさん
垢版 |
2018/09/15(土) 11:35:48.46ID:AVfR6YnT
>>954
更新クエリに設定しろ
2018/09/16(日) 09:41:31.06ID:o5IUt/R9
昔はオラクルとかに直接更新クエリ実行しようとして固まってたなあ、、、
ハード性能上がった今でも固まるのかね?
2018/09/16(日) 16:10:48.91ID:qqKBC7cw
リンクテーブルに対して何かするのを「直接」とは言わないからな?
962デフォルトの名無しさん
垢版 |
2018/09/16(日) 18:15:18.31ID:HF0YmRsW
アスペですね
2018/09/16(日) 19:05:43.00ID:8jdJAOdP
それ以前に、ハード性能で固まったことなんてないんだが
単に遅いだけで固まったって言ってるのかね
2018/09/16(日) 19:27:12.80ID:yPlmt9/8
>>963
初代ペンティアムマシンでAccess97で動かした事無い人かな
2018/09/16(日) 20:39:37.56ID:fj0Djq38
>>964
それは何自慢?俺は20年前からACCESS やってるベテランだぞすごいだろう?
2018/09/16(日) 22:05:06.06ID:8jdJAOdP
>>964
だからそれは単に遅いだけだろうと言ってるんだが

ついでに言えば、ACCESSで外部DBMS使うときに一番気を付けるべきは回線の速さだがな
その環境でも、100MのLANならそれなりに快適だったわ
967デフォルトの名無しさん
垢版 |
2018/09/17(月) 18:07:40.72ID:l9KryutO
486DXでAccess95とか動いたっけ
2018/09/17(月) 19:52:07.58ID:3YPJfo/c
多分動いたと思う。
ペンティアム90では確実に動いた。
当時486DX100マシンにOffice入れてたと思うんだが、そのマシンでAccess動かしたかどうかで記憶が無い。
2018/09/18(火) 01:29:37.70ID:Bq/PEIsn
Windows95が動いてたからOFFICEの95も動いてたと思う
970デフォルトの名無しさん
垢版 |
2018/09/18(火) 19:14:26.16ID:32W6TMTL
マハーポーシャの思い出しかないわ
2018/09/18(火) 21:06:59.49ID:Y+CFjjh5
>>970
出張でアキバ行ったらチラシ貰った。あんな事件起こすなんて夢にも思わず、スペックのわりに安いじゃんなんて思ってたわ。
2018/10/15(月) 12:32:08.29ID:UJZpBNX3
DAOでmdbに接続して、フォーム上のコントロールボタンのCaptionを大量に一括変更したいんだけど、できるかな?
データーベースオブジェクトのメンバーのリストを眺めてもフォーム関連がないので、だめなのかな?
973デフォルトの名無しさん
垢版 |
2018/10/15(月) 13:28:15.42ID:L3fZFxj5
>>972
COMオブジェクト生成で
Application→Forms→Form→Controls→Control
ってたどる感じかな
最近どうなってるか知らん
https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2003/aa663065(v=office.11)
2018/10/15(月) 19:00:25.28ID:UJZpBNX3
リンクが死んでいて読めません。
ネット探しても情報が見つかりませんね。
パッチを当てるときに便利な気がするのですが…
私が知ってるパッチはモジュールやフォームを入れ替えるものばかりですが、一部編集みたいなことが出来ると便利な気がしますがどうでしょうか。
コードを1行書き換えとか出来ると便利な気がしますが、リスクもありそうですね。
975デフォルトの名無しさん
垢版 |
2018/10/15(月) 23:32:47.15ID:L3fZFxj5
>>974
MSのURLは2chのリンク表示と相性が悪いからクリック
カッコまで全部コピーしてブラウザに貼りつけないと付けると飛べるぞ

ラベルを外部リソースにしてフォーム側で呼び出すのが正攻法な気がするが
多言語対応とか
2018/10/16(火) 07:11:10.97ID:o1jBtF96
DAO で接続じゃなぁ
2018/10/16(火) 19:50:00.82ID:nNSV5Ror
接続は別になんでもいいです。
2018/10/22(月) 12:14:49.52ID:9BvHUkZ3
マクロの編集をVBAで出来ませんかね?バージョンアップの際にカスタマイズ済のAutokesyを再現したいもので。
979デフォルトの名無しさん
垢版 |
2018/10/23(火) 14:44:19.48ID:qJAZHzzr
>>978
出来る、何年か前に前の勤め先でやったわ
あまり覚えてないが、VBEにアクセスする方法があって
それで出来たと思う

ググりながらやった覚えがあるからググれば
何かヒントが出てくると思う
2018/10/23(火) 17:12:08.69ID:D922t3yz
>>979
saveastextですね。あれ、最近のoffceだとゴミコードが1行あって、そのままでは読み込めないんですよね。
2018/12/04(火) 21:13:39.22ID:TBSeaia1
業務用ソフトでどこからもGOTOされていないラベルがあるんだけど、作った奴は馬鹿なのかな?
982デフォルトの名無しさん
垢版 |
2018/12/05(水) 13:19:49.01ID:2sSegHBZ
いくらでもある
2018/12/05(水) 14:21:48.59ID:8B064Egy
そうですか…
宣言だけして使わない変数や、空のプロシジャー、その空のプロシジャーを呼び出す無意味なプロシジャー、戻り値を変数に格納だけしてなにも利用しない関数とか意味不明なことが多くてPGの世界ってカオスなんだな。
リーダブルコードとかだと絶対に怒られるようなことが目白押しだわ。
984デフォルトの名無しさん
垢版 |
2018/12/05(水) 14:51:15.50ID:2sSegHBZ
理想と現実は違う
2018/12/05(水) 15:58:58.90ID:Tdi7Zg1z
そう、動きゃいいんだから
見た目なんか気にしてたら絶対に間に合わない
2018/12/05(水) 17:29:29.08ID:8B064Egy
なるほど…
カスタマイズしている方からすると添削をしているよう気分になりますね。
稼働しているコードの何倍もあるコメントアウトされた過去コードとかあって、正にべからず集みたいなもんですね。
987デフォルトの名無しさん
垢版 |
2018/12/05(水) 17:34:49.19ID:kX9gokKe
実際問題
中身はgdgd
https://www.filemaker.com/jp/solutions/customers/stories/shinshu-ham.html
2018/12/07(金) 12:18:56.42ID:RZ2R69DU
>>987
FileMakerはスクリプト(マクロ)しか無いからな
2018/12/07(金) 18:12:05.49ID:Uga2tmpi
>>988
両方そなわってたら、Accessを潰せてたのにね。
2018/12/10(月) 21:20:32.74ID:WdAp4299
マクロのAutokeysが急にキーを取りこぼすようになった。F1を押すとプロシジャーの実行をしてくれないでHELPが立ち上がる。
F2等をおしても無反応になってしまった。officeのアップデートが原因かな?WIN7とAccess2016の組み合わせなんだけど分かる人いますか?
991デフォルトの名無しさん
垢版 |
2018/12/11(火) 13:04:58.28ID:eQLW3H68
Access最近アプデしてないな
古いのまだ使ってる
2018/12/11(火) 18:13:25.39ID:fkccCnsx
>>991
2013使ってるならアプデする意味がほぼないし
993デフォルトの名無しさん
垢版 |
2018/12/11(火) 19:29:38.35ID:cP19L9C3
20年くらい前はAccessファイルはいつ壊れるかわからない。
って言われてたけど、いまってどうなの?
2018/12/11(火) 21:03:35.30ID:OP7GyNdd
>>993
今は壊れることはなくなったよ。
2018/12/11(火) 21:35:29.03ID:kFp89+PJ
いつの間にかデータアクセスページなくなったの?
2018/12/11(火) 23:24:33.12ID:ADs7qBab
>>993
同じだと思うよ。いつもは動くプロシジャーが変な挙動するようになってそのうち、フォームが全部消えちゃうとか何度もあった。というかこの1週間でもあったよ。本当にポンコツだよ。
とはいえ、ここまでカスタマイズが自由に出来るDBって他に無いような気がするけど、どうなんだろう。
2018/12/12(水) 00:19:48.14ID:GF6Qf3Td
WindowsFormの不自由さにはびっくりしたな
998デフォルトの名無しさん
垢版 |
2018/12/12(水) 10:51:22.24ID:I3Mp/+TW
いまはIMEの辞書が良く壊れるイメージ
999デフォルトの名無しさん
垢版 |
2018/12/12(水) 10:53:08.65ID:I3Mp/+TW
>>996
小規模のシステムでも
テーブル用のmdbとフォーム用のmdbを分けて
リンクで管理すると壊れるケースはかなり減った
1000デフォルトの名無しさん
垢版 |
2018/12/12(水) 10:53:27.51ID:I3Mp/+TW
次スレはよ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 2500日 11時間 59分 41秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況