Access VBA 質問スレ Part1

■ このスレッドは過去ログ倉庫に格納されています
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
2015/10/17(土) 19:12:33.45ID:ee0s4Mox
>>434
俺は使ってるぞ!
ちょっと癖はあるがAccess最強伝説は不滅さ!
ただし小さいシステムに限る。。。。
2015/10/18(日) 06:40:13.96ID:262pAAoP
MSDEとかSQL Serverと組み合わせれば少しはレベルが上がりますかね?
2015/10/18(日) 07:25:07.68ID:cUqtHutT
>>436
いまそこまでするならWebで使えるようなスキルを身につけてしまう事も考えちゃいますね。。。。phpとかいい感じに枯れてきてるよう思います
2015/10/18(日) 11:01:28.83ID:vJDQVwJW
access + django 試したら意外といけた
2015/10/18(日) 16:38:41.44ID:cUqtHutT
>>438
少しだけkwsk
Pythonのフレームワークだよね?
2015/10/18(日) 17:07:54.47ID:Vpke6UWK
今からweb連携て
php覚える前に俺のいろいろが枯れてるのを何とかしてくれ
2015/10/18(日) 17:18:09.60ID:81sora9Q
ウェブアプリよりネイティブアプリだよね
2015/10/18(日) 18:00:30.34ID:cUqtHutT
>>441
いやーWebでしょう。
限られた環境ならネイティブアプリでもいいんでしょうけど。。
どこまで広げるかによるけどね。
入力はネイティブ、閲覧はWebという感じに住み分けるのも
いいのかもしれない。
2015/10/18(日) 18:19:24.53ID:81sora9Q
>>442
>入力はネイティブ、閲覧はWeb

そうそう
それそれ
444デフォルトの名無しさん
垢版 |
2015/10/23(金) 20:11:11.99ID:YF5Y/5+5
カラムの中で、空白の場合は、空白でない上のデータもってくるってクエリを作りたいのですが、どのようにすればできますか?
Excelでは可能なのですが、百万件以上のテーブルのためできません。
2015/10/24(土) 04:28:16.14ID:dOe1BR+K
>>444
原則としてRDBのテーブルの行に、上とか下とか順序はないんだが

頑張ればSQL(クエリ)だけで出来なくもないけど、簡単なVBAマクロ作って流せばいいんじゃね
2015/10/24(土) 12:14:04.67ID:niXzNvfm
ソート後の順序で真上のレコードっていう条件が必要だろう
2015/10/24(土) 17:03:31.97ID:XMDiNwuL
>>443
マイクロソフトさんこんな需要がありますよー
アクセスこれからも面倒見てね
2015/10/24(土) 18:35:34.63ID:niXzNvfm
FileMakerでも出来ること
2015/10/24(土) 20:02:10.36ID:pancXijC
>>447
MySQLに接続して閲覧側はウェブでAccess側は入出力側で実現。
でも、MSはAccessはいずれ亡くすと思うよ。年々需要が減ってる
2015/10/24(土) 21:31:19.29ID:XMDiNwuL
LightSwitchってその後どうなったのかな?
2015/10/25(日) 21:29:15.26ID:3h+48Nx8
>>450
殆ど消えたも同然の状態。
2015/10/26(月) 20:56:01.66ID:GrJVc3nW
フォームやレポートの作成が簡単で助かってるんだけど、Accessに匹敵するほどお手軽簡単な開発環境あるのですか?
2015/10/27(火) 02:06:01.33ID:P3tmhbiJ
ない
2015/10/27(火) 06:08:45.26ID:aDjshOL6
だから無くなると困るんだよなあ
2015/10/27(火) 08:16:54.33ID:O948v5f3
Filemakerとどっちがいいの
わりとまじで質問
2015/10/27(火) 09:01:30.38ID:NzV7E0Ep
どっちもどっちだろうな。
バックエンドにもよるだろうけど、いつも使ってる方とか得意な方で開発するだろ。
指定があるときはそれに従うだけだから比べなくていい。
FileMakerはiPadなんかで使えるっていうのがウリみたいだけど。
2015/10/27(火) 22:44:31.91ID:UL6Q2dpz
Accessのほうが情報は手に入れやすいんじゃない?
2015/10/28(水) 18:34:43.87ID:tdXqh+ol
それは言える
2015/10/28(水) 22:29:42.64ID:mlOdASO2
結局のところAccessが担当してた部分ってETLツールに置き換えられてきてるってことかな?入力は除いてだけど。
2015/10/29(木) 10:20:50.66ID:olmk/SiV
何が結局のところだよ
ETL言いたいだけちゃうんかと
そもそもAccessでビッグデータなんか扱えくぇrちゅいおpsdfg
2015/10/29(木) 23:09:13.90ID:yeCeSffg
>>459
h?
2015/10/29(木) 23:46:52.13ID:+ZsDxL5P
Forguncyに流れちゃった人いる?
2015/10/29(木) 23:50:41.92ID:+ZsDxL5P
>>460
人それぞれだと思うが、おいらの使い方ならビックじゃないデータでもETLは結構いい選択肢だと思たあるよ
定形業務にはいいんじゃないか?
464デフォルトの名無しさん
垢版 |
2015/10/30(金) 15:53:29.13ID:ijicNSnW
あるレポートが、あるクエリを元に作成されていて、そのクエリのレコード毎に、レポートをPDF出力し、出力先はまた別のクエリのフルパス文字内との元クエリデータとの一致で決めたいのですが、ご教示いただけないでしょうか?
2015/10/30(金) 15:57:13.83ID:o6oPjLK7
>>464
どこまで出来てて何がわからんのだ?
466デフォルトの名無しさん
垢版 |
2015/10/30(金) 19:35:33.54ID:Y9M2GM2T
>>465
レポートをレコード毎にPDF出力して、クエリにあるパスに保存するところ
2015/10/31(土) 02:10:26.31ID:CVsb3S4r
どこまで出来てるんだ
2015/10/31(土) 03:08:21.25ID:CVsb3S4r
>>466
「MS-Accessのレポートをページ毎にPDF化する」でググって一番上のページ
そこみて、わからないとこは自分で勉強してくれ
2015/11/01(日) 03:17:03.71ID:MNp+RCAH
>>466
あのさ、ここはお前の願望を叶えるスレじゃないの。
わからない所を聞く為のスレなわけ。

