Access VBA 質問スレ Part1

レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん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

929デフォルトの名無しさん2018/08/11(土) 16:51:32.08ID:/3QviRkj
質問です。
分割フォームの
分割フォームデータシートプロパティを
VBAから操作できる方法がありますでしょうか?
ご教授お願い致します。

930デフォルトの名無しさん2018/08/11(土) 18:04:27.51ID:MwiIaP9n
具体的なプロパティもわからんしお休みなのでパソコンも手元にないけど検索したらsplitformsize のvba コードがあるから何らかの操作は出来るんでないの?お盆モードの適当コメントですまぬ。

9319292018/08/11(土) 18:45:39.43ID:/3QviRkj
>>930さん

ありがとうございます!
splitform vbaで調べていたら見つかりました!!
うれしいです!

Private Sub コマンド11_Click()

If Forms("test").SplitFormDatasheet = acDatasheetReadOnly Then
Forms("test").SplitFormDatasheet = acDatasheetAllowEdits
Forms("test").コマンド11.Caption = "過去のデータを編集不可にします。"
Else
Forms("test").SplitFormDatasheet = acDatasheetReadOnly
Forms("test").コマンド11.Caption = "過去のデータを編集可能にします。"
End If

End Sub

ありがとうございます!!

932デフォルトの名無しさん2018/08/23(木) 22:05:56.98ID:VOAIsull
サイズの限界まで巨大化しているフォームを改造して、様々なコントロール類をタブコントロール上に配置しようと考えています。
元のフォーム上のコントロール類をコピーしてタブコントロール上にペーストしたまでは良かったのですが、イベントプロシジャーがごっそり抜け落ちています。コマンドボタンを押してもなにも始まらない状態です。
イベントプロシジャーを保持したままコントロールをコピペする方法はありますか?

933デフォルトの名無しさん2018/08/23(木) 22:21:39.28ID:VOAIsull

934デフォルトの名無しさん2018/08/24(金) 06:25:14.72ID:zBeCnEZ1
>>933
良かったね。
俺はVBA コードを頑張ってコピーしてるのでよかったら解説下さい。えーごわからないので。翻訳機能?あの人たちとは話が合わん!

935デフォルトの名無しさん2018/08/24(金) 09:58:42.20ID:IIPiSmN7
Accessの本はいろいろ買ったけど、良書だなあと感心したのはほとんどが未翻訳の洋書でした。
谷尻、緒方、葛西も和書としては悪くないのですが、洋書と比較すれば月とスッポンです。
技術書の英語は辞書とgoogle翻訳でだいたいなんとかなりますよ。
たまに文学的表現があってイラッとしますけど、だいたいが簡単明瞭です。

936デフォルトの名無しさん2018/08/24(金) 10:46:31.53ID:jVqNqoKW
すいません質問です。オフィス365です。
手動で空のサブレポートをレポートに配置しました。これをVbaコード でコピーする方法を教えてくださいませ。

937デフォルトの名無しさん2018/08/30(木) 13:16:49.85ID:onaqxfsR
すみません、質問させてください。
ExcelからAccessの特定のフォーム
を閉じるとき、
DoCmd.Close acForm, "フォーム名"
で入れると、おそらくacFormがAccessVBAの引数のためか、
エラーが出てしまいます。
何か解決方法があればご教授よろしくお願いします。

938デフォルトの名無しさん2018/08/30(木) 13:20:53.05ID:S/vwwZyF
アプリが違うからOLEとかActiveXObject使うんでは

939デフォルトの名無しさん2018/08/30(木) 14:29:11.04ID:4drhoSMA
>>937
acForm=2なので、acFormじゃなく直接2を指定してみると上手く行くかも

DoCmd.Close 2, "フォーム名"
↑でやってみて

940デフォルトの名無しさん2018/08/30(木) 16:02:05.01ID:onaqxfsR
>>938さん、939さん
ありがとうございます。
939さんの方法でいけました。
ありがとうございますm(_ _)m
番号で指定する方法があったのですね。
感謝です。

941デフォルトの名無しさん2018/08/30(木) 23:00:19.83ID:NGm4WU4A
Access.AcObjectType.acForm が 2

942デフォルトの名無しさん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経由じゃないとだめだったかも

945デフォルトの名無しさん2018/09/13(木) 12:56:01.88ID:C2gZ+hmS
>>942
普通に出来るはずだぞ
どういう状況でダメになってるんだ?

946デフォルトの名無しさん2018/09/13(木) 13:07:05.55ID:C2gZ+hmS
>>942
サブクエリの話だよな?
自作ツールで確認したがASで普通にできてたぞ

947デフォルトの名無しさん2018/09/14(金) 08:17:56.50ID:JMy0VfN7
たぶん、サブクエリじゃなくて作成済みのクエリをSQL内部のFROM句やJOIN句にテーブルのように使う時にエイリアスを使いたいという話だと思うんだが、それでも普通に使えると思う。

9489422018/09/14(金) 11:04:12.59ID:cjIZJ/+q
みんな、ごめん。使えました。
おいらがSQLビューで書くときに、どっか間違えたみたい。
クエリのエイリアスも使えるし、サブクエリでネストも出来るし、accessって凄いね。糞長いSQLを書きたくなるね。
問題は余計な括弧がいっぱいくっつくところだよね。

949デフォルトの名無しさん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が無いから

951デフォルトの名無しさん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]));

952デフォルトの名無しさん2018/09/14(金) 15:43:55.27ID:cjIZJ/+q
これも同じように怒られます.

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

953デフォルトの名無しさん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];

スマホからテキトーに書いてるので間違ってたらスマン。

