goo blog サービス終了のお知らせ 

半角チルダ

ExcelVBA、その他。
覚え書きや、補足資料などのスクラップブック。
end-u(1037781)

■VBA QueryTable.Parameters

2010-11-29 21:00:00 | scrap
この期に及んで新カテゴリ追加してみました。
単なる『ガラクタ置き場』です。
ネタが枯渇してきたこともあり、サンプルコードを簡易的にアップしてみようかな、程度の試みです。
基本的に、画像や解説文はありません。..色もありません。
#不親切の度合いがますます...orz



'Excel。パラメータクエリを設定したSampleBookそのものを作成するコード。
Sub try()
  Dim ws  As Worksheet
  Dim fName As String

  'カレントフォルダに新規Book作成保存。既存ファイルの上書きに注意。
  fName = Application.DefaultFilePath & "\TMP" & Format$(Date, "yyyymmdd")
  With Workbooks.Add(xlWBATWorksheet)
    With .Sheets(1).Range("A1:C6")
      .Rows(1).Value = [{"日付","担当者","訪問先"}]
      .Rows(2).Value = [{"4月1日","佐藤","A"}]
      .Rows(3).Value = [{"4月2日","鈴木","B"}]
      .Rows(4).Value = [{"4月2日","加藤","C"}]
      .Rows(5).Value = [{"4月3日","佐藤","D"}]
      .Rows(6).Value = [{"4月3日","鈴木","E"}]
    End With
    .SaveAs fName
    'パラメータクエリ例。
    'B1セル変更時更新。基本的には手作業で設定できるのでマクロ不要。
    Set ws = .Sheets.Add
    ws.Name = "QueryTable例"
    ws.Range("A1:B1").Value = [{"日付","4月1日"}]
    With ws.QueryTables.Add(Connection:="ODBC;DSN=Excel Files;DBQ=" & fName, _
                Destination:=ws.Range("A3"))
      .CommandText = "SELECT [担当者], [訪問先] FROM [Sheet1$] WHERE ([日付]=?)"
      .FieldNames = False
      .RefreshStyle = xlOverwriteCells
      .AdjustColumnWidth = False
      With .Parameters.Add("日付", xlParamTypeDate)
        .SetParam xlRange, ws.Range("B1")
        .RefreshOnChange = True
      End With
      .Refresh False
    End With
  End With

  Set ws = Nothing
End Sub

パラメータクエリの設定操作についてはこちらがおすすめ。
『Excel豆知識』
[41-1 外部データの取り込み(パラメータークエリの利用)]
Comment
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする