Access VBA 質問スレ Part1
■ このスレッドは過去ログ倉庫に格納されています
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
>>447 MySQLに接続して閲覧側はウェブでAccess側は入出力側で実現。 でも、MSはAccessはいずれ亡くすと思うよ。年々需要が減ってる LightSwitchってその後どうなったのかな? フォームやレポートの作成が簡単で助かってるんだけど、Accessに匹敵するほどお手軽簡単な開発環境あるのですか? Filemakerとどっちがいいの わりとまじで質問 どっちもどっちだろうな。 バックエンドにもよるだろうけど、いつも使ってる方とか得意な方で開発するだろ。 指定があるときはそれに従うだけだから比べなくていい。 FileMakerはiPadなんかで使えるっていうのがウリみたいだけど。 Accessのほうが情報は手に入れやすいんじゃない? 結局のところAccessが担当してた部分ってETLツールに置き換えられてきてるってことかな?入力は除いてだけど。 何が結局のところだよ ETL言いたいだけちゃうんかと そもそもAccessでビッグデータなんか扱えくぇrちゅいおpsdfg >>460 人それぞれだと思うが、おいらの使い方ならビックじゃないデータでもETLは結構いい選択肢だと思たあるよ 定形業務にはいいんじゃないか? あるレポートが、あるクエリを元に作成されていて、そのクエリのレコード毎に、レポートをPDF出力し、出力先はまた別のクエリのフルパス文字内との元クエリデータとの一致で決めたいのですが、ご教示いただけないでしょうか? >>465 レポートをレコード毎にPDF出力して、クエリにあるパスに保存するところ >>466 「MS-Accessのレポートをページ毎にPDF化する」でググって一番上のページ そこみて、わからないとこは自分で勉強してくれ >>466 あのさ、ここはお前の願望を叶えるスレじゃないの。 わからない所を聞く為のスレなわけ。 お前のそれは1機能まるごと作ってここにコード貼れって命令してるに過ぎない。自分でコードもはらずにね。 VBAでSELECT文を作って、Formに渡してRequeryして結果を表示しています。 テキストボックスに表示するテキストデータが途中で切れているという現象がおきました。 別のフォームで同じデータを同じようにテキストボックスに表示させると、全部のデータがきちんと表示されます。 スクロールとかではありません。文字列がぶつっ!と切れて途中までしか表示されないのです。 この現象の原因とかわかる人いますでしょうか? >>470 なぞなぞかよっ!w テキストボックスのプロパティを良く見た? >>470 そおテキストボックスどっかからコピペしてきたと見た >>471 ,>>472 表示ができているテキストボックスと同じプロパティです。 でも、1000件データのうち、1つだけ200文字くらいの文字列なんですが、100文字くらいの ところでブツッ!って切れてるんです。 他のデータで同じくらいのサイズの文字列は問題なく表示されています。 SQLが悪いのかと思って、Debug.PrintしてSQLを取り出して、クエリを実行してみると、ちゃんと文字列が全部表示されています。 文字コードかなんかでしょうか? でも、同じ文字列を別のフォームにあるテキストボックスで表示可能なんです。(ToT) >>473 同じ方法で出してるの? ヌル文字ってVBAは関係なかったっけ? SQLは、違います。 あぁ・・・・その実験やってなかった・・・。 やってから報告します・・・。 VBAの文字列はヌル文字ではターミネートされない 改行とか入って、見えなくなってるだけとかじゃないのか union を union all にしたら現象がでなくなりました。 (ヽ´ω`)でもクエリデザインから実行するとunionでも普通に表示されるんだよなぁ、、、 >>477 重複業があるんじゃないの? 目視で見てるのは違う行とかないよね。 >>478 質疑回答IDも一致してて、単純なSELECTぶんなので、、 超レアなバグなのかなと メモ型あたりでunionの同一行判定でなんかあるかもしれんけど どう考えても>>480 の勘違いの可能性の方か高いと思うぞ まあACCESSのバージョンもテーブルの種類もSQLもデータをどうやって表示してるかも書かんような奴の話は 聞くだけ無駄かもしれん メモ型ってgroup by 出来なかった気がしたのでちょっと調べた どうも、TEXT型にキャストして判定するみたいだな なので、255文字目までが同一のメモ型は同一と判定される distinctで採択されるのがどっちの行かはわからんが とりあえずメモ型の制限だからメモ型使って値操作するのが悪いと言う結論だな 個人的にはエラーにしてほしいところだし、昔はエラーになってた気がするんだが俺の気のせいだろうか あと、unionは単純なSQLとは言えんし はなからunionしてるSQLとテーブルレイアウト出してればもっと解決早かっただろうに 全く同じ現象出てるって書いてるブログあるぞ あのっ某所でAccessはフロントエンドのみの製品で RDB自体はOS標準で使えますぜgff・・・ みたいな内容見たんだけど 本当なんです? >>484 んだ。 だから、ExcelがあればVBAで組める人がいるなら、ぶっちゃけいらん。 ちゅーかVBScriptからもいけるじゃん 後付けコンポーネントってわけでもなさそうだし Officeいらないのかもしかして >>487-488 >Jetデータベースエンジンとは、Microsoft社が開発したリレーショナルデータベースエンジン。Microsoft Access用に開発されたもので、現在ではWindowsに統合され、様々な製品から利用されている。 だそうですよ >>491 トン jetってAccess買わなくてもつかえるんだ。 ランタイムはしってたけど windowsに統合されたjetの使い方はどうすれば? レポートをレコードごとに、pdf出力したく daoで以下のような感じで書いたんだが。 ファイルのフルパスが書いてある別クエリの中のレコードとレポートの項目が合致するレコードのフルパスにpdfを出力したいんだがどうしたらいいのかわからない。 Do Until rs.EOF DoCmd.OpenReport 〜 DoCmd.OutputTo acOutputReport, , acFormatPDF, "ファイルパス.pdf" DoCmd.Close acReport, レポート名 rs.MoveNext Loop JETだけでDB組むとか何の拷問だよ 素直にAccess使え で、Accessって 何に使えばいいの? (´・ω・`) >>498 一人で完結する仕事で面倒臭くて外注する予算もなくてなことを 自動化するのに使ってるよ。だから保守も自分でしかできない(笑) そんな仕事じゃないか? 社内の統計担当とかそんなポジションの人かな? 社内の簡単な統計ならほんと楽ちん。 Access使えるか使えないかでどえらい作業能力の差が生まれる。 access2013でフォームからの入力期間の金額を集計してレポート作成をしようとしています。 vbaでリボンにあるレポートボタンを押下した動作と同じコードは存在しますでしょうか。 >>505 ACCESSにマクロの記録は無かったと思ったが 2013とかだと出来るようになってるのか? >>505 は?馬鹿はいちいちスレに出張って来るなよww 何がマクロの操作を記録だ馬鹿が。 普通にフォームと同じソースの「れぽーとほげ」を用意しておいて DoCmd, OpenReport "れぽーとほげ", acViewPreview ではダメな理由があるのかな? フォーム上でレポートに応用できるように画面設計 作り込むよりは専用のレポートで別制作しといたほうが何十倍も効率いいだろうにな >>504 ちょっと出来ない事があるとVBAに頼るのはよくない。 Officeの使い方をもっと勉強してからVBAに手を出すべきだよ。 「パラメータクエリ」と「フォーム」で作ればなんとかなるかな。 というわけで、VBA必要ないので↑の2つのキーワードでggrks フォームからfrom日付-to日付を入力 ↓ テーブルから購入日が対象範囲のデータ取得 テーブル構造は シーケンスno.,氏名,購入品1,購入日1(購入日、購入品は6まで存在) ↓ クロス集計にて月毎の金額を集計 ↓ レポートに出力 入力する日付によってフィールド数が可変なため、レポートの作成はしていないです。 vbaを使う必要がなく可変レポートが作成出来るならスルーして下さい >>513 クエリ作っときゃいいんじゃないの?集計の。 フィールド数が可変とはなんぞ。 >>513 テーブルの基本設計からやり直せ。 購入品と購入日が1〜6って無いと思います。 >>515 くそなテーブルだと思ってますが自分が作ったテーブルではないので変更出来ません >>516 レポート用にテーブル作っちゃうことはできないの? >>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でフィルタ掛ければいいんでないの? >>514 入力した期間に応じて月が増減します http://i.imgur.com/gnTtfzv.jpg 集計用のクエリは作成したのでリボンにあるレポートボタン同様に自動でリポート作成出来ないかと思ってます >>519 帳票一枚に並べられる分の月数を元からつくっとけ。 >>517 くえりをそのままレポートは難しそうだったのでテーブル化はしてあります 複雑になってるクエリが循環参照になってるようなのだが、読み解かずにテーブル作成して逃げようとしたらまたエラーなんとかならんかなー >>519 クエリ出来てるなら、レポート作って保存しておけば好きなときに開くだけじゃん vbaでfilecopy(fsoも含む)でリムーバブルディスクにファイルをコピーするとハードウェアの安全な取り外しで ファイルが使用中とかでできない。まぁ警告のダイアログで続行を押すと取り外せるんだけど、これやると マイコンピュータからリムーバブルディスクが消えなかったりすることがある。 accessを終了すると普通に取り外せるんだけど、これをなんとかできないかなぁ。 >>524 Fsoでやるなら、 宣言で as new ...とかしない、最後にNothing入れとくを徹底したら無くなるんじゃないかな。 カレントフォルダとカレントドライブを明示的に リムーバブルじゃないとこに設定してやれば行ける見たいな事を聞いたことがある >>524 それ、使用したメソッドがファイル掴んだままで、開放してないからでしょ。ちゃんとプログラミングのイロハ身につけてたらやらない。 使ったら必ず開放する。VBAユーザはなぜか使いっぱなしが多い。 .NETなんかだとマネージドは書いてもほぼ意味なかったりで使いっ放し推奨 >>525 、527 Dim objFileSys As Object Set objFileSys = CreateObject("Scripting.FileSystemObject") objFileSys.CopyFile 元ファイル, コピー先フォルダ & "\" Set objFileSys = Nothing copyfileの部分だけをかいつまんで書くとこんな感じだけど、解放の仕方を教えてくれないか。 リムーバブルディスクにコピーしたファイルは開けるし削除もできるからロックされた感じじゃないんだよね。 安全なハードウェアの取り外しだけがうまくいかないんだよ。 getdriveとか適当なのを実行してみたら? カレントが移動するかも。 >>526 、530 ありがとう。この方法で解決した。 ChDrive "c" って1行追加しただけでOKでした。言われないと気付かなかったから助かりました。 他のみなさんもありがとう。 重複した文言の多いcsvファイルの情報を読み込む時に、重複しない文言を蓄えたテーブルと、 文言テーブルのIDだけを入力したテーブルに分けて管理する事で容量を節約しようと思ってるんですが、 人が読める様にIDから元の文言を復元したテーブルを作りたいと思った時、 VBAで文言一つ一つ代入したテーブルを新たに作るしかないですかね? IDでテーブル結合したview作るなりクエリにすりゃいいんじゃないの どちらにしろVBAとか関係ないと思う 質問です Access2007ファイルのショートカットをデスクトップに作ろうと思って https://www.moug.net/tech/acvba/0020025.html ここを参考にパスとかだけ変えて作ったんだけど、ショートカットが作成されません 解決策教えてください mdbファイルのテーブル構造をADO.NET SqlCommandで取り出す方法を知りたいです。(データ定義言語的な取り出し) DoCmd.TransferDatabase acExportでできるテーブル構造のコピーと同じことを,ADO.NETで,元データなしで実現(テーブル生成)したり プログラム側が想定するテーブル構造と一致するか確認する処理をテーブル生成→比較とすることで一般化したりしたいのですが Accessでプロマネの仕事頼まれたけど断ったわ もうVisualStudioが無いと何もできない体になってしまった >>540 そういういかにも日本的で世界で通用しない回答は誰も期待していないし、 君みたいな奴は誰も求めていない。 >>541 君には悲しいかもしれないけど、ここ日本なのよね テーブルにインポートするとたまに失敗する変なゴミデータが入ったエクセルファイルをVBAでテーブルに登録しようとしてます。1レコード100フィールドほどあるもので、addnewで登録すると100件で20秒ほど掛かってしまいます。 Insertでも23秒でした。 全部で10万件あるのですが、高速登録する方法ないでしょうか? >>543 配列で受けると速くなるかもしれない dim ary as variant ary = Range("A1").CurrentRegion.value ' 1オリジンの2次元配列 ゴミは数式やエラー値が混ざってるんだろうから配列にした段階で適当に変換する dim row, col for row = lbound(ary(), 1) to ubound(ary(), 1) for col= lbound(ary(), 2) to ubound(ary(), 2) if ゴミ?(ary(row, col)) then ary(row, col) = ゴミ処理(ary(row, col)) next next この後でテーブル登録する >>543 パフォーマンス重視ならレコードセットやExcelオブジェクトは扱わない方が良いですよ 1.インポート定義でインポート 2.リンクテーブルを作って追加クエリ 3.SQL の IN 句使って INSERT 4.OLE DB の Jet か ACE で接続して INSERT などなど... ゴミが混ざるならゴミを許容する作業テーブルにインポートしてから後始末をするとか 処理の仕方も色々あると思います、頑張ってください 書き忘れ インポート定義は文字列切り詰めなどが起きるかもしれないので 使うなら想定しておいた方が良いです ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる