Access VBA質問箱 IV

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

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


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

【11501】Re:「ファイルを開く」ダイアログのモー...
発言  yoco E-MAIL  - 10/3/1(月) 11:21 -

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

こんにちは。
ご返信ありがとうございます★

>どの様なコードを書かれているのかにもよりますが、

Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
  "GetOpenFileNameA" (pOpenFileName As OPENFILENAME) As Boolean

Type OPENFILENAME
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    lpstrFilter As String
    lpstrCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    lpstrFile As String
    nMaxFile As Long
    lpstrFileTitle As String
    nMaxFileTitle As Long
    lpstrInitialDir As String
    lpstrTitle As String
    Flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type

↑GetOpenFileNameを呼び出してダイアログを表示させています。


>また、非公開のオブジェクトなので保障はできませんが
>WizHookオブジェクトでも操作はできそうです。

Access初心者なので、動作の保障がないものを使用するのは
ちょっと気が引けています。。。

上記コード内の「OPENFILENAME」にて設定ができないものか
調べてみましたが、分かりませんでした…。

もう少し調べてみます。
ありがとうございました(*・ω・)*_ _)ペコリ
・ツリー全体表示

【11500】Re:コマンドボタン
発言  超初心者  - 10/3/1(月) 9:31 -

引用なし
パスワード
   ▼きりん さん:
チェックボックス1.Value = Yes
チェックボックス2.Value = Yes
・ツリー全体表示

【11499】コマンドボタン
質問  きりん  - 10/2/28(日) 1:25 -

引用なし
パスワード
   こんばんわ。いつもお世話になります。

コマンドボタン1をクリックして、チェックボックス1、チェックボックス2
の両方にチェックを入れるにはクリック時のイベントにどのような条件を入力すればいいでしょうか?
・ツリー全体表示

【11496】Re:Accessからメールの送信
質問  K&MM  - 10/2/27(土) 21:02 -

引用なし
パスワード
   ありがとうございます!

挑戦してみたいです。Web上サンプルのURLを教えていただけませんか?
よろしくお願いします。
・ツリー全体表示

【11495】Re:テーブルのデータシートビューの列幅...
質問  pon  - 10/2/26(金) 18:19 -

引用なし
パスワード
   よろずやさん 小僧さん
HPのご紹介ありがとうございました

出来るんですね♪

以前から気にしていたのですが、お目にかかるのはお初です
試して感激です

You Can Do That with Datasheets?

tp://msdn.microsoft.com/en-us/library/aa217449(office.11).aspx

Public Function FixColumnWidthsOfTable _
           (stName As String)

Private Sub SetDAOFieldProperty _
        (fld As DAO.Field, _
stName As String, vValue As Variant, _
        lType As Long)
で動作確認できました


で、
一度、列幅調整を行っておいて、その列幅取得しておけば
いつでも復旧出来るのでとっても楽が出来そうです


  Sub DatasheetBestFit()
  Dim ctl As Control
  Const BestFit = -2
  
  DoCmd.OpenTable "zz"
    
    On Error Resume Next
    With Screen.ActiveDatasheet
      For Each ctl In .Controls
        ctl.ColumnWidth = BestFit
        'Debug.Print ctl.ColumnWidth
      Next
    End With
    
    DoCmd.SelectObject acForm, "zz", True
    
    DoCmd.OpenTable "zz"
    DoCmd.SelectObject acTable, "zz", True
    
    'RefreshDatabaseWindow
    
  End Sub


  Sub DatasheetBestFit2()
  Dim ctl As Control
  Const BestFit = -2
  
  DoCmd.OpenTable "zz"
    
    On Error Resume Next
    With Screen.ActiveDatasheet
      For Each ctl In .Controls
        'ctl.ColumnWidth = BestFit
        'Debug.Print ctl.ColumnWidth
        ctl.ColumnWidth = 500
        
        
      Next
    End With
    
    DoCmd.OpenTable "zz"
    DoCmd.SelectObject acTable, "zz", True
      
  End Sub


ただ、どのコードも、実行後フォーカスを失っているみたいで
You Can Do That with Datasheets?
の場合には、いったん、
データベースウインドウを選択
テーブル選択
スクロールバークリック
しないと、テーブルの縦スクロールが出来ません

手動でテーブルを開いた場合は、
即、マウスでスクロール可能になるのですが・・・・