お前のそれは1機能まるごと作ってここにコード貼れって命令してるに過ぎない。自分でコードもはらずにね。
470デフォルトの名無しさん
垢版 |
2015/11/04(水) 20:19:18.57ID:jMb6JFTC
VBAでSELECT文を作って、Formに渡してRequeryして結果を表示しています。
テキストボックスに表示するテキストデータが途中で切れているという現象がおきました。
別のフォームで同じデータを同じようにテキストボックスに表示させると、全部のデータがきちんと表示されます。
スクロールとかではありません。文字列がぶつっ!と切れて途中までしか表示されないのです。

この現象の原因とかわかる人いますでしょうか?
2015/11/04(水) 21:27:15.64ID:oSFsMrp6
>>470
なぞなぞかよっ!w
テキストボックスのプロパティを良く見た?
2015/11/05(木) 11:16:36.84ID:AOwzRWVn
>>470
そおテキストボックスどっかからコピペしてきたと見た
473デフォルトの名無しさん
垢版 |
2015/11/05(木) 19:21:36.55ID:zgwRgbI3
>>471,>>472
表示ができているテキストボックスと同じプロパティです。
でも、1000件データのうち、1つだけ200文字くらいの文字列なんですが、100文字くらいの
ところでブツッ!って切れてるんです。
他のデータで同じくらいのサイズの文字列は問題なく表示されています。
SQLが悪いのかと思って、Debug.PrintしてSQLを取り出して、クエリを実行してみると、ちゃんと文字列が全部表示されています。
文字コードかなんかでしょうか?
でも、同じ文字列を別のフォームにあるテキストボックスで表示可能なんです。(ToT)
2015/11/05(木) 19:22:59.62ID:I4yBwlZm
>>473
同じ方法で出してるの?
ヌル文字ってVBAは関係なかったっけ?
475デフォルトの名無しさん
垢版 |
2015/11/05(木) 19:44:01.06ID:zgwRgbI3
SQLは、違います。
あぁ・・・・その実験やってなかった・・・。
やってから報告します・・・。
2015/11/05(木) 19:53:07.35ID:tNVJsXcL
VBAの文字列はヌル文字ではターミネートされない
改行とか入って、見えなくなってるだけとかじゃないのか
2015/11/06(金) 09:46:24.95ID:rpsHbqpr
union

