C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: VisualStudio(VB)からExcel罫線ひく方法


(過去ログ 126 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■74967 / inTopicNo.1)  VisualStudio(VB)からExcel罫線ひく方法
  
□投稿者/ よー (1回)-(2015/02/14(Sat) 10:48:44)

分類:[.NET 全般] 

2015/02/14(Sat) 14:56:03 編集(投稿者)
2015/02/14(Sat) 14:55:58 編集(投稿者)

VisualStudioのプログラムから、新規で出力したExcel(xlsx)に罫線をひく方法を探していますが、
どうしてもできません。(本来は範囲指定してその範囲に罫線をひきたい)
分かる方、ご教授ください。
参照設定が悪ければ参照設定のこともお願いします。

下記に分かるだけの環境とプログラムを記載します。
「罫線====」の部分の書き方が何か間違っていると思っているんですが…
正解が分かりません。「HRESULT からの例外・・・」というエラーが出ます。


Windows7Pro SP1(32ビット)
VisualStudio2010Pro のVB2010で開発

Microsoft Office Pro Plus2010
Excelバージョン14.0.6106.5000(32ビット)



ーーーーーーーーーーーーーーーーーーーーーー


Private Sub Button2_Click(sender As Object, e As System.EventArgs) Handles Button2.Click


On Error GoTo Err_fnc_ExcelOut
Dim objExcel As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet


Dim strOutFilePath As String
Dim strOutFilePathBK As String

'出力ファイルパスの指定
'strOutFilePass = CurrentProject.Path '自MDBのパス
strOutFilePath = "D:\テスト.xlsx"


objExcel = CreateObject("Excel.Application")
xlBook = objExcel.Workbooks.Add
xlSheet = xlBook.Worksheets(1)


'メッセージを非表示にする
objExcel.DisplayAlerts = False

xlBook.Worksheets.Add.Name = "罫線だしたい"

xlBook.SaveAs(strOutFilePath, Excel.XlFileFormat.xlWorkbookDefault)

'' ''出力先のExcelファイルを指定
objExcel.Workbooks.Open(strOutFilePath)
objExcel.Worksheets("罫線だしたい").Select()

'罫線========================================================================================
xlSheet.Range("B2:C2").Borders.LineStyle = Excel.XlLineStyle.xlContinuous   'こちらのパターンもダメ
'xlSheet.Range(xlSheet.Cells(2, 2), xlSheet.Cells(3, 2)).Borders.LineStyle = True   'こちらのパターンもダメ
'========================================================================================

'結合セル
objExcel.Range("B7:B20").Merge()

'項目行 色付
' objExcel.Range("A3:M3").Interior.Color = vbYellow
objExcel.Range("A1:KD6").Interior.Color = RGB(204, 255, 255)
objExcel.Range("A1:E20").Interior.Color = RGB(204, 255, 255)


'セル幅を文字長に合わせる
objExcel.Columns("B:KD").autofit()

objExcel.Cells(6, 3).Value = "罫線が出ない"

'sheet「抽出結果」をアクティブに
objExcel.Worksheets("罫線だしたい").Select()

objExcel.SaveWorkspace() '保存する
objExcel.Quit() '閉じる

'メッセージを表示にする
objExcel.DisplayAlerts = True


xlSheet = Nothing
xlBook = Nothing
objExcel = Nothing


Application.Exit()


Exit_fnc_ExcelOut:
Exit Sub

Err_fnc_ExcelOut:

objExcel.Quit()
MsgBox(Err.Description)
''DoCmd.Hourglass(False)
Resume Exit_fnc_ExcelOut

End Sub

ーーーーーーーーーーーーーーーーーーーーーー



すみません。
分類を ASP.net(VB) から .net全般 に修正します。
おそらく、この分類で正しいのかと・・・・

引用返信 編集キー/
■74968 / inTopicNo.2)  Re[1]: VisualStudio(VB)からExcel罫線ひく方法
□投稿者/ shu (688回)-(2015/02/14(Sat) 12:50:15)
No74967 (よー さん) に返信

ASP.NET ということはサーバーサイドでのExcel操作でしょうか? => NG

> xlSheet.Range("B2:C2").Borders
など連続して.を繋げる(プロパティの1文での連続アクセス)のはComオブジェクト解放の
問題があるので1つづつ区切ってインスタンスを確保しReleaseComObject出来るようにする必要がある。


BordersはRange内の各罫線を含むコレクションなのでどの罫線なのか指定する必要がる。
XlBordersIndex列挙体の値を使用。


Excelのマクロ記録で実際に処理を記録してみるとわかりやすいかもしれません。
引用返信 編集キー/
■74969 / inTopicNo.3)  Re[2]: VisualStudio(VB)からExcel罫線ひく方法
□投稿者/ WebSurfer (502回)-(2015/02/14(Sat) 13:07:15)
No74967 (よー さん) に返信

サーバーサイドで excel を操作することはマイクロソフト
はサポートしていません。

それ用のサードパーティ製品を使うか Open XML ライブラリー
を使うことを検討されることをお勧めします。

引用返信 編集キー/
■74973 / inTopicNo.4)  Re[2]: VisualStudio(VB)からExcel罫線ひく方法
□投稿者/ よー (3回)-(2015/02/14(Sat) 14:52:31)
返信ありがとうございます。
すいません。ここ最近、開発環境でASPという言葉をよく耳にしていたので、そう言ってしまいました。
サーバーサイドでのExcel操作ではありませんので、ASPではないと思います。
ウィンドウズアプリケーションといえばいいのでしょうか?
exeファイル実行で、フォーム画面が出てきて、ボタンを押すとそのプログラムが動くという感じです。

ちなみに以前、Access2010で同様のプログラムを作ったときは動いてたのですが、VBではできない状態です。
よろしくお願いします。
引用返信 編集キー/
■74976 / inTopicNo.5)  Re[3]: VisualStudio(VB)からExcel罫線ひく方法
□投稿者/ shu (689回)-(2015/02/14(Sat) 16:15:31)
No74973 (よー さん) に返信
> よろしくお願いします。
回答済
引用返信 編集キー/
■74989 / inTopicNo.6)  Re[4]: VisualStudio(VB)からExcel罫線ひく方法
□投稿者/ よー (4回)-(2015/02/16(Mon) 15:21:16)
別のサイトに載っていた
この方法で、罫線をひくことにより 解決しました。


------------------------



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

-----------------

また、
Imports Microsoft.Office.Interop は使用せず、 Imports Microsoft.Office.Interop.Excel を
使用するようにしました。

皆様ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -