Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


62 / 500 ページ ←次へ | 前へ→

【12072】Re:EXCELへの出力・編集
回答  よろずや  - 11/9/6(火) 0:38 -

引用なし
パスワード
   こちらが参考になるでしょうか。

h tp://www.accessclub.jp/samplefile/samplefile_204.htm
・ツリー全体表示

【12071】EXCELへの出力・編集
質問  AKG  - 11/9/5(月) 22:45 -

引用なし
パスワード
   こんばんは。
会社で集計ツールを作成しているのですが、会社に相談できる方もおらず
自分で調べるのも限界なので質問させてください。

ACCESSフォームでメイン画面を作り、元データの取り込み、集計までは完成しているのですが・・・
[出力]のボタンを押して、できた集計表をEXCELファイルに出力で詰まりました。

1. 出力したい集計表は3テーブル
2. それぞれを別シート、1ファイルで出力
3. 出力したファイルのデータに罫線、セルの色分け、セルの結合などの編集

自分で使う集計ツールではないので、できるだけ簡潔にしてあげようと思っています。

現状↓

Private Sub 出力_Click()

DoCmd.TransferSpreadSheet AcExport,8,"集計表1","C:\集計まとめ",True,"集計表1"
DoCmd.TransferSpreadSheet AcExport,8,"集計表2","C:\集計まとめ",True,"集計表2"
DoCmd.TransferSpreadSheet AcExport,8,"集計表3","C:\集計まとめ",True,"集計表3"

Call 出力編集

MsgBox"Cドライブに『集計表まとめ.xls』を出力しました。"

End Sub

問題の出力編集の中身なのですがどうやっても、うまくいきません・・・

質問の仕方、内容が大雑把で申し訳ありませんがアドバイスをいただけたら
と思います。
よろしくお願いいたします。
・ツリー全体表示

【12070】Re:サブフォームの選択されたレコード情...
回答  hatena  - 11/9/4(日) 23:39 -

引用なし
パスワード
   >メインフォームに設けたボタンのクリックイベントで、サブフォームに表示された
>データシートの選択行を見にいくわけですが、
>
>Seltopについては辛うじてデータが得られ、Seltopそのものだけでも(先頭から)n行目とわかるのですが、SelHeightはどうやってもそのものの情報が0になってしまうのです。
>あたかも複数行は選択していませんよ!とAccessから言われているような感じです。(T_T)

メインフォームのコマンドボタンをクリックすると、フォーカスはメインフォームの
コマンドボタンへフォーカス移動します。その時点では、すでに選択は解除されてし
まってます。ですので、SelHeight は 0 になります。

対処法としては、2つ考えられます。

コマンドボタンの代わりにラベルのクリック時を利用します。
ラベルだとフォーカス移動しませんので、SelHeight を取得できます。
ラベルの立体表示を「浮き出し」にしておくとボタンのように見せることができます。

ラベルをボタンらしく見せるには下記を参考に。
ボタンクリックでテキストボックスに文字入力 その1 - hatena chips
h tp://hatenachips.blog34.fc2.com/blog-entry-7.html


2つめは、
サブフォームの「フォーカス喪失時」で変数に SelHeight を格納しておく
方法です。

Dim SFSelHeight As Long

Private Sub 埋め込み1_Exit(Cancel As Integer)
  SFSelHeight = Me.埋め込み1.Form.SelHeight
End Sub
・ツリー全体表示

【12069】Re:サブフォームの選択されたレコード情...
発言  とんとかいも E-MAIL  - 11/9/4(日) 21:42 -

引用なし
パスワード
   hatena様

お世話になっております、
ご回答有難うございます。

それがなかなか上手くいかないようです。
メインフォームに設けたボタンのクリックイベントで、サブフォームに表示された
データシートの選択行を見にいくわけですが、

Seltopについては辛うじてデータが得られ、Seltopそのものだけでも(先頭から)n行目とわかるのですが、SelHeightはどうやってもそのものの情報が0になってしまうのです。
あたかも複数行は選択していませんよ!とAccessから言われているような感じです。(T_T)