union all
にしたら現象がでなくなりました。
(ヽ´ω`)でもクエリデザインから実行するとunionでも普通に表示されるんだよなぁ、、、
2015/11/06(金) 10:26:38.77ID:iLvLfKdX
>>477
重複業があるんじゃないの?
目視で見てるのは違う行とかないよね。
479デフォルトの名無しさん
垢版 |
2015/11/06(金) 12:39:06.37ID:F7EIvq3A
test
2015/11/06(金) 17:29:52.25ID:FW411vzH
>>478
質疑回答IDも一致してて、単純なSELECTぶんなので、、
超レアなバグなのかなと
2015/11/06(金) 19:16:39.01ID:hUa1dWCf
メモ型あたりでunionの同一行判定でなんかあるかもしれんけど
どう考えても>>480の勘違いの可能性の方か高いと思うぞ

まあACCESSのバージョンもテーブルの種類もSQLもデータをどうやって表示してるかも書かんような奴の話は
聞くだけ無駄かもしれん
2015/11/06(金) 19:41:20.27ID:hUa1dWCf
メモ型ってgroup by 出来なかった気がしたのでちょっと調べた
どうも、TEXT型にキャストして判定するみたいだな
なので、255文字目までが同一のメモ型は同一と判定される

distinctで採択されるのがどっちの行かはわからんが
とりあえずメモ型の制限だからメモ型使って値操作するのが悪いと言う結論だな

個人的にはエラーにしてほしいところだし、昔はエラーになってた気がするんだが俺の気のせいだろうか
2015/11/06(金) 19:56:07.21ID:hUa1dWCf
あと、unionは単純なSQLとは言えんし
はなからunionしてるSQLとテーブルレイアウト出してればもっと解決早かっただろうに
全く同じ現象出てるって書いてるブログあるぞ
2015/11/07(土) 13:41:21.41ID:Lam93S6q
あのっ某所でAccessはフロントエンドのみの製品で
RDB自体はOS標準で使えますぜgff・・・
みたいな内容見たんだけど
本当なんです?
485デフォルトの名無しさん
垢版 |
2015/11/07(土) 16:11:16.86ID:rKOE1Rwz
yes
486デフォルトの名無しさん
垢版 |
2015/11/07(土) 17:29:39.50ID:D4Pma+c4
>>484
んだ。
だから、ExcelがあればVBAで組める人がいるなら、ぶっちゃけいらん。
487デフォルトの名無しさん
垢版 |
2015/11/07(土) 17:54:57.33ID:nFXrQ+Fm
OSに標準でついてるRDBってなんのこと??
2015/11/07(土) 18:34:51.46ID:eMujCaYk
RDBは付いてないでしょう
2015/11/07(土) 19:25:43.69ID:Lam93S6q
ちゅーかVBScriptからもいけるじゃん
後付けコンポーネントってわけでもなさそうだし
Officeいらないのかもしかして
490デフォルトの名無しさん
垢版 |
2015/11/07(土) 19:37:37.20ID:sBJO9RQ1
SQLサーバのこといってんの?
2015/11/07(土) 19:39:42.37ID:Lam93S6q
>>487-488
>Jetデータベースエンジンとは、Microsoft社が開発したリレーショナルデータベースエンジン。Microsoft Access用に開発されたもので、現在ではWindowsに統合され、様々な製品から利用されている。
だそうですよ
492デフォルトの名無しさん
垢版 |
2015/11/07(土) 19:47:42.23ID:sBJO9RQ1
>>491
トン
jetってAccess買わなくてもつかえるんだ。
ランタイムはしってたけど
2015/11/07(土) 20:47:46.88ID:nqO+al0X
windowsに統合されたjetの使い方はどうすれば?
494デフォルトの名無しさん
垢版 |
2015/11/07(土) 22:03:40.43ID:cyCg/fRc
レポートをレコードごとに、pdf出力したく
daoで以下のような感じで書いたんだが。
ファイルのフルパスが書いてある別クエリの中のレコードとレポートの項目が合致するレコードのフルパスにpdfを出力したいんだがどうしたらいいのかわからない。

Do Until rs.EOF
DoCmd.OpenReport 〜
DoCmd.OutputTo acOutputReport, , acFormatPDF, "ファイルパス.pdf"
DoCmd.Close acReport, レポート名
rs.MoveNext
Loop
2015/11/07(土) 22:57:08.01ID:uMO3Ng54
SQL書いてそれをレコードセットに入れたら?
2015/11/08(日) 02:11:48.41ID:WbD4bkmm
JETだけでDB組むとか何の拷問だよ
素直にAccess使え
2015/11/08(日) 12:15:44.95ID:GC9rkdcu
Pythonで書いても楽
498デフォルトの名無しさん
垢版 |
2015/11/08(日) 13:04:28.61ID:iWdr+l4l
で、Accessって
何に使えばいいの?
(´・ω・`)
2015/11/08(日) 14:01:11.47ID:LxG8VZT7
>>498
一人で完結する仕事で面倒臭くて外注する予算もなくてなことを
自動化するのに使ってるよ。だから保守も自分でしかできない(笑)
そんな仕事じゃないか?
500デフォルトの名無しさん
垢版 |
2015/11/08(日) 15:13:38.10ID:QfP+cajQ
社内の統計担当とかそんなポジションの人かな?
社内の簡単な統計ならほんと楽ちん。
Access使えるか使えないかでどえらい作業能力の差が生まれる。
2015/11/08(日) 18:18:56.29ID:dBATCu8V
m9 pgr
2015/11/10(火) 21:11:26.36ID:Ya5Yiifl
>>501
それは何?
2015/11/11(水) 13:15:07.58ID:vGX0No5x
むきゅー
ぷぎゃー
504sage
垢版 |
2015/11/11(水) 19:27:14.97ID:V8OM9GuG
access2013でフォームからの入力期間の金額を集計してレポート作成をしようとしています。
vbaでリボンにあるレポートボタンを押下した動作と同じコードは存在しますでしょうか。
2015/11/11(水) 20:31:20.16ID:RY0eiki2
マクロの操作を記録すれば出てくるでしょ
2015/11/11(水) 22:30:56.87ID:/+peIgnx
>>505
ACCESSにマクロの記録は無かったと思ったが
2013とかだと出来るようになってるのか?
2015/11/11(水) 22:51:22.82ID:oO+3Zy7C
無いと思うよ
2015/11/11(水) 22:55:33.44ID:51LqdR7k
vba レポートでくぐったがはやいよ。
2015/11/12(木) 04:28:05.37ID:MeI9ns/Z
>>505
は?馬鹿はいちいちスレに出張って来るなよww
何がマクロの操作を記録だ馬鹿が。
2015/11/12(木) 12:35:52.00ID:pHlRdfiq
普通にフォームと同じソースの「れぽーとほげ」を用意しておいて