DoCmd.SelectObject acTable, "zz", True
とか試してみましたが、希望の操作にはなりませんでした


なにかアドバイスありましたらよろしくお願いいたします
・ツリー全体表示

【11494】Re:エクセル出力について
発言  小僧  - 10/2/26(金) 17:43 -

引用なし
パスワード
   ▼たつ さん:
こんにちは。

> データが6万件を超える為、
> 5万件までいったら、次のシートへ…エクスポートさせる
> といったようにするにはどうしたらよいのでしょうか?

ExcelVBAの知識が必要となりますが
TransferSpreadsheet で出力するのではなく、
オートメーションで操作するのが良さそうですね。

CopyFromRecordset メソッドには
MaxRows を指定できますので
お望みの様な動作が可能かと思われます。
・ツリー全体表示

【11492】Re:「ファイルを開く」ダイアログのモー...
発言  小僧  - 10/2/26(金) 16:03 -

引用なし
パスワード
   ▼yoco さん:
こんにちは。

> 現在、【参照】ボタンを押下すると「ファイルを開く」ダイアログを
> 表示するようにしている

どの様なコードを書かれているのかにもよりますが、

>Access2000

の場合は Windows API を使う方法が良さそうですね。
(Access2000の動作環境がないのでテストできておりませんが
 Access2003、2007ではモーダルでダイアログが起動します)

また、非公開のオブジェクトなので保障はできませんが
WizHookオブジェクトでも操作はできそうです。

YU-TANG's MS-Access Discovery
[ファイルを開く] ダイアログを表示する方法
h tp://www.f3.dion.ne.jp/~element/msaccess/AcTipsGetFileName.html

ご参考になれば幸いです。
・ツリー全体表示

【11491】Re:テーブルのデータシートビューの列幅...
発言  小僧  - 10/2/26(金) 15:57 -

引用なし
パスワード
   ▼ponさん、みなさま
こんにちは。

Picasoさんのサイトにヒントがありそうですね。

Picasoのぴー
テーブルの列幅を最適にする
h tp://pxp.seesaa.net/article/5184978.html#more
・ツリー全体表示

【11490】エクセル出力について
質問  たつ  - 10/2/26(金) 15:02 -

引用なし
パスワード
   アクセスデータが6万件を超える為、シートを分けて、エクスポートしたいのですが、うまくいきません

Form1に、コンボボックスがあり、そこで品目を選択します

Form1で選択した品目だけを抽出したデータ
クロス集計のクエリ1のデータをエクセルにエクスポートします

データが6万件を超える為、
5万件までいったら、次のシートへ…エクスポートさせる
といったようにするにはどうしたらよいのでしょうか?

どうかアドバイスお願いします


現在はこんな感じで書いてます

Private Sub コマンド12_Click()
On Error GoTo エラー

Dim Strac As String
Dim Varxls As Variant
Dim Strmsg As String


Strac = "Q_クロス集計"
Varxls = "D:\ファイル\Data.xls"
Strmsg = Strac & "を、Excelファイルへ出力します。" & Chr(13) & _
    "出力先は" & Varxls & "、シート名は" & Strac & "です" & _
    Chr(13) & "よろしければ、OKをクリックしてください"
   
If MsgBox(Strmsg, vbOKCancel) = vbOK Then

  DoCmd.TransferSpreadsheet acExport, _
      acSpreadsheetTypeExcel9, Strac, Varxls, True, Me![HinmokuCmb]
 
 MsgBox "データ出力は正常に完了しました"
End If
Exit Sub

エラー:
  If Err.Number = 3044 Then
    MsgBox "パスの指定が誤っている可能性があります", vbCritical
  Else
    MsgBox "予期せぬエラーが発生しました", vbCritical
  End If
End Sub
・ツリー全体表示

【11489】Re:名前をつけて保存
お礼  YUKI  - 10/2/26(金) 14:30 -

引用なし
パスワード
   返信ありがとうございます。

OutputTo メソッドでやってみました所
出力できました。

リッチテキストで出力しましたが
やはりPDFでの出力の方が線も入る為
いいなとは思いますが・・・

2003でもPDFが使えるように出来るみたいですので
やってみます。

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

【11488】Re:複数のクエリを一つに結合する方法
お礼  まい  - 10/2/26(金) 13:10 -

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

