Excelのアクティブなセル情報

このQ&Aのポイント
  • C#でExcelのアクティブなセル情報を取得する方法について教えてください。
  • Excelで太枠で選択されたセルのセル参照を取得する方法がわかりません。
  • Excelのアクティブなセルがnullのままになる原因を教えてください。
回答を見る
  • ベストアンサー

Excelのアクティブなセル情報

C#でプログラミングをしています。 Excelで、太枠で選択されたセルのセル参照を表示させたいのですが出来ません。 --------- string t; Excel.Application oApplication = null; Excel.Range oRange = null; oApplication = new Excel.Application(); oRange = oApplication.ActiveCell; t = oRange.get_Address(Type.Missing, Type.Missing, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing); MessageBox.Show(t); --------- oRangeがnullのままなのですがなぜでしょうか??

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

  • ベストアンサー
  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.1

質問に書かれたコードの他に既存のExcelファイルを開くコードがあると思うのですが、それが失敗しているのでは。 下の@ITの記事などを見てusingとExcelファイルを開くコードを追加したらセルアドレスが表示されました。 http://www.atmarkit.co.jp/fdotnet/dotnettips/717excelfile/excelfile.html Vista Ultimate SP1 + C# 2008 Express Edition + Excel 2007 で試しました。

apple_cube
質問者

お礼

