- ベストアンサー
MSアクセスでエクセルのセルに色をつけるには
MSアクセスからエクセルシートを吐き出しているのですが、セルに色をつけたりして、飾りを付けたいと思っております。 どなたかお知恵をお貸し頂けませんでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。Wendy02です。 単に、AccessからExcelのシートのセルに色を付けたいといっても、それは様々な条件が重なってできるものであって、こちらでは、ご質問を具体化させることは出来ません。 以下は、サンプルですが、A1 から、連続したデータの中から、最小値を探して、それに色をつけるというコードです。 今回のコードは、私は、オートメーション・オブジェクトの基本中の基本ですが、簡単だと思うかどうかは、その人のレベルにもよります。なお、Access 2000 と Access 2003 とでは、若干、その感触が違うようです。 参考サイト: Access Club CreateObject関数:SampleFileHelp http://www.accessclub.jp/samplefile/help/help_207_3.htm この中に、「実行時バインディング」と「事前バインディング」についての説明がありますが、今回の場合は、この先の発展性を考えると、「実行時バインディング」にせざるを得ない場合があります。仮に、「実行時バインディング」しても、Excelを使う場合は、VB Editor側で、ツール-参照設定で、Microsoft Excel ?? Object Library (??は数字)は、チェックを入れておいたほうが便利です。 '-------------------------------------------------------------------- Sub Acc_XlTestSample() Dim xlApp As Object Dim xlBook As Object Dim xlSheet As Object Dim xlRng As Object Dim xlMin As Double Dim c As Variant Const XLPATH As String = "C:\MyData\" 'データのパス Const XLFNAME As String = "TestBook.xls" 'Excelファイル名 On Error GoTo ErrHandler Set xlApp = CreateObject("Excel.Application") 'オブジェクトを作る Set xlBook = xlApp.Workbooks.Open(XLPATH & XLFNAME) xlApp.Visible = True Set xlSheet = xlBook.Worksheets(1) '本来はシート名のほうがよい Set xlRng = xlSheet.Range("A1").CurrentRegion 'A1からデータがなければならない xlMin = xlApp.WorksheetFunction.min(xlRng) '最小値を出す For Each c In xlRng If c = xlMin Then c.Interior.ColorIndex = 34 '水色 End If Next c ErrHandler: If Err.Number > 0 Then MsgBox Err.Number & ": " & Err.Description ,16 End If 'Set xlRng = Nothing '現行では不要 'Set xlSheet = Nothing '現行では不要 Set xlBook = Nothing 'ここから Set xlApp = Nothing '絶対に必要 End Sub 'かならず、Set xlApp = Nothing マクロが終了する前、必ず通します。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 あまり答えが付きませんね。その文章からではむつかしいです。 「MSアクセスからエクセルシートを吐き出している」方法を分かりませんが、Access から、Excelのオートメーション・オブジェクトを取り出して、そして、シートオブジェクトからセルのプロパティに、ColorIndex を与えるだけのことなのです。検索すれば、サンプルコードはかなり出てくるかと思います。この種の内容では、一番初歩のものになるかと思います。 オブジェクトを取るのは、CreateObject("Excel.Application") か、GetObject("Excel.Application") のどちらかを使います。また、参照設定すれば、New Excel.Application とはなります。
お礼
ありがとうございます。 なかなかサンプルコードが見つからないですね。基本すぎるからなのでしょうか。
お礼
ありがとうございます。 アクセスVBAとして実行すれば上手くいきました。VBAの操作は骨が折れますが、調べてカスタムしたいと思います。