こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

AccessからExcelに罫線付で出力したい

Access2010使用。

AccessのクエリからExcelにエクスポートした際、罫線などの体裁を整えて出力したいと思っています。

データは下記のコードでなんとか出るようになりましたが、このコードの中に罫線を引くコードを
入れる方法がどうしてもわかりません。

検索してあれこれ試しましたが「オブジェクトがない」や「サポートしてない」などエラーメッセージ
が出てしまい、VBAの基礎知識がない私にはどうしてもわかりませんでした。
どうかアドバイスお願いいたします。
(クエリ名は Q_ABC とします)

やりたいことは

・データがある行列に格子線を引き、1行目の項目列の下は二重線、外側は太線にしたい。
・行の高さを数値で指定したい。

です。なお、行数はその都度増えます。

また、できれば
印刷する際の設定で用紙を「A3横」で、常に横1ページに入るように縮小率を設定しておきたい
のですが可能でしょうか?

どうぞよろしくお願いします。

Private Sub コマンド0_Click()
Set xlapp = CreateObject("Excel.application")

Dim xlbook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Dim rs As New ADODB.Recordset
Dim objEXCEL As Object
Dim nYLINE As Integer
Dim nXLINE As Integer
Dim nRCNT As Integer
Dim strWORK As String

Set xlApp = CreateObject("Excel.Application")

Set objEXCEL = CreateObject("Excel.Application")

objEXCEL.Visible = True

objEXCEL.Workbooks.Add

objEXCEL.sheets.Add

re.Open "Q_ABC", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

'見出しを書き込む
objEXCEL.Range("A1") = "ID"
objEXCEL.Range("B1") = "氏名"
objEXCEL.Range("C1") = "住所"

 == 以下T列まで省略 ==

'項目名をセルの中央に
objEXCEL.Range("A1:T1").HoraizontalAlignment = xlHAilignCenterAcrossSelection

Dim yLINE As Integer '行カウンター

yLINE = 2  'ループ処理

While rs.EOF = False

'accessからデータのセット

objEXCEL.Cells(yLINE, "A") = rs.Fields("ID")
objEXCEL.Cells(yLINE, "B") = rs.Fields("氏名")
objEXCEL.Cells(yLINE, "C") = rs.Fields("住所")

== 以下T列まで省略 ==

rs.MoveNext
yLINE = yLINE + 1
Wend

'シートの列幅の自動調整
objEXCEL.Cells.EntireColumn.AutoFit

rs.Close
Set rs = Nothing

End Sub

投稿日時 - 2013-06-10 21:29:32

QNo.8128345

困ってます

質問者が選んだベストアンサー

>> 印刷する際の設定で用紙を「A3横」で、常に横1ページに入るように縮小率を設定しておきたい
のですが可能でしょうか?

を忘れていました。

Excel の印刷がらみの設定は PageSetup を変更して行います。

  ' ズーム設定(自動で行うので設定はしない)
  objEXCEL.sheets(1).PageSetup.Zoom = False
  ' ページの高さに合わせる
  objEXCEL.sheets(1).PageSetup.FitToPagesTall = False
  ' ページの幅に合わせる(下記は横のページを1ページで納める設定です)
  objEXCEL.sheets(1).PageSetup.FitToPagesWide = 1
  ' 用紙サイズの設定(A3 サイズ)
  ' その他の定数については、http://msdn.microsoft.com/ja-jp/library/office/ff834612.aspx を参照
  objEXCEL.sheets(1).PageSetup.PaperSize = xlPaperA3
  ' 印刷方向(横向き設定、縦の場合は xlPortrait)
  objEXCEL.sheets(1).PageSetup.Orientation = xlLandscape

投稿日時 - 2013-06-17 17:00:05

お礼

hiro-kayuさん、お礼が遅くなってすみませんでした。

なかなかうまくいかなかったのですが、objEXCELの宣言を消して
教えていただいた設定の中の、objEXCELの部分をすべてxlsheetにしたところ
やっと今日うまくいきました。

2回に渡って丁寧な回答ありがとうございました!

これからもこれをいろいろ活用していきたいと思います。

投稿日時 - 2013-06-20 23:08:45

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

罫線や行の高さは、Range、Cells に対して設定を行います。


罫線の例)
  objEXCEL.Range("セル範囲").Borders(罫線の位置).LineStyle = 罫線の種類
  objEXCEL.Range("セル範囲").Borders(罫線の位置).Weight = 罫線の太さ

  *罫線の位置
   Excel.XlBordersIndex.xlEdgeTop(又は 8)
   Excel.XlBordersIndex.xlEdgeBottom(又は 9)
   Excel.XlBordersIndex.xlEdgeLeft(又は 7)
   Excel.XlBordersIndex.xlEdgeRight(又は 10)

  *罫線の種類
   Excel.XlLineStyle.xlContinuous(又は 1)
   Excel.XlLineStyle.xlDash(又は -4115)
   Excel.XlLineStyle.xlDashDot(又は 4)
   Excel.XlLineStyle.xlDashDotDot(又は 5)
   Excel.XlLineStyle.xlDot(又は -4118)
   Excel.XlLineStyle.xlDouble(又は -4119)
   Excel.XlLineStyle.xlLineStyleNone(又は -4142)

  *罫線の太さ
   Excel.XlBorderWeight.xlHairline(又は 1)
   Excel.XlBorderWeight.xlMedium(又は -4138)
   Excel.XlBorderWeight.xlThick(又は 4)
   Excel.XlBorderWeight.xlThin(又は 2)

行の高さの例)

  *1行目を変更したい場合、A1、B1・・・1行目のセルを指定してあげます。
  objEXCEL.Range("A1").RowHeight = 30

列幅の例)------ 質問にはなかったのですが、とりあえず・・・

  *1列目を変更したい場合、A1、A2・・・1列目のセルを指定してあげます。
  objEXCEL.Range("A1").ColumnWidth = 30


頑張って下さい。

投稿日時 - 2013-06-17 16:38:09

あなたにオススメの質問