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

解決済みの質問

VB2005でのEXCEL操作

いつもお世話になってます。
VBレスキュー花ちゃんを参考にやってみたのですがうまくいかないのでアドバイス頂きたいと思います。

下記のコードにてセル内にテキストを書き、罫線をつけたあと
文字を中央揃えにする場合は、どのようにすればいいのでしょうか。
エクセルにてマクロ記録を行い、開いたところ

Range("B1").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With

と、ありましたがHorizontalAlignment = xlCenterを
xlBook.Worksheets(1).Range("A1")以降に貼り付けても
xlCenterが宣言されていない、とエラーが出てしまいました。

又、空白セルであるE1,F1,G1及びE2,F2,G2、E3,F3,G3は"選択セルの中央揃え"とする場合
HorizontalAlignment = xlCenterAcrossSelection
はどのように転載すればいいのでしょうか。

EXCELとの連携について全然理解できていないことが原因なのですが
VB6を対象としているサイトでもVB2005にそのまま参考となるのでしょうか。
EXCEL操作については基礎の部分から学びたいので、もし私のように
入門者向けに解説を行っているサイトがありましたら教えてください。


Sub excel2()

Dim xlApp As Excel.Application = Nothing
Dim xlBooks As Excel.Workbooks = Nothing
Dim xlBook As Excel.Workbook = Nothing
Dim xlSheets As Excel.Sheets = Nothing
Dim xlSheet As Excel.Worksheet = Nothing
Dim xlRange As Excel.Range = Nothing
Dim xlBorders As Excel.Borders = Nothing
Dim xlBorder As Excel.Border = Nothing
Try ' 必要な変数は Try の中でインスタンス化する
xlApp = New Excel.Application()
xlBooks = xlApp.Workbooks
xlBook = xlBooks.Open("C:\test.xls")
xlSheets = xlBook.Worksheets
xlApp.Visible = True

xlBook.Worksheets(1).Range("A1") = "No."
xlBook.Worksheets(1).Range("B1") = "HOGEHOGE"
xlBook.Worksheets(1).Range("B2") = "番号"
xlBook.Worksheets(1).Range("C1") = "honyarara"
xlBook.Worksheets(1).Range("C2") = "番号"
xlBook.Worksheets(1).Range("D1") = "SAMPLE"
xlBook.Worksheets(1).Range("E4") = "X"
xlBook.Worksheets(1).Range("F4") = "Y"
xlBook.Worksheets(1).Range("G4") = "Z"
'外枠罫線のコードは省略しました


xlApp.Quit()

投稿日時 - 2008-08-22 17:43:46

QNo.4270250

すぐに回答ほしいです

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

>.HorizontalAlignment = xlCenter
>.VerticalAlignment = xlCenter

xlRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter
xlRange.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
ではないかな?

投稿日時 - 2008-08-22 19:02:19

お礼

いつもありがとうございます。
今回のプログラム作成については、必要箇所のみを
かいつまんで作っており、基礎知識がないままで作業を進めているもので申し訳ありません。

もう少し時間がかかりそうなのですが、理解しながら進めていこうと思います。

選択範囲の外枠をひくには下記のような長いコードを書くのか
それとも短縮できるものなのでしょうか?

xlRange = xlBook.Worksheets(1).Range("A1:A4")
xlBorders = xlRange.Borders
xlBorder = xlBorders(Excel.XlBordersIndex.xlEdgeBottom)
xlBorder.LineStyle = Excel.XlLineStyle.xlContinuous
xlBorders = xlRange.Borders
xlBorder = xlBorders(Excel.XlBordersIndex.xlEdgeTop)
xlBorder.LineStyle = Excel.XlLineStyle.xlContinuous
xlBorders = xlRange.Borders
xlBorder = xlBorders(Excel.XlBordersIndex.xlEdgeRight)
xlBorder.LineStyle = Excel.XlLineStyle.xlContinuous
xlBorders = xlRange.Borders
xlBorder = xlBorders(Excel.XlBordersIndex.xlEdgeLeft)
xlBorder.LineStyle = Excel.XlLineStyle.xlContinuous

投稿日時 - 2008-08-22 20:22:45

ANo.1

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

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

回答(3)

ANo.3

ANo.1です。

>選択範囲の外枠をひくには下記のような長いコードを書くのか
>それとも短縮できるものなのでしょうか?
実際私もVB自体は皆無と言っていい程、使ったこと(起動させたこと)が
ないもので、方法があるかどうかは正直わかりません。

ただExcelVBAでもセル範囲の外枠だけ罫線を引く時は、ほぼ同じ様に
なると思いますので、そんなに変わらないようにも感じています。

投稿日時 - 2008-08-22 21:43:46

お礼

ありがとうございます!

そんなに変わらないのですね。
VBAの書籍を購入してきたので、じっくり読みます!

投稿日時 - 2008-08-23 00:59:41

ANo.2

#1のご回答のようなVB2005で使える定数があると思いますが
エクセルVBAで
Sub test01()
MsgBox xlCenter
MsgBox xlUp
Range("a1").HorizontalAlignment = -4108
End Sub
をやると第1行は-4108と表示されるので、急ぐならこういう方法でとりあえず凌いではどうですか。
第3行目は、エクセルVBAでは、中央揃えで成功したようで、エクセル本体のプログラム(オブジェクト)に対し行わせるのだから、最終的にこの定数でのコードが実行されることは間違いないでしょう。
ーー
エクセル定数xl○○はエクセルの世界で定義されていると思うので、VB.NETの世界ではそのようには定義されていないのでしょう。
その辺の名前のつけ方にソース上で規則があるのかどうか、不勉強で
判りません。
--
エクセル組み込み定数の値そのものは
http://support.microsoft.com/default.aspx?scid=kb;JA;407881
にあります。
(私が書いた-4108も xlCenterのところに載ってます。)
http://www.hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?no=623&reno=622&oya=622&mode=msgview&page=1590から)
ーー
http://www.hanatyan.sakura.ne.jp/vbnetbbs/wforum.cgi?no=625&reno=624&oya=622&mode=msgview&page=1590
にヒントがあるのかな。

投稿日時 - 2008-08-22 20:40:31

お礼

見ていただきありがとうございます。
サイトを参考にし、Excelとの関連について
もっと深く学んでいきます!

投稿日時 - 2008-08-23 00:22:05