▼hatena さん:
>>いろいろ調べて見ましたところ、『SelTop』、『SelHeight』を使用することにより取得できるらしいのですが、試したところSelTopによって選択された先頭の情報は得られるものの、SelHeightによる選択された最後の行の情報が得られません。
>
>SelTopを仕様して選択された先頭行の情報を得られるのなら、
>
>同じ方法で、SelTop + SelHeight を使用して選択された最終行の情報を得られます。
・ツリー全体表示

【12068】Re:サブフォームの選択されたレコード情...
回答  hatena  - 11/9/4(日) 1:23 -

引用なし
パスワード
   >いろいろ調べて見ましたところ、『SelTop』、『SelHeight』を使用することにより取得できるらしいのですが、試したところSelTopによって選択された先頭の情報は得られるものの、SelHeightによる選択された最後の行の情報が得られません。

SelTopを仕様して選択された先頭行の情報を得られるのなら、

同じ方法で、SelTop + SelHeight を使用して選択された最終行の情報を得られます。
・ツリー全体表示

【12067】サブフォームの選択されたレコード情報の...
質問  とんとかいも  - 11/9/3(土) 15:12 -

引用なし
パスワード
   お世話になっております

フォームに設けたサブフォームに、データシートのビューでデータベーステーブルを表示させています。

そのサブフォームに表示されたレコードの一部をマウスのドラッグ操作で選択するわけですが、VBAで選択されたレコード情報を取得したいと考えております。

いろいろ調べて見ましたところ、『SelTop』、『SelHeight』を使用することにより取得できるらしいのですが、試したところSelTopによって選択された先頭の情報は得られるものの、SelHeightによる選択された最後の行の情報が得られません。

お手数をおかけしますが、ご教示よろしくお願いします。
・ツリー全体表示

【12066】Re:フォームから戻る際に・・・
発言  nonon  - 11/9/2(金) 15:48 -

引用なし
パスワード
   ▼コラーゲン さん:

どうも、nononです。

直接更新しているのであれば、やはり他の方法を考えないと
いけないかもしれませんね。

戻るボタンの有無に関わらず、Access閉じても同じ事でしょうし。

