VB.net(2005)で特定名称のエクセルシートを操作する方法は?

このQ&Aのポイント
  • VB.net(2005)の環境でエクセルの特定名称のシートを操作する方法を教えてください。
  • VB.net(2005)でエクセルファイルを開いて特定名称のシートをアクティブにする方法を教えてください。
  • VB.net(2005)を使用してエクセルの特定名称のシートを操作する方法を教えてください。
回答を見る
  • ベストアンサー

VB.net(2005)でエクセルの特定名称のシートを操作したい。

  お世話になります。 WindowsXP + SP3、VB.net(2005)の環境にて開発をしております。 VB.netから既存のエクセルファイル(雛形)を開き、特定の名称のシートを アクティブにしたいのですがどのようにコーディングすれば良いでしょうか? ※色々とネットで情報検索してみましたが特定の名前のシートを操作する  方法をうまく見つけられず質問致しました。 エクセルファイル名:売上情報_2009年.xls シート名     :"200901" ~ "200912" の12シート 以前、VB6で同様のことを行ったときは以下のような記述で実現できました。 Dim xlApp As Object Dim xlsheet As Object xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Open(FileName:="C:\売上情報_2009年.xls") xlsheet = xlApp.Sheets("200908") xlsheet.Activate() 現状、vb.netで以下のコーディングまではできております。 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlBook As Excel.Workbook = xlBooks.Open("C:\売上情報_200904.xls") Dim xlSheets As Excel.Sheets = xlBook.Worksheets よろしくお願い致します。  

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

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

Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlBook As Excel.Workbook = xlBooks.Open("C:\売上情報_200904.xls") Dim xlSheets As Excel.Worksheet = xlBook.Worksheets("200908") xlApp.Visible = True xlSheets.Activate() と言う感じ?

Elldorado
質問者

お礼

お世話になっております。 Option Strict On になっておりましたので型変換(CType)を追加して、 以下のロジックにてシート名指定でシートをアクティブにすることができました。 ありがとうございました。 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlBook As Excel.Workbook = xlBooks.Open("C:\売上情報_200904.xls") Dim xlSheet As Excel.Worksheet = CType(xlBook.Worksheets("200908"), Excel.Worksheet) xlApp.Visible = True xlSheet.Activate()  

