Access VBA質問箱 IV

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

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


1695 / 9994 ←次へ | 前へ→

【11590】Re:フィルタ適用後のEXCEL出力時について
回答  VBA初心者  - 10/4/7(水) 13:53 -

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

下記にソースを記述します。
 フレームで条件を抽出する場合と「コマンド38_Click」
をクリックした時の検索条件にて値を抽出するようにしてます。


お手数ですが、よろしくお願いします。 
---------------------VBAソース-------------------------------

Private Sub コマンド36_Click()----フレームの抽出条件

Me.RecordSource = frmRecSource
  Me.Requery
 

End Sub

Function frmRecSource() As String-----Function関数
  Dim strSQL As String
 
  Dim strWH As String
  
  Select Case Me.フレーム54
  Case 1
     strSQL = "select * " _
      & "from TEST_TABLE "
  Case 2
      
     strSQL = "select TEST_TABLE.[A]"
        strSQL = strSQL & ", TEST_TABLE.[B]"
        strSQL = strSQL & ", TEST_TABLE.[C]"
        strSQL = strSQL & ", TEST_TABLE.[D]"
        strSQL = strSQL & ", TEST_TABLE.[E]"
        strSQL = strSQL & ", TEST_TABLE.[F]"
        strSQL = strSQL & ", TEST_TABLE.[G]"
        strSQL = strSQL & ", TEST_TABLE.[H]"
        strSQL = strSQL & ", TEST_TABLE.[I]"
        strSQL = strSQL & ", TEST_TABLE.[J]"
        strSQL = strSQL & ", TEST_TABLE.[K]"
        strSQL = strSQL & ", TEST_TABLE.[L]"
        strSQL = strSQL & " from TEST_TABLE"
       
       
        strSQL = strSQL & " WHERE (((TEST_TABLE.E In (SELECT TEST_TABLE.E FROM (SELECT COUNT(*),TEST_TABLE.E FROM TEST_TABLE As TEST_TABLE  "
        strSQL = strSQL & " GROUP BY TEST_TABLE.E HAVING Count(*)>1 ) AS TEST_TABLE) AND TEST_TABLE.E<>'' "
        strSQL = strSQL & " ORDER BY TEST_TABLE.E DESC "
    
  End Select
  
  Debug.Print strSQL
  frmRecSource = strSQL
  
End Function


Private Sub コマンド38_Click()------検索ボタン

Dim strWH As String

  strWH = "(A Like '*" & Me.テキスト36 & "*')" _
    & " OR (B Like '*" & Me.テキスト36 & "*')" _
    & " OR (C Like '*" & Me.テキスト36 & "*')" _
    & " OR (D Like '*" & Me.テキスト36 & "*')" _
    & " OR (E Like '*" & Me.テキスト36 & "*')" _
    & " OR (F Like '*" & Me.テキスト36 & "*')" _
    & " OR (G Like '*" & Me.テキスト36 & "*')" _
    & " OR (H Like '*" & Me.テキスト36 & "*')" _
    & " OR (I Like '*" & Me.テキスト36 & "*')"


  Me.Filter = strWH
  Me.FilterOn = True


Private Sub コマンド41_Click()--------------Excel出力
  
'On Error GoTo Err_コマンド41_Click
  
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim strWhere As String
Dim xlsApp As Object
Dim xlsWkb As Object
Dim xlsFileName As String
Dim i As Long

Dim myDir As String 'デスクトップ定数

  'フィルタを掛けた時点で Hitするものがなかったような場合は
  'メッセージを出して処理を中止します。
  If Me.Recordset.EOF Then
    MsgBox Prompt:="出力するデータがありませぬ" _
       , Buttons:=vbExclamation
    Exit Sub
  End If
  
  'デスクトップを指定
  myDir = CreateObject("WScript.Shell").SpecialFolders("Desktop")

  Set db = CurrentDb
  xlsFileName = myDir & "\" & Format(Date, "yyyy_mm_dd") & "一覧.xls"

  'もし Filterプロパティになにも記述されていなかったら
  'フォームに表示されている全データを出力するようにします。
  If Me.Filter = "" Then
    strWhere = True
  Else
    strWhere = Me.Filter
  End If