DoCmd, OpenReport "れぽーとほげ", acViewPreview
ではダメな理由があるのかな? フォーム上でレポートに応用できるように画面設計
作り込むよりは専用のレポートで別制作しといたほうが何十倍も効率いいだろうにな
2015/11/12(木) 12:42:12.51ID:tbcgbggA
>>504
ちょっと出来ない事があるとVBAに頼るのはよくない。
Officeの使い方をもっと勉強してからVBAに手を出すべきだよ。

「パラメータクエリ」と「フォーム」で作ればなんとかなるかな。
というわけで、VBA必要ないので↑の2つのキーワードでggrks
512511
垢版 |
2015/11/12(木) 12:43:58.58ID:tbcgbggA
パラメータクエリとレポートでも作れるわ。
2015/11/12(木) 14:18:08.75ID:Cdboni3Z
フォームからfrom日付-to日付を入力

テーブルから購入日が対象範囲のデータ取得
テーブル構造は
シーケンスno.,氏名,購入品1,購入日1(購入日、購入品は6まで存在)

クロス集計にて月毎の金額を集計

レポートに出力

入力する日付によってフィールド数が可変なため、レポートの作成はしていないです。
vbaを使う必要がなく可変レポートが作成出来るならスルーして下さい
2015/11/12(木) 15:03:31.62ID:m1A4y0ZB
>>513
クエリ作っときゃいいんじゃないの?集計の。
フィールド数が可変とはなんぞ。
515511
垢版 |
2015/11/12(木) 16:03:58.58ID:tbcgbggA
>>513
テーブルの基本設計からやり直せ。
購入品と購入日が1〜6って無いと思います。
2015/11/12(木) 16:36:07.67ID:Cdboni3Z
>>515
くそなテーブルだと思ってますが自分が作ったテーブルではないので変更出来ません
517511
垢版 |
2015/11/12(木) 16:42:28.68ID:tbcgbggA
>>516
レポート用にテーブル作っちゃうことはできないの?
2015/11/12(木) 16:43:56.03ID:m1A4y0ZB
>>516
だからクエリ作れよ。
select id,1 as 区分,氏名,購入日1 as 購入日,購入品1 as 購入品
union
select id,2 as 区分,氏名,購入日2 as 購入日,購入品2 as 購入品
:
select id,6 as 区分,氏名,購入日6 as 購入日,購入品6 as 購入品
で、あとはそれに対して、fromToでフィルタ掛ければいいんでないの?
2015/11/12(木) 16:44:59.17ID:Cdboni3Z
>>514
入力した期間に応じて月が増減します
http://i.imgur.com/gnTtfzv.jpg

