プロが教える店舗&オフィスのセキュリティ対策術

AccessVBAでExcelを起動し、罫線を引きたいのですが、ExcelVBAの罫線を引く関数をAccessVBAで記述するとエラーになります。どういう記述をすればよいのでしょうか?
(例)
  以下の様にすると、例えば「xlNone」は宣言されていない等のエラーになります。
  (ちなみに、Excelの起動と値の入力はできています)

Range("A4:C6").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

A 回答 (2件)

RangeとかxlDiagonalDownはExcelのVBA環境だから


使えるオブジェクトや定数です。Access環境では使用
できません。
Excelを他のアプリケーションからCOMモデルで使用
する場合を考えると、以下の構造になります。
Application
 Workbooks
  Workbook
   WorkSheets
    WorkSheet
     Cells
      Range

従って、Excelでやる時のようにRangeを単独で指定
できません。(Excelの時でも、所属を明確にすべき)
解決方法(一例)は以下の通り。
(1)参照設定に「Microsoft Excel x.x Object Library」を追加
  x.xはバージョン
(2)全てのExcelオブジェクトはApplicationから明示的に指定する
  Dim A As Excel.Application
  Dim B As Excel.Workbook
  Dim S As Excel.WorkSheet
  Dim R As Excel.Range
  Set A = New Excel.Application
  Set B = A.Workbooks("hoge.xls")
  Set S = B.WorkSheets("Sheet1")
  Set R = S.Range("A4:C6")
(3)できればSelectionを使わない
  Selection.Borders → R.Borders

尚、Excel固有の定数は参照設定を追加することで使用可能になります。
    • good
    • 0
この回答へのお礼

nda23さん
参照設定すればよかったのですね!
それと「ExcelオブジェクトはApplicationから明示的に指定する」は必須でした。
ご回答どうもありがとうございました。

お礼日時:2010/05/27 12:07

>例えば「xlNone」は宣言されていない等のエラーになります。


組み込み定数の変わりに数値で指定すればどうでしょうか(未確認ですが)
>Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalDown).LineStyle = -4142
または
Selection.Borders(5).LineStyle = -4142
    • good
    • 0
この回答へのお礼

watabe007さん:
全部数値にしたらできました!! v(^ ^)/
なので関数内に、Const xlAutomatic = -4105 のように全部宣言することにしました。
どうもありがとうございました。 助かりました。m(_ _)m

お礼日時:2010/05/27 11:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A