TextBoxに入力した文字をExcelに書き込む方法は?

このQ&Aのポイント
  • VB2008で、VBフォーム内のTextBox1に入力した内容をExcelの指定したセルに書き込む方法を教えてください。
  • Excelを定義し、ファイルを開きます。次に、ワークシートを取得して、指定したセルにTextBoxの内容を書き込む方法を教えてください。
  • 現在、Excelの開放からワークシートの取得まではできていますが、その後の手順が分かりません。どうすればTextBoxの内容を指定したセルに書き込めるでしょうか?
回答を見る
  • ベストアンサー

TextBoxに入力した文字をExcelに書き込むには?

VB2008を使用しています。 VBフォーム内のTextBox1に入力した内容(例 りんご)をBottanを押すことによりExcelの指定したセル(例 A1)に書き込んで保存する方法はありますでしょうか? 現在、以下のところまでは出来ています。 ' excelを定義 Dim excel As New Microsoft.Office.Interop.Excel.Application ' excel testをファイルから開く Dim book As Microsoft.Office.Interop.Excel.Workbook book = excel.Workbooks.Open("C:\test.xls") ' 1枚目のワークシートを取得 Dim sheet As Microsoft.Office.Interop.Excel.Worksheet sheet = CType(book.Worksheets.Item(1), Microsoft.Office.Interop.Excel.Worksheet) Excelの開放からsheetの取得までは出来たのですが、ここから先がわかりません。よろしくお願いいたします。

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

  • ベストアンサー
回答No.1

投稿されたコードに続き、下記を。 sheet.Range("A1").Value = Textbox1.Text book.Save() book.Close()

caster01
質問者

お礼

前回に引き続きありがとうございます。教えて頂いたコードで無事出来ました。

