• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB2008 エクセル出力)

VB2008でのエクセル出力方法

このQ&Aのポイント
  • VB2008を使用してエクセル出力を行う方法について教えてください
  • VB6.0でのエクセル出力を行うためのプログラムをVB2008で同じように記述したいです
  • 「Microsoft Excel 12.0 Object Library」を参照しているVB2008でのエクセル出力について、試してみたがうまくいかないので、正しい記述方法を教えてください

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問者のVB.NETの習熟度はどれほどか判りませんが、質問のVB6のコードがWEBをコピーしたものなら、VBAと違い、VB.NETは、スクールででも、VB。NETの基礎を学ばないと難しいのではないですか。  私もそんな程度で、WEBのコードを継ぎはぎしてやってみました。 VB.NETでも、プロジェクトー参照の追加で、エクセルバージョンに応じたCOMの参照設定が必要です。 フォルダはデスクトップに作る例です。  Public Class Form1 Inherits System.Windows.Forms.Form Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '起動時の処理 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks '新規のファイルを開く   Dim xlBook As Excel.Workbook = xlBooks.Add Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = xlSheets.Item(1) xlApp.Visible = True 'Excelを表示 '------ Dim xlRange As Excel.Range Dim strDat(2, 0) As Object xlRange = xlSheet.Range("A5:A7") 'データの入力セル範囲 strDat(0, 0) = "10" 'データの作成 A5 strDat(1, 0) = "20"          'データの作成 A6 xlRange.Value = strDat 'セルへデータの入力     '--- xlSheet.Cells(10, 1).Value = "tokyo99" 'こちらの書き方も出来る     xlSheet.Cells(10, 1) = "=A5+A6" '------- System.IO.Directory.CreateDirectory("C:\Documents and Settings\xxxx\デスクトップ\smp") xlBook.SaveAs("C:\Documents and Settings\xxxx\デスクトップ\smp\sample1.xls") xlBook.Close() xlApp.Quit() ' COM オブジェクトの解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook) ' Excel のプロセス終了 System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) End Sub End Class 上記例でsmpフォルダが既にあって、警告などなく、そのまま進む。 sample1.xlsがそのフォルダに既にあると、警告が出る。 Form1を閉じて、上記フォルダを開き、上記エクセルブックを開いて確認のこと。

nasu19831013
質問者

お礼

非常に参考になりました ありがとうございました ただご教授いただいた方法だとエクセルのプロセスが終了ができませんでした 解決するにはどうしたらよろしいでしょうか

その他の回答 (2)

回答No.3

すでに、imogasi さんが回答されておられますが、投稿されたコードは、下記サイトのコードを 十分理解せず、引用されておられるようなのでそのまま使用すると、プロセスが残ってしまう等の 不具合が発生します。 VB6.0 と違い VB2008 系で使用する場合は、COM オブジェクトの解放処理が必要になります。 従って、Range オブジェクト等の COM オブジェクトを使用する場合、一度変数に受けて使用し 使用後は、解放処理(デクリメント)が必要になります。 この処理は、使用するExcel の全てのCOM オブジェクトに対して必要になります。 VB2008 系でExcel を操作する場合は、十分上記を理解した上でご使用下さい。

nasu19831013
質問者

補足

ご回答いただきありがとうございました おっしゃるとおりエクセルのプロセスが残ってしまうという不具合が発生してしまいしました 教えていただいたサイトを見たのですがVB初心者の自分には難しく… どのように作ればプロセスを終了できるでしょうか 以下に自分が作ったものを参考までに載せておきます よろしくお願いします Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim File As String = Application.StartupPath + "\EXCEL\" + "テスト.xlsx" Dim xlBook As Excel.Workbook = xlBooks.Open(File) Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = xlSheets.Item("テストレイアウト") xlSheet.Range("A14").Value = "テスト" System.IO.Directory.CreateDirectory("C:\VB\smp") xlApp.DisplayAlerts = False xlBook.SaveAs("C:\VB\smp\テスト.xlsx") xlBook.Close() xlApp.Quit() System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)

回答No.1

このあたりをご参考に。 Excelファイルにアクセスするには?[C#、VB] http://www.atmarkit.co.jp/fdotnet/dotnettips/717excelfile/excelfile.html

nasu19831013
質問者

お礼

お返事が遅れてしまいすいません ご回答ありがとうございました 参考にさせていただきます

関連するQ&A