集計用のクエリは作成したのでリボンにあるレポートボタン同様に自動でリポート作成出来ないかと思ってます
2015/11/12(木) 16:47:06.72ID:m1A4y0ZB
>>519
帳票一枚に並べられる分の月数を元からつくっとけ。
2015/11/12(木) 17:02:23.22ID:Cdboni3Z
>>517
くえりをそのままレポートは難しそうだったのでテーブル化はしてあります
522デフォルトの名無しさん
垢版 |
2015/11/13(金) 20:45:36.98ID:7WxIZdrP
複雑になってるクエリが循環参照になってるようなのだが、読み解かずにテーブル作成して逃げようとしたらまたエラーなんとかならんかなー
2015/11/13(金) 20:51:20.52ID:etlrmpjh
>>519
クエリ出来てるなら、レポート作って保存しておけば好きなときに開くだけじゃん
2015/11/13(金) 22:14:56.04ID:fKrJSaVy
vbaでfilecopy(fsoも含む)でリムーバブルディスクにファイルをコピーするとハードウェアの安全な取り外しで
ファイルが使用中とかでできない。まぁ警告のダイアログで続行を押すと取り外せるんだけど、これやると
マイコンピュータからリムーバブルディスクが消えなかったりすることがある。
accessを終了すると普通に取り外せるんだけど、これをなんとかできないかなぁ。
2015/11/14(土) 00:03:58.17ID:Q8aVOdfz
>>524
Fsoでやるなら、
宣言で as new ...とかしない、最後にNothing入れとくを徹底したら無くなるんじゃないかな。
2015/11/14(土) 00:13:34.12ID:YdrOLc06
カレントフォルダとカレントドライブを明示的に
リムーバブルじゃないとこに設定してやれば行ける見たいな事を聞いたことがある
2015/11/14(土) 07:50:49.05ID:ZUqvxiq2
>>524
それ、使用したメソッドがファイル掴んだままで、開放してないからでしょ。ちゃんとプログラミングのイロハ身につけてたらやらない。

使ったら必ず開放する。VBAユーザはなぜか使いっぱなしが多い。
2015/11/14(土) 08:28:36.61ID:f21e1kim
.NETなんかだとマネージドは書いてもほぼ意味なかったりで使いっ放し推奨
529524
垢版 |
2015/11/14(土) 10:27:44.88ID:c/SicAL6
>>525、527
Dim objFileSys As Object
Set objFileSys = CreateObject("Scripting.FileSystemObject")
objFileSys.CopyFile 元ファイル, コピー先フォルダ & "\"
Set objFileSys = Nothing
copyfileの部分だけをかいつまんで書くとこんな感じだけど、解放の仕方を教えてくれないか。
リムーバブルディスクにコピーしたファイルは開けるし削除もできるからロックされた感じじゃないんだよね。
安全なハードウェアの取り外しだけがうまくいかないんだよ。
2015/11/14(土) 11:01:39.40ID:ajpWryyv
getdriveとか適当なのを実行してみたら?
カレントが移動するかも。
531524
垢版 |
2015/11/14(土) 12:52:04.15ID:c/SicAL6
>>526、530
ありがとう。この方法で解決した。
ChDrive "c" って1行追加しただけでOKでした。言われないと気付かなかったから助かりました。
他のみなさんもありがとう。
2015/12/06(日) 22:14:00.95ID:ZiGqGoDJ
重複した文言の多いcsvファイルの情報を読み込む時に、重複しない文言を蓄えたテーブルと、
文言テーブルのIDだけを入力したテーブルに分けて管理する事で容量を節約しようと思ってるんですが、
人が読める様にIDから元の文言を復元したテーブルを作りたいと思った時、
VBAで文言一つ一つ代入したテーブルを新たに作るしかないですかね?
2015/12/07(月) 01:08:03.51ID:D3MoacxB
IDでテーブル結合したview作るなりクエリにすりゃいいんじゃないの
どちらにしろVBAとか関係ないと思う
2015/12/10(木) 11:46:09.31ID:V//Y2NlP
質問です
Access2007ファイルのショートカットをデスクトップに作ろうと思って

https://www.moug.net/tech/acvba/0020025.html

ここを参考にパスとかだけ変えて作ったんだけど、ショートカットが作成されません
解決策教えてください
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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