• ベストアンサー

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()

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

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

npupu
質問者

お礼

いつもありがとうございます。 今回のプログラム作成については、必要箇所のみを かいつまんで作っており、基礎知識がないままで作業を進めているもので申し訳ありません。 もう少し時間がかかりそうなのですが、理解しながら進めていこうと思います。 選択範囲の外枠をひくには下記のような長いコードを書くのか それとも短縮できるものなのでしょうか? 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

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

ANo.1です。 >選択範囲の外枠をひくには下記のような長いコードを書くのか >それとも短縮できるものなのでしょうか? 実際私もVB自体は皆無と言っていい程、使ったこと(起動させたこと)が ないもので、方法があるかどうかは正直わかりません。 ただExcelVBAでもセル範囲の外枠だけ罫線を引く時は、ほぼ同じ様に なると思いますので、そんなに変わらないようにも感じています。

npupu
質問者

お礼

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

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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 にヒントがあるのかな。

npupu
質問者

お礼

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

関連するQ&A