結局、もう分からず、追加クエリを駆使してやることにしました。

アドバイスありがとうございました
・ツリー全体表示

【11487】「ファイルを開く」ダイアログのモーダル...
質問  yoco E-MAIL  - 10/2/26(金) 12:36 -

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

Access初心者です。。。
Access2000(WindowsXP)にて開発しております。

標記の通り、「ファイルを開く」ダイアログをモーダルにて
表示させたいのですが、どのように設定すればいいのか分かりません。

現在、【参照】ボタンを押下すると「ファイルを開く」ダイアログを
表示するようにしているのですが、ダイアログを表示中に再度【参照】ボタンを
押下すると二重に「ファイルを開く」ダイアログが表示されてしまいます。

これを制御したいのです。ご教授お願いします。
・ツリー全体表示

【11486】Re:テーブルのデータシートビューの列幅...
回答  よろずや  - 10/2/25(木) 21:41 -

引用なし
パスワード
   出来るはず。

You Can Do That with Datasheets?
を検索してください。
・ツリー全体表示

【11485】Re:テーブルのデータシートビューの列幅...
質問  pon  - 10/2/25(木) 16:39 -

引用なし
パスワード
   ▼hatena さん:
ありがとうございます

>テーブルを削除するのではなく、テーブル内のデータのみ削除して、
>追加インポートすればいいのでは。

これも頭にあったのですが
以前から、コードで一括調整が出来れば楽が出来そうな場面が多々あったので
今回Qしてみました

やはり、希望の操作は無理なのでしょうか
であれば、
>テーブルを削除するのではなく、テーブル内のデータのみ削除して、
で行いたいと思います

出来ないよ
等コメント頂けるとうれしいです
よろしくお願い致します
・ツリー全体表示

【11484】Re:テーブルのデータシートビューの列幅...
回答  hatena  - 10/2/25(木) 16:27 -

引用なし
パスワード
   >設定後
>このテーブルを削除して
>再インポートすると・・・
>再度、列幅調整・・・
>となってしまうので

テーブルを削除するのではなく、テーブル内のデータのみ削除して、
追加インポートすればいいのでは。
・ツリー全体表示

【11483】テーブルのデータシートビューの列幅調整
質問  pon  - 10/2/25(木) 16:22 -

引用なし
パスワード
   よろしくお願いいたします


初期値のデーターシートビューの列幅は一定ですが
手動で調整すれば、テーブルの再表示後も調整後の
列幅で表示され、
これを参照するクエリ等にも反映され便利です


現状
インポート定義でCSV等インポートしていますが
列幅設定がないので
やむを得ずインポート後手動で設定しています

設定後
このテーブルを削除して
再インポートすると・・・
再度、列幅調整・・・
となってしまうので

出来れば、列幅調整を
コードで行いたいと思っているのですが
どのようなコードを記載すればよいでしょうか

サブフォームでの調整方法はいくつか見かけたのですが
テーブルのデータシートビューについては見つけることが出来ませんでした


アドバイスよろしくお願いいたします
・ツリー全体表示

【11482】Re:名前をつけて保存
回答  YU-TANG  - 10/2/25(木) 15:12 -

引用なし
パスワード
   とりあえず OutputTo メソッドをヘルプで確認してみてはいかがでしょうか。
使用例が、ご質問の答えに近い気がします。
・ツリー全体表示

【11481】名前をつけて保存
質問  YUKI  - 10/2/25(木) 11:08 -

引用なし
パスワード
   VBAで品目ごとに絞った印刷テーブルを下記コードで
Excelにエクスポートしております。

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "印刷テーブル", CurrentProject.Path & "\test.xls", True

テーブルではなく印刷フォームを
エクスポートする事は出来ますか?
印刷フォームを選択して右クリックエクスポート
すれば出来ますがコードが分からなくて困ってます。

あと他の品目で作ると上書きされてしまいます。
これを印刷テーブル内の品目と同じ名前で
保存する方法があったら教えていただきたいのですが・・・

ExcelではなくWORDで作成することは出来るでしょうか?
リッチテキスト?でエクスポートするんですかね?

質問ばかりですみません。
説明不足かもしれませんが分かる方がいたら教えて下さい。
・ツリー全体表示

【11480】Re:複数のクエリを一つに結合する方法
発言  小僧  - 10/2/24(水) 19:08 -