関連するQ&A

  • VB2005でExcelのシートをコピー

    VB2005Expressで開発をしています。 Excelのシートをコピーして同じbookに追加をしたいと思っています。 下記でまずExcelを使用できるようにして  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 下記で追加できると思うのですが、()内にセットするパラメータが わかりません・・・  xlBook.Worksheets.Copy() どなたかご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • VB2005でのEXCEL制御について

    いつもお世話になってます。 私はVB入門者です。 VBからシートを選択して値を入れることは出来たのですが 範囲選択→格子罫線をひく、といったような操作について 調べたところ、マクロをつくりコピーアンドペーストでスムーズに いくということがわかったので、試したところうまくいきませんでした。 又、質問ナンバー QNo.3575919 に [Visual Basic2005でExcelに罫線を描く]とあり 「CreateObject("Excel.Application")」はソースに入っているか という部分がポイントのようなので、少しいじってはみたのですが うまくかけませんでした。 と、いうよりも理解できませんでした。 下記のコードでは選択範囲を指定する部分まで成功したものです。 アドバイスよろしくお願いします。 Sub excel_app() 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 xlApp = New Excel.Application() xlBooks = xlApp.Workbooks xlBook = xlBooks.Open("C:\hoge.xls") xlSheets = xlBook.Worksheets xlBook.Worksheets(1).Range("A31:Y55").Select() xlBook.Worksheets(1).Range.Borders. ←これ以降がわかりません。

  • VBでEXCELのシートのコピーに関して

    同一Book内で、シートのコピーをしようと考えて、幾つかのHPを参考に、以下のような 記述をしました。 その際に、以下の記述をした場合、本来はコピー先のシート名を変更したいにも関わらず、コピー 元のシート名が変わってしまいます。 追加したシートの名前を変更させるには、どのような書き方にすれば良いでしょうか? 自分で記述しておきながら、どのように対応したら良いかわからず。。。 また、以下のような記述をした場合、追加したセル側のシートを操作したいにも関わらず、 コピー元のシートを書き換えてしまいます。 追加したシートのセルを操作したい(値を入力)ような場合は、どのような記述を すれば良いでしょうか。。。 ご教授頂ければと思います。 '既存のEXCELファイルを開く Dim xlFilePath As String = "C:\test.xls" '起動時の処理 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath) '確認のためExcelのウィンドウを表示する xlApp.Visible = True Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = CType(xlSheets.Item(1), Excel.Worksheet) Dim xlSheet2 As Excel.Worksheet = xlBook.Worksheets(1) 'シートのコピー xlSheet.Copy(After:=xlSheet2) 'シートに名前を付ける xlSheet.Name = "TEST" Dim xlRange As Excel.Range 'データの入力セル範囲 xlRange = xlSheet.Range("A1:A1") 'セルへデータの入力 xlRange.Value = “AABBCC”

  • エクセルの開放

    VB2008でエクセルを操作しているのですが、エクセルのプロセスが残ってしまってどうやって解放すればいいのかわかりません。 サンプルプログラム-------------- 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) Dim xlobj As Object '開放用 xlobj = xlSheet.Range("A1:C3") xlobj.Value = "TEST" MRComObject(xlobj) MRComObject(xlSheet) MRComObject(xlSheets) xlBook.Close(False) MRComObject(xlBook) MRComObject(xlBooks) xlApp.Quit() MRComObject(xlApp) MRComObjectでCOM オブジェクトへの参照を解放しています。 このプログラムでは特に問題ないのですが、 xlobj = xlApp.Worksheets("Sheet2") xlobj2 = xlobj.Range("A1:C2") xlobj2.Value = "TEST" のようにワークシートを指定すると解放できません。 xlSheet = xlBook.Worksheets("Sheet2") としてもプロセスが残ります。 またVB6.0では可能だった xlApp.Worksheets("Sheet2").Select() のようにワークシートを切り替えるときもVB2008ではプロセスが残ってしまいます。 これはどのようにしたら解決するのでしょうか?

  • VB2008 エクセル出力

    VB2008 エクセル出力 教えていただけると助かります VB6.0使用時にエクセル出力をするために下記のようなプログラムで出力していました ※「Microsoft Excel 9.0 Object Library」を参照 Dim xlApp As EXCEL.Application Dim xlBook As EXCEL.Workbook Dim xlsheet As EXCEL.Worksheet Dim File As String File = App.Path + "\EXCEL\" + "フォーム.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(File) Set xlsheet = xlBook.Worksheets("テスト") xlsheet.Range("A1") = "テスト" 'フォルダ作成 If Dir("D:\", vbDirectory) = "" Then Call Mkdirs("D:\テスト") 'Worksheetを名前をつけて保存します。 xlApp.DisplayAlerts = False xlsheet.SaveAs "D:\テスト\テスト.xls" xlApp.Quit Set xlApp = Nothing Set xlBook = Nothing Set xlsheet = Nothing VB2008の場合だとどのように書けば同じように動きますか ※色々試してみましたがダメでした 「Microsoft Excel 12.0 Object Library」を参照しています

  • VB.NETからEXCELの起動が、うまくいかない

    3回目の同じ質問になってしまうのですがよろしくお願いいたします。 下記のようなソースでEXCELファイルを作成し、その後ファイルを開くという処理をしています。 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) Dim xlRange As Excel.Range Dim xlCells As Excel.Range = xlSheet.Cells xlRange = xlCells(1, 10) xlRange.Value = "--" xlRange = xlCells(1, 5) xlCells.EntireColumn.AutoFit() xlBook.SaveAs(sPath & "\" & sFileName, Excel.XlFileFormat.xlWorkbookNormal) System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlCells) System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlRange) System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlSheet) System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlSheets) xlCells = Nothing xlRange = Nothing xlSheet = Nothing xlSheets = Nothing xlBook.Close() System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlBook) System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlBooks) xlBook = Nothing xlBooks = Nothing xlApp.Quit() System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlApp) xlApp = Nothing GC.Collect() System.Diagnostics.Process.Start(sPath & "\" & sFileName) ある特定のPCでのみEXCELのメニューバーとステータスバーのみしか表示されない状態です。 起動部分(Process.Start)をコメントアウトして確認したところ GC.COLLECTでEXCELが終了することなく、アプリの終了時にEXCELが終了する 状態にあります。 これはオブジェクトの開放がうまくいっていないのでしょうか? よろしくお願いいたします。

  • VB2005でエクセルの機能を使うには

    VB2005でエクセルに数値を貼り付けた後自動的に エクセルの機能を使ってA列で並び替えをしたいのですが可能でしょうか。 今のソース s1()の配列に数値がはいっている。 exp s1(1)="1.0,2.0,3.0,4.0......" Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlFilePath As String = Application.StartupPath & "\aaa.xls" Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath) Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = xlSheets.Item(1) ':::::::::::::::::::::::::::::::::::::::::::::::sheet1 '-----貼り付け開始 Dim xlRange As Excel.Range Dim xlCells As Excel.Range Dim xlRange1 As Excel.Range xlCells = xlSheet.Cells Dim j Dim Col As String For i = 1 To irec - 1 temp = Split(s1(i), ",") For j = 0 To 12 xlRange1 = xlCells(3 + i, 1 + j) Col = xlRange1.Address(False, False) xlRange = xlSheet.Range(Col) xlRange.Value = temp(j) Next j Next i ここで並び替えしたいのですが。

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

  • VB2005でのEXCELマクロ操作

    お世話になっております。 VB2005から指定したEXCELファイルを開き、標準モジュールにあるマクロを起動したいと考えております。 調べたところ、Runメソッドを使用するようですが、マクロファイルを開くところで停止してしまいます。 以下にソースを書きましたので、アドバイス頂きたいと思います。 Dim n As Short 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 Fname As String = "C:\Documents and Settings\hoge\Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLS" '読み込むファイル Try xlApp = New Excel.Application() xlBooks = xlApp.Workbooks For n = 0 To fil.Length - 1 xlBook = xlBooks.Open(fil(n)) xlSheets = xlBook.Worksheets xlApp.Run("'" & Fname & "'!module2.DB処理", fil(n)) '引数をもつ処理の呼び出し方法 '1000ミリ秒(1秒)待機する System.Threading.Thread.Sleep(1000) ' Excel ブックを保存する xlApp.DisplayAlerts = False xlBook.Save() Next ' Microsoft Excel を終了する xlApp.Quit() Finally If Not xlSheet Is Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet) End If If Not xlSheets Is Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets) End If If Not xlBook Is Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook) End If If Not xlBooks Is Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks) End If If Not xlApp Is Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) End If End Try

  • VBからエクセルを起動。そのあとエクセルを終了

    教えてください。 VBからエクセルを起動します。 そのあと、エクセルのシートの上にデータを貼り付けます。そして、エクセルを終了します。 しかし、エクセルが終了しません。 タスクバー上のエクセルをクリックすると終了します。 どうして、このような現象が起こるのかわかりません。 教えてください。 下記に同様のサンプルを書きました 誤記入があるかも知れませんが このような感じのプログラムです。 以上、よろしくお願いします。 public sub test Dim XApp as Excel.Application Dim nfilename as string Dim xlBook As Object Dim xlSheet As Object ' エクセルを起動 Set xlApp = New Excel.Application nfilename ="AAAA.xls" ' 指定されたファイルを開く Call xlApp.Workbooks.Open(nfilename) Set xlBook = xlApp.ActiveWorkbook Set xlSheet = xlBook.Worksheets(1) 'フォームを貼り付ける xlSheet.Range("a1").PasteSpecial      'ファイル名の作成 Filename="BBBB.xls" '保存 ChDir "C:\" xlBook.SaveAs Filename:=Filename,FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Set xlSheet = Nothing xlBook.Close True Set xlBook = Nothing xlApp.Quit Set xlApp = Nothing End sub