関連するQ&A

  • 処理をまとめたい。

    VB2008を使用しています。 現在、VBのTextBoxにExel内のデータを表示するプログラムを作成しています。Exel内には10のシートがあり、それぞれのシート内に、20列×50行のデータ(文字)が入っています。 VBには1~10(グループ化)及び11~30の(グループ化)RadioButtonとTxstBox50個を配置し、1~10のRadioButtonでシート名を、11~30のRadioButtonで列を選択し、各TxstBoxに50行のデータを取得したいと考えています。 現在、下記のコードを作成したのですが、この方法ではシート数10×列数20=200もの似たようなコードを作成しなければなりません。もっとスマートな方法はないでしょうか? Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' excelを定義 Dim excel As New Microsoft.Office.Interop.Excel.Application ' test.xlsを取得 Dim book As Microsoft.Office.Interop.Excel.Workbook book = excel.Workbooks.Open("C:\test.xls") ' 1枚目のワークシートを取得 Dim Item(1) As Microsoft.Office.Interop.Excel.Worksheet Item(1) = CType(book.Worksheets.Item(1), Microsoft.Office.Interop.Excel.Worksheet) ・ ・ Item(20) = CType(book.Worksheets.Item(1), Microsoft.Office.Interop.Excel.Worksheet) Dim COLUMN As String If RadioButton1.Checked = True AndAlso RadioButton13.Checked Then COLUMN = "A" TextBox1.Text = Item(1).Range(COLUMN & "1").Value ・ ・ TextBox50.Text = Item(1).Range(COLUMN & "50").Value Else If RadioButton10.Checked = True AndAlso RadioButton30.Checked Then COLUMN = "T" TextBox1.Text = Item(10).Range(COLUMN & "1").Value ・ ・ TextBox50.Text = Item(10).Range(COLUMN & "50").Value Else End If

  • VBでエクセルのデータを取り込む方法

    VB2010にエクセル(2003)のデータを取り込みたいのですが、うまくいきません。 どうすればよいのでしょうか。 外部アプリなので、Public Class Form1の前にImports Excel = Microsoft.Office.Interop.Excel と記入、dim xlapp as excel.apllcation dim xlbook as exce.book dim xlsheets as excel.sheets と記入してみますがこの時点でコードエラーとなります。(ネットで調べこのように記述しました) どうすればいいでしょうか。 すみません。vb初心者なので詳しく教えていただくとたすかります。 よろしくお願いします。

  • Excelのシートをコピー

    環境は,Visual Studio 2005 Standard Editionです. プログラムを実行後,以下の例外が発生しました. 「HRESULT からの例外: 0x800A03EC」 発生場所は★の位置です. ここから------- Dim xlApp As Microsoft.Office.Interop.Excel.Application = Nothing Dim xlBook As Microsoft.Office.Interop.Excel.Workbook = Nothing Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet = Nothing xlBook = xlApp.Workbooks.Open("ファイルのパスが入ります") xlSheet = xlBook.Worksheets("シート名が入ります") Dim xlBook2 As Microsoft.Office.Interop.Excel.Workbook = Nothing Dim xlSheet2 As Microsoft.Office.Interop.Excel.Worksheet = Nothing xlBook2 = xlApp.Workbooks.Open("ファイルパスが入ります") xlSheet2 = xlBook.Worksheets("シート名が入ります") 'Excelを表示しない xlApp.Visible = False xlSheet.Copy(Before:=xlSheet2) ★ ここまで-------------- やろうとしているのは,xlSheet2のシートを含むExcelファイルに,xlSheet2の前にxlSheetをコピーする処理です. ★のところで上の例外が発生してしまいます. 以上,よろしくお願いします.

  • CreateObjectでエラー発生(Excel2007が悪い?)

    下記の環境、プログラムで"ActiveXコンポーネントを作成できません。"のエラーが出て困っています。 毎回ではなく、「1回目はエラーで、2回目以降は出ない」「たまに出る」など、動作が一定ではありません。 Excel2003では問題なく動作するので、Excelのバージョンを変更しようかとも考えています。(高価で入手しにくいので踏み切れずにいます。) Excel2007とVBの問題なのでしょうか? プログラムの変更で解決すればいいのですが…。 ご教示ください! ****** 環境 ****** OS:WindowsXP Professional Ver.2002 SP2 (Microsoft .NET Framework 2.0 Configuration) Excel:Microsoft Office Excel 2007 言語:VB2005 SP1 参照先:Microsoft Excel 12.0 Object Library ****** プログラム ****** Dim xlApp As Microsoft.Office.Interop.Excel.Application Dim xlBook As Microsoft.Office.Interop.Excel.Workbook Dim xlSheet1 As Microsoft.Office.Interop.Excel.Worksheet Try xlApp = CType(CreateObject("Excel.Application"),Microsoft.Office.Interop.Excel.Application) xlBook = CType(xlApp.Workbooks.Open("C:\File\OutPutSheet_1System.xls"),Microsoft.Office.Interop.Excel.Workbook) xlSheet1 = CType(xlBook.Worksheets(1),Microsoft.Office.Interop.Excel.Worksheet) ↓↓以下省略 (開放は行っています。)

  • EXCELの関数値を取得するには?

    VB.NETでプログラミングしてます。 EXCELを起動してセルに関数を代入し、 セルから関数値を取得するのに、以下のようにしています。 Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet xlSheet.Cells(1, 1) = "=AVERAGE(2,3,4,6,7)" a(1, 1) = xlSheet.Cells(1, 1).value.ToString これはこれで動作するのですが、 よく考えてみるとEXCELのセルに代入する必要はなく、 内部的にa(1,1)に関数値さえ取り込めればいいということに気付いたのです。 1行で記述したいのですが、関数値だけ取得する方法を知りません。 ご教示いただければ幸いです。

  • 「エクセルファイルが開いていたら開かない」としたい

    「エクセルファイルが開いていたら開かない」としたいです。 VB2010です。 -------------------------------------------------------------- Imports Microsoft.Office.Interop '参照設定済み Module Module1 Sub ExcelOpen() Dim ExcApp As Excel.Application Dim book As Excel.Workbook Dim MyPath As String MyPath = "C:" ExcApp = CreateObject("Excel.Application") ExcApp.Visible = True book = ExcApp.Workbooks.Open(MyPath & "\test.xlsm") End Sub End Module -------------------------------------------------------------- で、ファイルを開くのですが、既にファイルが開いている場合は、2個開いてしまい、 最後に開いたファイルが読み取り専用になってしまいます。 IFで、開いているかどうかを取得して、 開いているのなら「既に開いています」として、ExitSubがしたいです。 ご協力よろしくお願いします。

  • Excel.Rangeで取得した値を配列に格納するには?

    プログラミング初心者です。 VB.NET でExcelからデータを取得したのですが、配列等に格納したいのですが、うまくできなくて困っています。どなたか教えてください。 例)以下のデータを取得する場合 セルA(列)1(行)からA5まで セルB1からB5まで セルC1からC5まで Dim xl_APP As Excel.Application Dim xl_Book AS Excel.Workbook Dim xl_Sheet As Excel.Seets = xl_Book.Worksheets Dim xl_W_Sheet As Excel.Worksheet = CType(xl_W_Sheet.Item(1),Excel.Worksheet) 中略 Dim range_data As Excel.Range Dim i Integer Dim j Integer Dim strCel As String For i = 1 To 5 For j = 1 To 3 range_data = CType(xl_W_Sheet.Cells(i,j),Excel.Range) strCel = CStr(range_data.Value)  ↑String型変数に格納していますが、多次元配列?に格納して取り出せるようにしたいのですが、どうしたらよいのでしょうか? Next Nest <range_dataに格納されるデータ> A1:氏名 B1:学年 C:1 年齢 以下同上 ・・・・のように取り出したいと考えています。 よろしくお願いします。

  • VB2010でExcelの行をコピーして挿入する

    いつもお世話になります。 VB2010を使用してExcelのある1行をコピーして、コピーしたものを同じシートに挿入したいのですが方法がわかりません。 画像のように、35と36の行をコピーして、37と38に全く同じ物を挿入したいです。 サイトをしらみつぶしに探しましたが、私に理解できるサイトがヒットしませんでしたので、できればサンプルコードを教えていただけると嬉しいです。 下記のようにコードを書きましたが、コピペ状態でほとんど理解していません。 Imports Microsoft.Office.Interop Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Shown Me.Visible = False Dim xlApp As New Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet 'Excelブックを起動 xlBook = xlApp.Workbooks.Open("C:\test1.xls") 'Excelを表示 xlApp.Visible = False 'シートを指定 xlSheet = DirectCast(xlBook.Worksheets(1), Excel.Worksheet) xlSheet.Activate() 'ここから ' ' ' ' 'ここまでがわかりません ' xlBook.Save() '上書き保存 xlBook.SaveAs("c:\test2.xls") '名前をつけて保存 xlBook.Close() xlApp.Quit() '終了処理 xlSheet = Nothing xlBook = Nothing xlApp = Nothing 'テストが完了したらループ処理に変更する Dim p() As Process = Process.GetProcessesByName("Excel") p(0).Kill() End Sub End Class エクセルのバージョンはExcel 2003です。 お手数おかけしますがよろしくお願いします。

  • 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からエクセルファイルを開きたいのですが

    vb.netからエクセルファイルを開きたいのですが、 オフィス2010をインストールしてから動作しなくなりました。 ------------------------------------------------------------------------ Imports Microsoft.Office.Interop Sub ExcelOpen() Dim ExcApp As Excel.Application Dim book As Excel.Workbook Dim MyPath As String MyPath = "C:\Excel.xlsm" ExcApp = CreateObject("Excel.Application") ExcApp.Visible = True book = ExcApp.Workbooks.Open(MyPath) ExcApp = Nothing End Sub ------------------------------------------------------------------------ これで2007の時は起動してたのですが、2010だとダメです。 Microsoft Excel 14.0 Object Libraryに参照設定しています。 実行すると、 ExcApp.Visible = True の部分で サーバーによって例外が返されました。 (HRESULT からの例外: 0x80010105 (RPC_E_SERVERFAULT)) となります。 どうすればいいでしょうか?ご教授よろしくお願いします。

専門家に質問してみよう