引用なし
パスワード
   ▼まい さん:
こんにちは。

> 今はユニオンクエリを作成してみましたが、
> データ量が多すぎて、うまく動きません

データ量が少なければ
ご提示された UNIONクエリでうまくいくのでしょうか?


> 各クエリのデータ数は6万件〜最高13万件まであり大量のデータです

データ量だけの問題だけではなく、
この各クエリが複雑であれば実行結果は重くなるかと思われます。

差し支えない範囲で構いませんので
元のテーブル構成と、各クエリでどんな抽出をしているのかを
ご提示して頂くと
回答が付き易くなるかもしれませんね。


> 5個のクエリが存在していて

データを見る限り
階層化されたデータではないかと想定されます。
もしその場合でしたら
5階層以上のデータはありえないという仕様で宜しいでしょうか。

階層に制限を設けない仕様ですと
Accessで扱うには多少難しくなるかもしれません。


> 最終的には、フィールド[KEY]のところを昇順にさせて表示させたいと
> 1-1-3-8
> 2-2-3-7

KEY は文字型で定義されている為、
11-1 と 2-1 は 11-1 の方が小さいと判定されますね。
・ツリー全体表示

【11479】複数のクエリを一つに結合する方法
質問  まい  - 10/2/24(水) 11:11 -

引用なし
パスワード
   5個のクエリが存在していて、そのクエリを一つのテーブル又はクエリに結合させたいのですが、いまいちどうやったらいいのか分からず困ってます
各クエリのデータ数は6万件〜最高13万件まであり大量のデータです
どうかアドバイスをお願いします

状況は下記の通りです
【クエリ1】
品目 | 構成 | Lev01 | KEY |
aaa   abb    1   1
bbb   bbc    1   2
ccc   ccg    1   3
【クエリ2】
品目 | 構成 | Lev02 | KEY |
aaf   abe    2   1-1
bbe   bbs    2   2-2
csc   ccf    2   3-1
【クエリ3】
品目 | 構成 | Lev03 | KEY |
rrr   aqe    3   1-1-3
bww   bws    3   2-2-3
zzz   cdf    3   3-1-4
【クエリ4】
品目 | 構成 | Lev04 | KEY |
rra   aqe    4   1-1-3-4
qqq   bws    4   2-2-3-4
bbb   cdf    4   3-1-4-5
【クエリ5】
品目 | 構成 | Lev05 | KEY |
rrr   aqe    5   1-1-3-8
bww   bws    5   2-2-3-7
zzz   cdf    5   3-1-4-8


上記5つのクエリを下記のように作成したいです
Lev01 | Lev02 | Lev03 | Lev04 | Lev05 | 品目 | 構成品目 | KEY |
 1                   aaa   abb    1  
 1                   bbb   bbc    2  
 1                   ccc   ccg    3
     2               aaf   abe    1-1
     2               bbe   bbs    2-2
     2               csc   ccf    3-1
         3           rrr   aqe    1-1-3
         3           bww   bws    2-2-3
         3           zzz   cdf    3-1-4

以下省略します
最終的には、フィールド[KEY]のところを昇順にさせて表示させたいと思ってます
こんな感じに結合させたいのです
今はユニオンクエリを作成してみましたが、データ量が多すぎて、うまく動きません
'こんな感じで書いてみました-----------------------------------------------
SELECT Lev01,"" as Lev02,"" as Lev03,"" as Lev04,"" as Lev05,"" ,品目,構成品目,KEY
from Lev01
UNION select "" as Lev01,Lev02,"" as Lev03,"" as Lev04,"" as Lev05,"" ,品目,構成品目,KEY
from Lev02
UNION select "" as Lev01,"" as Lev02,Lev03,"" as Lev04,"" as Lev05,"" ,品目,構成品目,KEY
from Lev03
UNION select "" as Lev01,"" as Lev02,"" as Lev03,Lev04,"" as Lev05,"" ,品目,構成品目,KEY
from Lev04
UNION select "" as Lev01,"" as Lev02,"" as Lev03,"" as Lev04,Lev05,"" ,品目,構成品目,KEY
from Lev05;
-------------------------------------------------------------------------
ボタン一つで、上記のような表を作るにはどうしたらよいのでしょうか?
VBAのコードの書き方もいまいち分からず悪戦苦闘しています

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

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