• ベストアンサー

VBで既存のExceシートlのTextBoxにデータをセットしたい

VBで印刷プログラムを作成しています。 既存(雛型)のエクセルシートにデータをセットし印刷しようとしています。 セルにセットする場合は xlSheet.Cells(1, 9).value = InputItem.ManuNum、等 でセットできるのですが テキストボックスにセットするときどうすればいいのかわかりません。 コードの記述方法を教えて下さい。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 Excelでは、TextBox は、シート上で、2種類ありますから、ちょっと、それを特定しないといけませんね。 片方が、コントロールツール側で、もう片方が、オートシェイプ側です。  xlSheet.OLEObjects("Textbox1").Object.Text  xlSheet.DrawingObjects("Text Box 2").Text  または、   xlSheet.Shapes("Text Box 2").DrawingObject.Text Index を使えば、  xlSheet.OLEObjects(1).Object.Text  xlSheet.DrawingObjects(2).Text ということになると思います。

koji32071957
質問者

お礼

出来ました!! xlSheet.DrawingObjects("Text Box 2").Text = "***" と記述したら転記しました。 どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.2

該当のシートを選択し、 メニュー上の三角定規の形のデザインモードボタン (非表示の場合は、VisualBasicツールバーを表示) をクリックしてください。 その上で、 テキストボックスを選択し、右クリックして [プロパティ]をクリックすると、 プロパティウインドウが表示され、 そこにテキストボックスの参照名(Nameプロパティ)が 載っていますので、 シート名.テキストボックスの参照名.Text = InputItem,MenuItem とすれば値をセットできます。

koji32071957
質問者

お礼