'解除ボタンを押した場合は、全データを出力するようにします。
  If Me.FilterOn = False Then
    strWhere = True
   End If
 
 
  '変数に SQL文を代入します。
  'Filter プロパティに記述されているものを抽出条件とします。


  strSQL = ""
  strSQL = strSQL & " SELECT C "
  strSQL = strSQL & " , A AS 事業所名 "
  strSQL = strSQL & " , B AS PC名 "
  strSQL = strSQL & " , D AS セグメント名 "
  strSQL = strSQL & " , E AS IPアドレス "
  strSQL = strSQL & " , F AS 機種 "
  strSQL = strSQL & " , G As ドメイン名 "
  strSQL = strSQL & " , H As 使用者 "
  strSQL = strSQL & " , I "
  strSQL = strSQL & " , J "
  strSQL = strSQL & " , K "
  strSQL = strSQL & " , L "
  'strSQL = strSQL & " FROM " & Me.RecordSource & " "
  strSQL = strSQL & " FROM (" & Me.RecordSource & ") As TEST_TABLE"
  strSQL = strSQL & " WHERE " & strWhere
  'strSQL = strSQL & " ORDER BY A DESC" '名を降順で並べ替える
  strSQL = strSQL & " ORDER BY TEST_TABLE.A DESC" '名を降順で並べ替える
  
  'レコードセットに対象のデータを代入します
  Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)


  '以下Excelの操作------------------------------------------
  Set xlsApp = CreateObject("Excel.Application")
    xlsApp.Visible = True
 
  Set xlsWkb = xlsApp.workbooks.Add
    With xlsWkb.Sheets("Sheet1")

     For i = 0 To rs.Fields.Count - 1
       .Range("A1").Offset(0, i).Value = rs.Fields(i).Name
       Debug.Print rs.Fields(i).Name
     Next i
  
    .Range("A2").CopyFromRecordset rs
    .columns("A:K").AutoFit
    End With
  
  
  xlsWkb.SaveAs xlsFileName, FileFormat:=56
  xlsWkb.Close: Set xlsWkb = Nothing
  xlsApp.Quit: Set xlsApp = Nothing
 
  MsgBox "出力しました!!"

  
Exit_コマンド41_Click:
  Exit Sub

Err_コマンド41_Click:
  MsgBox "出力できません!管理者に確認!!"
  Resume Exit_コマンド41_Click
  
  
End Sub


▼247b さん:
>最新のVBAプログラムを見せてください。

972 hits

【11571】フィルタ適用後のEXCEL出力時について VBA初心者 10/4/2(金) 17:08 質問[未読]
【11572】Re:フィルタ適用後のEXCEL出力時について 247b 10/4/2(金) 17:29 発言[未読]
【11575】Re:フィルタ適用後のEXCEL出力時について VBA初心者 10/4/5(月) 10:36 質問[未読]
【11576】Re:フィルタ適用後のEXCEL出力時について 247b 10/4/5(月) 11:05 発言[未読]
【11577】Re:フィルタ適用後のEXCEL出力時について VBA初心者 10/4/5(月) 13:01 回答[未読]
【11578】Re:フィルタ適用後のEXCEL出力時について 247b 10/4/5(月) 15:12 発言[未読]
【11579】Re:フィルタ適用後のEXCEL出力時について VBA初心者 10/4/5(月) 16:44 質問[未読]
【11580】Re:フィルタ適用後のEXCEL出力時について 247b 10/4/5(月) 20:23 発言[未読]
【11581】Re:フィルタ適用後のEXCEL出力時について VBA初心者 10/4/6(火) 12:02 質問[未読]
【11582】Re:フィルタ適用後のEXCEL出力時について 247b 10/4/6(火) 12:43 発言[未読]
【11583】Re:フィルタ適用後のEXCEL出力時について VBA初心者 10/4/6(火) 14:28 質問[未読]
【11584】Re:フィルタ適用後のEXCEL出力時について 247b 10/4/6(火) 16:17 発言[未読]
【11585】Re:フィルタ適用後のEXCEL出力時について VBA初心者 10/4/6(火) 18:16 質問[未読]
【11586】Re:フィルタ適用後のEXCEL出力時について 247b 10/4/6(火) 18:53 発言[未読]
【11587】Re:フィルタ適用後のEXCEL出力時について VBA初心者 10/4/7(水) 11:13 質問[未読]
【11589】Re:フィルタ適用後のEXCEL出力時について 247b 10/4/7(水) 13:00 発言[未読]
【11590】Re:フィルタ適用後のEXCEL出力時について VBA初心者 10/4/7(水) 13:53 回答[未読]
【11591】Re:フィルタ適用後のEXCEL出力時について 247b 10/4/7(水) 14:17 発言[未読]
【11592】Re:フィルタ適用後のEXCEL出力時について VBA初心者 10/4/7(水) 14:56 お礼[未読]
【11593】Re:フィルタ適用後のEXCEL出力時について 247b 10/4/7(水) 15:25 発言[未読]
【11597】Re:フィルタ適用後のEXCEL出力時について VBA初心者 10/4/8(木) 10:06 お礼[未読]

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