Excel.Workbook oWBook; oWBook = (Excel.Workbook)(oApplication.Workbooks.Open( @"C:Bookwork.xlsm", // オープンするExcelファイル名 Type.Missing, // (省略可能)UpdateLinks (0 / 1 / 2 / 3) Type.Missing, // (省略可能)ReadOnly (True / False ) Type.Missing, // (省略可能)Format // 1:タブ / 2:カンマ (,) / 3:スペース / 4:セミコロン (;) // 5:なし / 6:引数 Delimiterで指定された文字 Type.Missing, // (省略可能)Password Type.Missing, // (省略可能)WriteResPassword Type.Missing, // (省略可能)IgnoreReadOnlyRecommended Type.Missing, // (省略可能)Origin Type.Missing, // (省略可能)Delimiter Type.Missing, // (省略可能)Editable Type.Missing, // (省略可能)Notify Type.Missing, // (省略可能)Converter Type.Missing, // (省略可能)AddToMru Type.Missing, // (省略可能)Local Type.Missing // (省略可能)CorruptLoad )); を追加したらできました! ありがとうございました^^

関連するQ&A

  • C#でのEXCEL出力に関して

    教えて下さい。 C#でEXCELシートにデータを出力していますが、その際に以下のような記述をした場合、 EXCELファイルは作成されるものの、そのファイルをダブルクリックで開こうとすると、 EXCELの枠だけ表示され、中身のシートが表示されない現象となってしまいます。 それらしきオブジェクトはすべて開放しているつもりですが、その事象を解決できません。 どこがおかしいか教えて頂きたいと思います。 記述に過不足あればご指摘下さい。 尚、環境は、WindowsXP Office2000-EXCEL です。 《記述内容》 ////////////////////////////////// //ここからエクセルシートへの転記// ////////////////////////////////// Excel.Application objExcel = null; Excel.Workbooks objBooks = null; Excel.Workbook objBook = null; Excel.Worksheet sheet = null; Excel.Range range1 = null; Excel.Range range2 = null; Excel.Range range3 = null; //ExcelのCOMオブジェクトの生成 objExcel = new Excel.Application(); //Excelを表示する設定 //objExcel.Visible = isVisible; //ワークブックの集合体取得 objBooks = objExcel.Workbooks; //ブックの新規作成 objBook = objBooks.Add(Missing.Value); //シートを取得 sheet = (Excel.Worksheet)objBook.Sheets.get_Item(1); //Rangeを取得 range1 = (Excel.Range)sheet.Cells[1, 1]; range2 = (Excel.Range)sheet.Cells[1, 2]; //文字列を設定 //ヘッダ書き込み range1.Value = "仕入先名"; range2.Value = "図面番号"; //エクセルシート側の行数カウント変数 int rcount = 2; //データテーブル側の行数カウント変数 int tcount = 0; for (tcount = 0; tcount < mst_cnt;tcount++ ) { range1 = (Excel.Range)sheet.Cells[rcount, 1]; range2 = (Excel.Range)sheet.Cells[rcount, 2]; range1.Value = 仕入先名[tcount]; range2.Value = 図面番号[tcount]; rcount++; } //エクセルシート削除 DeleteFile(@"c:\\" + h_no + ".xls"); //エクセルシート生成 objBook.SaveAs( "c:\\" + h_no + ".xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, 0, Missing.Value, Missing.Value, Missing.Value, Missing.Value ); //COMオブジェクト解放 Marshal.ReleaseComObject(range1); Marshal.ReleaseComObject(range2); //COMオブジェクトの開放(必須) Marshal.ReleaseComObject(objBook); objBook = null; Marshal.ReleaseComObject(sheet); sheet = null; Marshal.ReleaseComObject(objBooks); objBooks = null; //System.Runtime.InteropServices.Marshal.ReleaseComObject(objExcel); objExcel.Quit(); Marshal.ReleaseComObject(objExcel); objExcel = null; //objExcel.Quit(); return; } よろしくお願いします。

  • C# Excelファイルへの画像挿入。

    C# shapes.AddPictureによるExcelファイルへの画像挿入。 現在、C#でExcelファイル(xls)にPNG画像を貼り付けるツールを作成しています。 以下のプログラムを実行したのですが、 shapes.AddPicture(@"C:\test.png", MsoTriState.msoFalse,MsoTriState.msoFalse,fx, fy, 100,100); の部分で以下の様なエラーが表示されました。 ---------------- エラー文 ---------------- 型 'System.Runtime.InteropServices.COMException' のハンドルされていない例外が mscorlib.dll で発生しました 追加情報: 指定された値は境界を超えています。 ---------------- つきましては解決方法を教えてください。 ----------------------- プログラム ----------------------- Excel.Application exApp = new Excel.Application(); Excel.Workbook wkbook; Excel.Workbooks wkbooks = exApp.Workbooks; exApp.Visible = true; exApp.DisplayAlerts = false; wkbook = (Excel.Workbook)wkbooks.Open(@"C:\test.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Excel.Sheets sheets = wkbook.Worksheets; Excel.Worksheet wksheet = (Excel.Worksheet)sheets["test"]; Excel.Range cells = wksheet.Cells; Excel.Range range = (Excel.Range)cells[1, 21]; range.Select(); Excel.Shapes shapes = wksheet.Shapes; float fx = float.Parse(range.Left.ToString()); float fy = float.Parse(range.Top.ToString()); shapes.AddPicture(@"C:\test.png", MsoTriState.msoFalse,MsoTriState.msoFalse,fx, fy, 100,100); -----------------------

  • エクセルで行を非表示にするとアクティブなセルが・・・

    エクセルで行を非表示にするとアクティブなセル?行?がどこかわからなくなり、マクロでアクティブなセルを移動するときにエラーが出ます。 Sub example() ActiveSheet.Range("D3").Select Do Until ActiveCell = 23 If ActiveCell <> "" Then ActiveCell.Offset(1, 0).Select ElseIf ActiveCell <> "" Then ActiveCell.Offset(1, -3).Select ElseIf ActiveCell <> "" Then ActiveCell.Offset(1, -6).Select Else: ActiveCell.EntireRow.Select Selection.EntireRow.Hidden = True ActiveCell.Offset(0, -6).Select End If Loop End Sub 一番下のActiveCell.Offset(0, -6).Select にエラーが出るのですが、どうすればセルを移動できるでしょうか?

  • EXCELでENTERキーでセルの移動マクロ

    こんにちは。 EXCELでENTERキーでセルの移動マクロを使いたいのですが、下記のマクロで改良を教えてもらいたいと思います。 まず、最初は必ず、セルB5にフォーカスしたいということ。そうして、できればOFFSETを使わないで、rangeかcellを使いたいのですが、お願いします。 Sub セル移動() Range("B5").Select Select Case ActiveCell.Column Case 1 ActiveCell.Offset(1, 1).Activate Case 2 ActiveCell.Offset(2, 2).Activate Case 3 ActiveCell.Offset(1, 1).Activate Case 4 ActiveCell.Offset(1, 1).Activate End Select End Sub

  • プログラミング初心者です。お世話になります。

    プログラミング初心者です。お世話になります。 作成しているアプリケーションからExcelファイルを開き、アクティブなセルのアドレスを、フォーム上のラベルに表示したいのですが、うまくいきません。 シートを表示させるところまではできました(下記サイトをまるまる参考にしました) <http://www.atmarkit.co.jp/fdotnet/dotnettips/717excelfile/excelfile.html> 下記のように、A1の中身を表示させることはできたのですが、アクティブなセルのアドレスを表示させることができません。CellsのところをActiveCellにしたり、いろいろ試したのですが、だめでした。 Dim sCellVal As String Dim rng As Excel.Range ' Range オブジェクト rng = DirectCast(oSheet.Cells(1, 1), Excel.Range) sCellVal = rng.Text.ToString() ' A1セルの内容 Label1.Text=sCellVal どのようにすればよいでしょうか??

  • ExcelのVBAのAutoFillの使い方について

    Excel97のマクロでAutoFillを使おうとしているのですが、エラーが出て実行できません。 何も表示されていないシートでコマンドボタンを押すと、AutoFillを使ってA1セル~E1セルとA2セル~E2セルに数字の1~5が表示されるようにしたいと考えています。 下記のようにマクロを書いたところ、A1~E5はうまくできたのですが、 「Selection.AutoFill Destination:=ActiveCell.Range("A2:E2"), Type:=xlFillSeries」 の行でエラーが発生します。 「実行時エラー:1004 RangeクラスのAutoFillメソッドが失敗しました。」と表示されます。 Private Sub CommandButton1_Click()   ActiveSheet.Range("A1").Select   ActiveCell.FormulaR1C1 = "1"   Selection.AutoFill Destination:=ActiveCell.Range("A1:E1"), Type:=xlFillSeries   ActiveSheet.Range("A2").Select   ActiveCell.FormulaR1C1 = "1"   Selection.AutoFill Destination:=ActiveCell.Range("A2:E2"), Type:=xlFillSeries End Sub どなたかエラーの原因を教えていただけないでしょうか? よろしくお願いいたします。

  • Excelでマクロを使いセルの内容をコピー貼り付け

    A1セルに111と入力してあるとします。 この時B1にaaa111aaaと入力するマクロを作りたいです。 A1に222があるとB1はaaa222aaaと入力したいです。 これをマクロで作ったのですが、次のようになり、A1の内容にかかわらず常にaaa111aaaとなってしまいます。 Sub Macro1() Range("A1").Select ActiveCell.FormulaR1C1 = "111" Range("B1").Select ActiveCell.FormulaR1C1 = "aaa111aaa" Range("B2").Select Application.Goto Reference:="Macro2" End Sub これのいらない行を削除し、コピーはA1の内容となるように修正して次のようにしました。 Sub Macro1() ActiveCell.FormulaR1C1 = Range("A1") Range("B1").Select ActiveCell.FormulaR1C1 = "aaa111aaa" Application.Goto Reference:="Macro2" End Sub まだペーストするときにA1の内容とならず直接入力となっています。 これをどう変更すればいいでしょうか?

  • Excel vba でのoffsetについての質問です。

    Excel vba でのoffsetについての質問です。 セルをoffsetを使用して移動させています。 しかし、ファイルを開けた最初だけoffsetしている所とは違う所へ行ってしまいます。 試したのは Private Sub Worksheet_Activate() Range("C10").Select End Sub で起点を設定し Worksheet_Changeイベントで ActiveCell.Offset(1, 0).Select にオフセットしたいのですが、ファイルオープン時はうまく動きません。 別のセルをクリックした後だと、うまく動きだします。 ちなみにファイルオープンしてから最初に MsgBox ActiveCell.Address(0, 0, xlA1) を表示させるとC11になっています。 もう何がなんだか解らなくなっています。 原因や対策など、アドバイスよろしくお願い致しますm(_ _)m

  • VBA 特定もセルに入力で実行

    下記のコードを実行した際は問題なく実行されるのですが これを特定のセルに値が入力された際に動かそうとするとエラーになってしまいます。 Sub PaintTargetCharacter() Dim FoundCell As Range, FoundCell2 As Range Dim Addr As String Dim Addr2 As String Dim SearchArea As Range Dim SearchArea2 As Range Application.ScreenUpdating = False ActiveCell.Interior.ColorIndex = 0 '検索対象範囲 Set SearchArea = Worksheets("G番情報").Range("AE6:BG6") '検索実行 Set FoundCell = SearchArea.Find(What:=ActiveCell.Offset(0, -1), LookIn:=xlValues, _ LookAt:=xlPart, MatchCase:=False, MatchByte:=False) '検索文字列を含むセルがない場合は終了 If FoundCell Is Nothing Then Exit Sub Set SearchArea2 = Range(FoundCell.Offset(1, 0), FoundCell.Offset(33, 0)) Set FoundCell2 = SearchArea2.Find(What:=ActiveCell, LookIn:=xlValues, _ LookAt:=xlPart, MatchCase:=False, MatchByte:=False) If FoundCell2 Is Nothing Then Exit Sub FoundCell2.Copy Destination:=ActiveCell Application.ScreenUpdating = True End Sub 当然、特定のセルで値を入力後エンターキーを押すとアクティブセルは下に下がってしまうので Private Sub Worksheet_Change(ByVal Target As Excel.Range) Target.select Call PaintTargetCharacter End Sub としているのですが Set FoundCell = SearchArea.Find(What:=ActiveCell.Offset(0, -1), LookIn:=xlValues, _ LookAt:=xlPart, MatchCase:=False, MatchByte:=False) の部分でエラーが起きてしまいます。 また停止してシートに戻るとセルのカーソル表示が消えてしまいます。 この現象はシートを閉じて再度開くと直りますが なにかエラーと関係しているのでしょうか? 初心者なのでおかしな部分が多々あると思います。 ご指摘などあれば宜しくお願いします。

  • 行方向の同じ値のセルを結合するマクロ

    ネットで色々調べながら、A列方向の同じ値のセルを結合させるマクロ を作ってみたのですが、もっと簡単にできるようでしたら教えていただきたいです。 どうぞよろしくお願いいたします。 Sub セル結合() Dim r As Integer '行数 Dim i As Integer 'カウンタ r = Sheets(1).Range("a1").CurrentRegion.Rows.Count - 1 Application.DisplayAlerts = False For i = 1 To r Cells(i, 1).Activate '項目の一つ下のセルをアクティブに If ActiveCell.Value = ActiveCell.Offset(1).Value Then Range(ActiveCell, ActiveCell.Offset(1)).Merge End If Next Application.DisplayAlerts = True End Sub

専門家に質問してみよう