Access VBA質問箱 IV

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

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


483 / 2272 ツリー ←次へ | 前へ→

【11483】テーブルのデータシートビューの列幅調整 pon 10/2/25(木) 16:22 質問[未読]
【11484】Re:テーブルのデータシートビューの列幅調整 hatena 10/2/25(木) 16:27 回答[未読]
【11485】Re:テーブルのデータシートビューの列幅調整 pon 10/2/25(木) 16:39 質問[未読]
【11486】Re:テーブルのデータシートビューの列幅調整 よろずや 10/2/25(木) 21:41 回答[未読]
【11491】Re:テーブルのデータシートビューの列幅調整 小僧 10/2/26(金) 15:57 発言[未読]
【11495】Re:テーブルのデータシートビューの列幅調整 pon 10/2/26(金) 18:19 質問[未読]

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

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


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


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

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

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

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


アドバイスよろしくお願いいたします

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

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

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

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

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

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

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

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

出来ないよ
等コメント頂けるとうれしいです
よろしくお願い致します

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

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

You Can Do That with Datasheets?
を検索してください。

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

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

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

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

【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
とか試してみましたが、希望の操作にはなりませんでした


なにかアドバイスありましたらよろしくお願いいたします

483 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078193
(SS)C-BOARD v3.8 is Free