「更新を確定させてから、本物の?Tableを更新する。」
を実現するのであれば、チョコチョコ制限をつけるコードを
書くしかないと思われます(^-^;

1件1件の登録をしたいのか、複数をドーンとしたいのか、
によっても違ってきますし。。。

本Table⇔WorkTableのやりかたは簡単で、以下のコードとかでも
できますが・・・やはり、○○の場合はどうするとかを決めなけ
ればならないと思いますので、ちょいと考えないといけません。

(どのような要件があるのか分からないので、何とも言えませんが。。。)

Dim db As Database
Set db = CurrentDb
  
db.Execute "DELETE FROM " & Table名
db.Execute "INSERT INTO " & Table名 & " SELECT * FROM " & Table名
・ツリー全体表示

【12065】Re:フォームから戻る際に・・・
お礼  コラーゲン  - 11/9/2(金) 15:31 -

引用なし
パスワード
   ▼nonon さん:
>▼コラーゲン さん:
>
>nononです。
>
>一つ訂正です。
>
>>データシートとして表示して、直接データを変更している。
>
>↑ データシートなどで表示して

nononさん こんにちわ。

回答ありがとうございます。

nononさんのおっしゃるとおり、データシートにテキストボックスやらコンボボックスやらをペタペタ貼り付けて入力用フォームを作成しました。
その場合、テーブルを直接更新しているため、提示してくださった案などで
なんとかやるしかない感じですかね・・・

うむむむ、ちょっと難しいそうです。(ToT)

どうもありがとうございました。
・ツリー全体表示

【12064】Re:フォームから戻る際に・・・
発言  nonon  - 11/9/2(金) 15:12 -

引用なし
パスワード
   ▼コラーゲン さん:

nononです。

一つ訂正です。

>データシートとして表示して、直接データを変更している。

↑ データシートなどで表示して
・ツリー全体表示

【12063】Re:フォームから戻る際に・・・
発言  nonon  - 11/9/2(金) 15:03 -

引用なし
パスワード
   ▼コラーゲン さん:

はじめまして、nononと申します。

もうちょっと具体的に教えてください。

画面にテキストなどが貼り付けられていて、入力後に
登録ボタンなどを押下し、データ登録を行う方法ではなく、
データシートとして表示して、直接データを変更している。
と認識して良いでしょうか?

上記の認識であれば、更新中であってもすぐにcommitされる
ので理解はできます。


っということで、ざっと案を記載してみます。

案1.:データシートではなく、テキストなどにて入力させ、
   コード書いてデータを登録する。

案2.:更新したいテーブルのWorkTableを作成
   更新画面にはWorkTableをデータシートで表示
   更新ボタンを押下すると、WorkTableから更新したい
   テーブルへ登録。
   ※画面読み込み時にWorkTableへデータコピー必要


など。
・ツリー全体表示

【12062】フォームから戻る際に・・・
質問  コラーゲン  - 11/9/2(金) 14:51 -

引用なし
パスワード
   超初心者です。初めて投稿します。

ご存知の方がいらっしゃったら教えてください。


ACCESSでテーブルを更新するためのフォームを作成しています。

メインフォームからテーブル更新用フォームへ移行し、データの項目を
入力してテーブルを更新するフォームに、新しく「メインへ戻る」ボタンを
追加しました。
マクロでメインフォームへ戻る機能を追加してうまくできたと思ったのですが、
入力項目を途中まで入力した状態で戻るボタンを押した場合、途中の状態で
テーブルが更新されてしまいます。
いろいろ試しては見たものの、うまくいきません。

どうすればよいか教えてください。
・ツリー全体表示

【12061】Re:データベースのオープンクローズ
発言  nonon  - 11/9/2(金) 11:25 -

引用なし
パスワード
   ▼T さん:

nononです。

こちらは参考になりませんか?

http://blueeyesblue.cocolog−nifty.com/technote/2010/10/accesslaccdb−82.html

基本、laccdbファイルは自動的に削除されるはずです。

※禁止文字がある為投稿できないと言われてしまいましたので、
 アドレスを全角としました。 お手数ですが、半角に直してください。
・ツリー全体表示

【12060】Re:filecopy
発言  nonon  - 11/9/2(金) 11:07 -

引用なし
パスワード
   ▼T さん:

nononです。

>filecopyで出来なかったことが、FileSystemObjectで出来ました。

う・・・なんででしょう。。。
全く同じ事をしているはずなんですが、ファイル操作方法に違いが
あるんですかね・・・そこんとこ、私も分からずです↓↓↓

でも、目的が達成できて良かったです!

余談ですが、FSOでファイル操作が色々できるので、私はいつも
FSOを使用しています。
また、若干ですが、FSOを使うと高速で処理できるようです。

*特にレス不要ですb
・ツリー全体表示

【12059】Re:列非固定のクロス集計クエリのレポー...
質問  まき  - 11/9/2(金) 10:45 -

引用なし
パスワード
   すみません、書き忘れました。

環境は、

XP
access2003

です、よろしくお願いします
・ツリー全体表示

【12058】列非固定のクロス集計クエリのレポート化
質問  まき  - 11/9/2(金) 10:43 -

引用なし
パスワード
   先日質問させていただきました。
列非固定のクロス集計クエリをレポート化しているのですが、
今まではうまく行ってたんですけれども、行見出しを一行追加したら
その行見出しまで値として書き出される様になってしまいました。
下記がreport open に書いているコードです
どこがおかしいか指摘いただけると嬉しいです。
よろしくお願いします。
関係ないかもしれませんがレポートはサブレポートです。
テキストボックス Field2 に 追加した行見出しが出てしまいます。

Private Sub Report_Open(Cancel As Integer)
Dim db As DAO.Database
Dim qd As DAO.TableDef
Dim cnt As Integer
Dim fld As DAO.Field
Dim rs As DAO.Recordset

Set db = CurrentDb()
Set qd = db.TableDefs(Me.RecordSource)
Set rs = qd.OpenRecordset

For cnt = 2 To rs.Fields.Count - 1
  Set fld = rs.Fields(cnt)
  Me("Field" & cnt).ControlSource = fld.Name

Next

End Sub
・ツリー全体表示

【12057】データベースのオープンクローズ
質問  T  - 11/9/2(金) 10:13 -

引用なし
パスワード
   Tです。

データベースをオープンしたときに、
そのデータベースがあるフォルダに「データベース名.laccdb」
というファイルが出来ます。

データベースをクローズしたときに、
そのデータベースがあるフォルダにある「データベース名.laccdb」
というファイルが消えてくれません。

「データベース名.laccdb」を消す方法を教えてください。
・ツリー全体表示

【12056】Re:filecopy
お礼  T  - 11/9/1(木) 13:40 -

引用なし
パスワード
   ▼nonon さん:
>▼T さん:
>
>nononです。
>
>>コピー元(ネットワーク側)のフォルダに
>>ローカルからの書き込み権限が付与されている場合は
>
>ムムム、、、コピー元に権限があると正常動作・・・
>って、なんだかしっくりきませんね(^-^;
>細かく権限を見れば分かるかもしれませんが、
>以下のようにFSO使っても無理ですよね?
>
>たぶん・・・コピー(一緒)なんで無理ですよね↓
>
>
>Dim file1 As String
>Dim file2 As String
>Dim objFSO As FileSystemObject
>  
>file1 = "元ファイル"
>file2 = "先ファイル"
>
>Set objFSO = New FileSystemObject
>objFSO.CopyFile file1, file2, True
>Set objFSO = Nothing
>  
>※参照設定で「Microsoft Scripting Runtime」のチェックをON
nononさん

どうもです。
なんかいろいろいじっていたら、目的が達成してしまいました。
filecopyで出来なかったことが、FileSystemObjectで出来ました。
でも、なんで出来るの?

nononさんのソースが参考になり、解決しました。
ありがとうございました。
・ツリー全体表示

【12055】Re:filecopy
発言  nonon  - 11/9/1(木) 11:38 -

引用なし
パスワード
   ▼T さん:

nononです。

>コピー元(ネットワーク側)のフォルダに
>ローカルからの書き込み権限が付与されている場合は

ムムム、、、コピー元に権限があると正常動作・・・
って、なんだかしっくりきませんね(^-^;
細かく権限を見れば分かるかもしれませんが、
以下のようにFSO使っても無理ですよね?

たぶん・・・コピー(一緒)なんで無理ですよね↓


Dim file1 As String
Dim file2 As String
Dim objFSO As FileSystemObject
  
file1 = "元ファイル"
file2 = "先ファイル"

Set objFSO = New FileSystemObject
objFSO.CopyFile file1, file2, True
Set objFSO = Nothing
  
※参照設定で「Microsoft Scripting Runtime」のチェックをON
・ツリー全体表示

【12054】Re:filecopy
発言  T  - 11/8/31(水) 17:49 -

引用なし
パスワード
   ▼nonon さん:
>▼T さん:
>
>はじめまして、nononと申します。
>
>>「filecopy "\\network\abc.xls","c:\local\def.xls"」と
>
>「書き込みできません」って、「"c:\local\def.xls"」のファイルを
>開いているからじゃありませんか?
>
>ローカルにコピーとのことなので権限ではないと思いますが、
>たぶん、ファイルを開いている or 権限が付与されてない
>のどちらかだと思います。
>
>的外れでしたらすみません。。。
>
>p.s 構文は合っています。

nononさん、早速の書き込みありがとうございます。
色々調べたのですが、問題があるのはどうやら
コピー元(ネットワーク側)だということが
わかりました。
コピー元(ネットワーク側)のフォルダに
ローカルからの書き込み権限が付与されている場合は
なんの問題もなく正常に動くことが確認出来ました。

しかし・・・わかりません・・・。
「コピー元に書き込みの権限がないと、FILECOPYで
コピー出来ない」
という事になる理由が・・・・・

ファイルのコピーは他の方法を考えます。
・ツリー全体表示

【12053】Re:filecopy
回答  nonon  - 11/8/31(水) 16:54 -

引用なし
パスワード
   ▼T さん:

はじめまして、nononと申します。

>「filecopy "\\network\abc.xls","c:\local\def.xls"」と

「書き込みできません」って、「"c:\local\def.xls"」のファイルを
開いているからじゃありませんか?

ローカルにコピーとのことなので権限ではないと思いますが、
たぶん、ファイルを開いている or 権限が付与されてない
のどちらかだと思います。

的外れでしたらすみません。。。

p.s 構文は合っています。
・ツリー全体表示

62 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1078325
(SS)C-BOARD v3.8 is Free