954デフォルトの名無しさん2018/09/14(金) 20:41:59.46ID:cjIZJ/+q
>>953
上のは,更新可能なクエリであることが必要です と怒られました.
下のは成功です.ありがとうございます.

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

次はクエリを参照するUPDATEを書かないといけないのですが,テーブルならOKでクエリでは怒られるんですよね.
http://www.10days.org/diary/20090705.htmlとかその他いろいろヒットしますが,VBAからSQLを発行したら出来るんですかね?
とりあえず実験します.

955デフォルトの名無しさん2018/09/14(金) 21:06:57.90ID:wdFP/Mir
>>951
横入だがAccessがUPDATEでのFROMを
サポートしていないという意味での「FROMがないから」
じゃないの?

956デフォルトの名無しさん2018/09/14(金) 21:11:41.20ID:wdFP/Mir
>>954
確かAccessはUPDATEでFROMは使えないぞ

957デフォルトの名無しさん2018/09/14(金) 21:32:20.19ID:cjIZJ/+q
>>956
マジすか?ありがとうございます.
SQLって方言が多いんですね.

958デフォルトの名無しさん2018/09/15(土) 02:34:58.26ID:7Yaecm93
UPDATE文は特に方言が多いんだよ

959デフォルトの名無しさん2018/09/15(土) 11:35:48.46ID:AVfR6YnT
>>954
更新クエリに設定しろ

960デフォルトの名無しさん2018/09/16(日) 09:41:31.06ID:o5IUt/R9
昔はオラクルとかに直接更新クエリ実行しようとして固まってたなあ、、、
ハード性能上がった今でも固まるのかね?

961デフォルトの名無しさん2018/09/16(日) 16:10:48.91ID:qqKBC7cw
リンクテーブルに対して何かするのを「直接」とは言わないからな?

962デフォルトの名無しさん2018/09/16(日) 18:15:18.31ID:HF0YmRsW
アスペですね

963デフォルトの名無しさん2018/09/16(日) 19:05:43.00ID:8jdJAOdP
それ以前に、ハード性能で固まったことなんてないんだが
単に遅いだけで固まったって言ってるのかね

964デフォルトの名無しさん2018/09/16(日) 19:27:12.80ID:yPlmt9/8
>>963
初代ペンティアムマシンでAccess97で動かした事無い人かな

965デフォルトの名無しさん2018/09/16(日) 20:39:37.56ID:fj0Djq38
>>964
それは何自慢?俺は20年前からACCESS やってるベテランだぞすごいだろう?

966デフォルトの名無しさん2018/09/16(日) 22:05:06.06ID:8jdJAOdP
>>964
だからそれは単に遅いだけだろうと言ってるんだが

ついでに言えば、ACCESSで外部DBMS使うときに一番気を付けるべきは回線の速さだがな
その環境でも、100MのLANならそれなりに快適だったわ

967デフォルトの名無しさん2018/09/17(月) 18:07:40.72ID:l9KryutO
486DXでAccess95とか動いたっけ

968デフォルトの名無しさん2018/09/17(月) 19:52:07.58ID:3YPJfo/c
多分動いたと思う。
ペンティアム90では確実に動いた。
当時486DX100マシンにOffice入れてたと思うんだが、そのマシンでAccess動かしたかどうかで記憶が無い。

969デフォルトの名無しさん2018/09/18(火) 01:29:37.70ID:Bq/PEIsn
Windows95が動いてたからOFFICEの95も動いてたと思う

970デフォルトの名無しさん2018/09/18(火) 19:14:26.16ID:32W6TMTL
マハーポーシャの思い出しかないわ

971デフォルトの名無しさん2018/09/18(火) 21:06:59.49ID:Y+CFjjh5
>>970
出張でアキバ行ったらチラシ貰った。あんな事件起こすなんて夢にも思わず、スペックのわりに安いじゃんなんて思ってたわ。

972デフォルトの名無しさん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)

974デフォルトの名無しさん2018/10/15(月) 19:00:25.28ID:UJZpBNX3
リンクが死んでいて読めません。
ネット探しても情報が見つかりませんね。
パッチを当てるときに便利な気がするのですが…
私が知ってるパッチはモジュールやフォームを入れ替えるものばかりですが、一部編集みたいなことが出来ると便利な気がしますがどうでしょうか。
コードを1行書き換えとか出来ると便利な気がしますが、リスクもありそうですね。

975デフォルトの名無しさん2018/10/15(月) 23:32:47.15ID:L3fZFxj5
>>974
MSのURLは2chのリンク表示と相性が悪いからクリック
カッコまで全部コピーしてブラウザに貼りつけないと付けると飛べるぞ

ラベルを外部リソースにしてフォーム側で呼び出すのが正攻法な気がするが
多言語対応とか

976デフォルトの名無しさん2018/10/16(火) 07:11:10.97ID:o1jBtF96
DAO で接続じゃなぁ

977デフォルトの名無しさん2018/10/16(火) 19:50:00.82ID:nNSV5Ror
接続は別になんでもいいです。

978デフォルトの名無しさん2018/10/22(月) 12:14:49.52ID:9BvHUkZ3
マクロの編集をVBAで出来ませんかね?バージョンアップの際にカスタマイズ済のAutokesyを再現したいもので。

979デフォルトの名無しさん2018/10/23(火) 14:44:19.48ID:qJAZHzzr
>>978
出来る、何年か前に前の勤め先でやったわ
あまり覚えてないが、VBEにアクセスする方法があって
それで出来たと思う

ググりながらやった覚えがあるからググれば
何かヒントが出てくると思う

新着レスの表示
レス数が950を超えています。1000を超えると書き込みができなくなります。
レスを投稿する