プロが教えるわが家の防犯対策術!

VBからエクセルの表に罫線を引くようにしたいのですが、
使用しているVBが VB2010 Expressだからか、色々検索して試しても、
エラーが出てしまい、やり方が分からなくて困っています。

ちなみに関係ないとは思いますが、エクセルは2007を使用しています。

A 回答 (2件)

こんばんは。



まずは基本的なことの確認をします。

・Excelへの参照設定はできていますよね?
 できてないなら、「ソリューションエクスプローラ」から該当のプロジェクトを右クリックし、
 「参照の追加」から「COM」タブで「Excel 12.0 Object Library」を選択して「OK」をクリックし
 ておいてください。

・VBでExcelを操作するのはなかなかやっかいです。Excelのマクロの記録は役には立ちますが
 そのままでは使用できません。

・また、いちいち「Select」しなくても罫線くらいは引けます。

以下のコードは、新しいExcelを開いてブックを追加し、Sheet1のA1:B2のセル範囲を太罫線で囲みます。

Imports Microsoft.Office.Interop.Excel
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim AppExcel As New Microsoft.Office.Interop.Excel.Application
AppExcel.Visible = True
Dim WB As Workbook
WB = AppExcel.Workbooks.Add
Dim WS As Worksheet
WS = WB.Worksheets(1)
With WS.Range("A1:B2")
With .Borders(XlBordersIndex.xlEdgeLeft)
.LineStyle = XlLineStyle.xlContinuous
.ColorIndex = XlColorIndex.xlColorIndexAutomatic
.TintAndShade = 0
.Weight = XlBorderWeight.xlThick
End With
With .Borders(XlBordersIndex.xlEdgeTop)
.LineStyle = XlLineStyle.xlContinuous
.ColorIndex = XlColorIndex.xlColorIndexAutomatic
.TintAndShade = 0
.Weight = XlBorderWeight.xlThick
End With
With .Borders(XlBordersIndex.xlEdgeBottom)
.LineStyle = XlLineStyle.xlContinuous
.ColorIndex = XlColorIndex.xlColorIndexAutomatic
.TintAndShade = 0
.Weight = XlBorderWeight.xlThick
End With
With .Borders(XlBordersIndex.xlEdgeRight)
.LineStyle = XlLineStyle.xlContinuous
.ColorIndex = XlColorIndex.xlColorIndexAutomatic
.TintAndShade = 0
.Weight = XlBorderWeight.xlThick
End With
End With
End Sub
End Class
    • good
    • 0
この回答へのお礼

参照設定というのは全く分かっていませんでした。

Selectはエラーになるので、withステートメントを使わずに1行で

xlSheet.Range("A1:B10").Borders(xlInsideVertical).Weight = xlHairline

というようにして対処していました。ichhabehungerさんのやり方は考えもしてませんでした。
おかげ様で何とかなりそうです。
ありがとうございました。

お礼日時:2011/02/07 22:04

sub a()


sheets("sheet1").activate
range("A1").currentregion.select  罫線引き始めるrange 指定
selection.borders(xlleft).linestyle=xlcontinuous 左側指定
selection.borders(xlright).linestyle=xlcontinuous  右側部指定
selection.borders(xltop).linestyle=xlcontinuous 上部指定

selection.borders(xlbottom).linestyle=xlcontinuous 下部指定
end sub

xlcontinuous 実線 xldashdot 1点鎖線   xldot 点線
xldash 破線 xlfashdotdot 2点鎖線 xldouble 二重線
xlslantdashdot 斜点線  xllinestylenone なし
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
さらに色々と調べてみたところ、

Const xlDiagonalDown As Long = 5
Const xlDiagonalUp As Long = 6
Const xlEdgeLeft As Long = 7
Const xlEdgeTop As Long = 8
Const xlEdgeBottom As Long = 9
Const xlEdgeRight As Long = 10
Const xlInsideVertical As Long = 11
Const xlInsideHorizontal As Long = 12

Const xlContinuous As Long = 1
Const xlDashDot As Long = 4
Const xlDashDotDot As Long = 5
Const xlSlantDashDot As Long = 13
Const xlDash As Long = -4115
Const xlDot As Long = -4118
Const xlDouble As Long = -4119
Const xlLineStyleNone As Long = -4142
Const xlHairline As Long = 1
Const xlThin As Long = 2
Const xlThick As Long = 4
Const xlMedium As Long = -4138

という定数を宣言していないことが分かり、試したらうまくいきました。

お礼日時:2011/02/07 21:41

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