回答ありがとう御座います。 No.1さんの回答で解決しましたが、せっかくのアドバイス、実行してみました。 しかしながらデザインモードをonにしてもoffにしてもプロパティの表示内容は同じで参照名は表示されませんでした。 (オブジェクトの位置関係のラジオボタンが3つとオブジェクトを印刷するのチェックボックスが1つのみ) 今回はこれ以上追及いたしません。何かありましたらその時はよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 実行時エラー91について

    vbでエクセルにデータを入力したあと、2つのシートを選択し、 その後に両面印刷を行うプログラムを作成中ですが、 印刷の段階で 「実行時エラー91。オブジェクト変数または with ブロック変数が設定されていません。」 とのエラーがでます。 どの部分がおかしいのかわからないので教えて下さい。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim xlSheet2 As Excel.Worksheet Dim xlFile As String xlFile = App.Path & "表.xls" Dim MyFile As String MyFile = Dir$("表.xls") If Len(MyFile) > 1 Then Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(xlFile) Set xlSheet = xlBook.Worksheets("裏") Set xlSheet2 = xlBook.Worksheets("表") xlApp.Visible = True a1 = Label47.Caption a1 = Format(a1, "#,#") a2 = Label48.Caption m = a1 & "及び" & a2 & "とする。" For k = 1 To 18 s = Mid(m, k, 1) i = 8 + (k - 1) * 2 xlSheet.Cells(40, i).Value = s Next k Set xlSheet2 = xlBook.Worksheets("表") xlSheet2.Cells(4, 2).Value = Text11.Text xlSheet2.Cells(4, 10).Value = Text12.Text xlSheet2.Cells(4, 19).Value = Text13.Text xlBook.Sheets(Array("表", "裏")).Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ←ここでエラー Set xlApp = Nothing Set xlBook = Nothing Set xlSheet = Nothing Set xlSheet2 = Nothing

  • 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”

  • .net 2010VB配列TextBox貼り付ける

    初めて質問致します。 よろしくお願い致します。 超初心者レベルです。 VB6の時に、Formにテキストボックスやラベルなどを1つ貼り付け、それをコピーすると「配列にするか?」と聞かれていました。 今、.net 2010 VB でテキストボックス(ラベル)をコピーしても、配列にするかどうか聞いてくれません。 プログラム等ではなく、手動でFormに貼り付け時に、配列にする方法を教えて下さい。 (どのプロパティが、配列のインデックスなのかが分かりません。) <(__)>

  • 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行で記述したいのですが、関数値だけ取得する方法を知りません。 ご教示いただければ幸いです。

  • Range

    xlsheet.Range(xlsheet.Cells(3, 1), xlsheet.Cells(lngMaxRows + 2, intvasRate_Col_KeiyakuName - 1)).Value = varExcelData 上記のプログラムで「Range」が記述されているのですが、どう意味でしょうか?。このステップだけ解析できません。お助け下さい。 どうぞよろしくお願い致します。

  • 指定したセルにデータの書き出し

    いつもお世話になっております。 VB.net+SQLでデータベース連携しております。 SQLで抽出したデータをエクセルに書き出すプログラムを考えています。 For Each myRow In ds.Tables("Estimate").Rows Code = myRow("Code") xlSheet.Cells(3, 2).Value = Code Next myRow 上記で3行目の2列目にデータを書き出すことは出来たのですが 変数codeには複数のデータを格納していて上記のプログラムだとCells(3, 2).Value と指定しているので、はじめのデータから最後のデータまで同じセルに上書きしてしまっているようです。 これを各データを一行ずつ書き出したいのですが、上手くいきません。 For Each myRow In ds.Tables("Estimate").Rows    For i = 3 To 17 Code = myRow("Code") xlSheet.Cells(i, 2).Value = Code      i+=1    Next i Next myRow のようにセルの行指示を変数にしたのですが、変わりませんでした。 分かりますでしょうか?

  • [Excel97]VBA:セルに入っている数式を別のシートのセルに文字列としてセットする

    「ExcelVBAマクロ500連発」という技術評論社の本(青のカバー)のNo.277に 「式を文字列として表示する」というサンプルマクロがあります。 「ワークシートのセルに入っている数式を、(同じシート内の)別のセルに文字列としてセットする」 ここのコードを参考にして、 「数式を、(同じブック内の別のシートの)セルに文字列としてセットする」コードを考えています。 以下のコードを作りましたが、実行すると最後から2行目の「.Formula」のところで 実行時エラー1004:'Range'メソッドは失敗しました。'_Global'オブジェクト というエラーが出てきます。なぜでしょうか? 正しいコードの記述を教えて下さい。 (Sheet1のD3セルの計算式をSheet2のD10セルに文字列としてセット) Option Explicit Dim 調査セル As Variant Dim 報告セル As Variant Sub 式の抽出() Worksheets("Sheet2").Select 調査セル = Worksheets("Sheet1").Cells(3, 4) 報告セル = "D10" Range(報告セル).Value = "" Range(報告セル).Value = "'" + Range(調査セル).Formula End Sub

  • 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 よろしくお願い致します。  

  • VBのテキストボックスの内容をExcelのセルに書き加える

    VBを実行し、フォームのテキストボックスに入力された文字列を あらかじめ読み込んでおいた既存のExcelシートのセルに 書き足したいです。 そのExcelシートのセルにはすでに「001」などの数字が 入っているのですが、その数字の前に「AB01」などの文字列を付け加えたいのです。 自分なりに作ってみましたがうまくいきません。 とりあえずソースを載せます。 わかる方いらっしゃいましたらよろしくお願いします。 Private Sub Command1_Click() Set xlApp = CreateObject("Excel.Application") xlFileName = strFileName Set xlBook = xlApp.Workbooks.Open(xlFileName) Set xlNameSheet = xlBook.Sheets.Item(1) cnt = 0 i = xlNameSheet.Range("A1").CurrentRegion.Rows.Count For i = 1 To 65 shusseki = xlNameSheet.Cells(i, 5).Value If IsNumeric(shusseki) Then cnt = cnt + 1 For j = 1 To 5 xlNewSheet.Cells(cnt, j).Value = xlNameSheet.Cells(i, j).Value xlNewSheet.Cells(cnt, 1).Value = Form10.Text1 Next j End If Next i xlApp.Visible = True Set xlNameSheet = Nothing Set xlNewSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End Sub

  • Excelが終了しません

    VB初心者です。 以下のコード(実際のものと根幹は同じです)でExcelを扱いたいのですが、 終了の処理をしている(つもり)にも関わらず、EXEを終了するまで Excelが終了してくれません。 画面上は終了しているのですが、EXE起動中にxlsファイルを開くとシートを表示してくれないのです。 どなたか正しい方法を教えてください。 Dim xlbook As Excel.Workbook Dim xlsheet As Sheets Dim H As Integer Dim W As Integer H = ImNumber1.Text W = ImNumber2.Text Set xlbook = CreateObject("Excel.sheet") Set xlsheet = xlbook.Worksheets Workbooks.Open App.Path & "\稼動確認.xls" Worksheets("稼働確認書").Activate xlbook.Application.Visible = True xlsheet.Application.Cells(H, W).Value = ImText1.Text ActiveWorkbook.Save Workbooks.Close xlbook.Application.Quit Set xlbook = Nothing Set xlsheet = Nothing