VB6でエクセルのセルにデータを貼り付ける方法は?

このQ&Aのポイント
  • VB6を使用してエクセルの任意のセルにデータを貼り付ける方法を教えてください。auto_openが含まれたエクセルファイルではフォームが開かれてしまい、更新ができません。
  • VB6でエクセルのセルにデータを貼り付けようとしていますが、auto_openが含まれたエクセルファイルのためフォームが開かれてしまうため、値をセルに代入する方法がわかりません。
  • VB6を使用してエクセルのセルに値を貼り付けたいのですが、auto_openが含まれたエクセルファイルではフォームが開かれてしまい、値の代入ができません。エクセルを開かずに値をセルに代入する方法はありますか?
回答を見る
  • ベストアンサー

VB6にてエクセルのセルに貼り付けで・・・

お願いします。VB6にてエクセルの任意のセルへデータを貼り付けたいのですが、そのエクセルにauto_openが含まれていてフォームを開くようになっています。 Option Explicit Dim objExcelApp As Workbook ---------------------------- strExcelFile = "C:\A.xls" strExcelSheet = "Sheet1" objExcelApp.ActiveSheet.Cells(1, 1).Value = "A" ではフォームが開いて更新ができません。エクセルを開かずに値をセルへ代入できないものでしょうか? どうかお願いします。

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

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

実験したんですが、できてしまいました。 質問文のソースはエクセルを起動するところが書いてありませんが、そのあたりはどうなっているのでしょうか? セルに値を入れると何かメッセージが出たりしますか? 一応私が実験したソースを載せますね。 Dim xlApp As Object Dim xlBook As Object Dim xlSheet As Object Set xlApp = CreateObject("EXCEL.Application") Set xlBook = xlApp.Workbooks.Open("C:\tmp\Book1.xls") Set xlSheet = xlBook.Sheets(1) xlSheet.Range("A1").Value = "A" xlBook.Save xlBook.Close xlApp.Quit です。 開くファイルの C:\tmp\Book1.xls は、ただの新規のEXCELファイルに フォームUserForm1を作り、 標準モジュールに Sub Auto_open() UserForm1.Show End Sub 書きました。 状況を勘違いしているようでしたらご指摘下さい。

aoisome
質問者

お礼

お礼が送れて申し訳ありません。大変助かりました。ありがとうございました。

関連するQ&A

  • VB2005 → EXCELのセルに貼り付け

    いつもお世話になってます。 私はVB入門者です。 取得した値をセルに転載する処理を行っております。 値をセルに貼り付けるのは下記の方法で出来たのですが Dim oExcel As Object Dim oBook As Object Dim oSheet As Object oExcel = CreateObject("Excel.Application") oBook = oExcel.Workbooks.open("C:\hoge.xls") oSheet = oBook.Worksheets(1) oSheet.Range("A2") = hoge_name oSheet.Range("A2") = hoge1_name  ←これをA2のhoge_nameの下段に入れたいのです。 oBook.SaveAs("C:\hoge.xls") oSheet = Nothing oBook = Nothing oExcel.Quit() oExcel = Nothing GC.Collect() 2つの変数をエクセルのひとつのセルに改行して貼り付ける方法を教えて下さい。 又、上書き保存の際に確認のメッセージは不要なのに表示されてしまいます。 どのように書き換えたら良いのでしょうか。 どうぞよろしくお願いします。

  • EXCELのセルの値を表示する

    VB6.0を使っています。 エクセルのC5のセルに50という値が入っています。 この値をVBのメッセージボックスで見たいのですが 実行して見てみると 「50」ではなく何故か「0」と表示されてしまいます。 どうしてでしょうか? その部分のコードは下です。 Dim Wb As Excel.Workbook Dim Ws As Excel.Worksheet Dim Ea As Excel.Application Dim atai As Integer Set Wb = GetObject("C:\test\test.xls") Set Ea = Wb.Application Set Ws = Wb.Worksheets("Sheet1") atai = Ws.Cells(3, 5) MsgBox (atai)

  • エクセルで時間セルをVBで文字列として取り込むには

    エクセルです。 時間セルがあって、エクセル上での表示では 12:30:15 という風に表示するようにセルの書式設定でしているのですが、そのセルを VBで取り出そうとして、 A = Cells( 1,1 ) とかってすると、Aには、0.66656 とかって数字が入ってきてしまいます。 Aは文字列として、DIM A as String とかってしているのですけどね これをちゃんとAに、12:30:15 という形の文字列として入れるのにはどうしたらいいのでしょか

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

  • excelのデータをvbにとりこむ

    excelのあるセルのデータを取り込みたいのですが、 どうすればよいでしょうか? C:\123.xlsというファイルのsheet1の (2,4)というセルにある実数型のデータを 出力するという、意図です。 Private Sub Setting_Click() Dim xls As Object Dim xlsFilename As String Dim xlsSheetname As String xlsFilename = "C:\123.xls" xlsSheetname = "Sheet1" Set xls = CreateObject("Excel.Application") xls.Application.Visible = False xls.Application.Workbooks.Open xlsFilename Dim r1 As Double r1 = xls.Application.Workbooks.cells(2, 4).Value Print r1 end sub

  • エクセル2000です。Ceelsであるセルに空白を含む関数を書かせるに

    エクセル2000です。Ceelsであるセルに空白を含む関数を書かせるには? 以下の様なVBですが、 先ず、セルAO5の文字を半角にして、「電気1234.xls」として、変数「ファイル名」に代入します。 次に変数「ファイル名」を取り込んだ、関数をCellsを使って書かせたいのですが、式の一部に「"」を 使っているのが悪いのかエラーになります。 関数式の中の「"」の処理の仕方を教えてください。 ----------------------------------------- Dim ファイル名 As String ファイル名 = "電気" & StrConv(Range("AO5").Value, vbNarrow) & "_2.xls" Cells(53, 8).Value = "=SUMPRODUCT(((TRIM('[" & ファイル名 & ".xls]添付資料'!$C$1 : '[" & ファイル名 & ".xls]添付資料'!$C$10000)<>"")*1)*(TRIM('[" & ファイル名 & ".xls]添付資料'!$C$1 : '[" & ファイル名 & ".xls]添付資料'!$C$10000)<>"品 番")*1)"

  • VBでエクセルのセルのバックカラーをつけるには?

    お世話になります 表題のように、VBを実行して、エケセルのあるセルに 色(赤)をつけたいのですが どうしたらいいか、アプローチを教えてください ちなみに下記のようなVBは実行して からくりが理解でしました ------------------------------------------ Function Excel_SelectSel_Export1() Dim Xls As Object Set Xls = GetObject("c:\vba\実践VBA.xls") Xls.Application.Windows(1).Visible = True 'ワークシートをアクティブにする Xls.Application.worksheets("sheet1").Activate 'エクスポート先セルをRow(行)とColumn(列)の形式で指定する Xls.Application.Goto "r3c2" 'セルに値をエクスポートする Xls.Application.activecell.Value = "★彡☆彡" Xls.Application.Goto "r4c2" Xls.Application.activecell.Value = "☆彡★彡" Xls.Application.Quit 'Excelを閉じる Set Xls = Nothing Debug.Print "Completed!!" End Function

  • vb6でのエクセルアドレス取得

    現在、vb6でプログラムを作成しています。 エクセルオブジェクトを作成し、ある特定の文字がはいっているセルを 抽出し、上の行から順にアドレスを返すプログラムを作っています。 ***************** dim tb() as string For a= 1 To 行の末 If 0 <> InStr(xlsオブジェクト.Worksheets(1).Cells(a,1).Value, "特定の文字") Then If b = 1 Then ReDim tb(1) Else b = b + 1 ReDim Preserve tb(b) End If tb(b) = xlsオブジェクト.Worksheets(1).cells(a,1).adress End if Next ***************** これで行うと、「tb(b) = xlsオブジェクト.Worksheets(1).cells(a,1).adress」の部分で、正常に結果が返らずエラーとなります。 もし、分かるようでしたらご教授いただきたいです。 よろしくお願いします。

  • Excelで同一セル内に入力されているデータを他のセルに分割したい

    http://okwave.jp/qa4369634.html?ans_count_asc=20 で質問をして、何度かやりとりをさせていただいて エクセルで同一セル内に、セル内改行で1~6列ほどのデータが入力されています。 縦にデータが入力されていて、それぞれのセルにセル内改行を含み、データが入力されています。 それぞれのセル内のデータを… 例えば、A1セル内に5行入力されていたら、A2セルから入力されている行数分(ここでいうと5行)挿入し、それぞれにデータを分割して入力させたい。 かつ、B・Cセルは増えたセルにそれぞれのデータをコピーしたいと言ったら、 Sub Macro1() Dim idx, cnt As Integer Dim wkStr() As String Dim rng As Range   ActiveSheet.Copy after:=ActiveSheet   For idx = Range("A65536").End(xlUp).Row To 1 Step -1     If InStr(Cells(idx, "A"), Chr(10)) > 0 Then       wkStr = Split(Cells(idx, "A").Value, Chr(10))       Set rng = Cells(idx, "B")       For cnt = UBound(wkStr) To 0 Step -1         Cells(idx, "A").Value = wkStr(cnt)         Cells(idx, "B").Value = rng.Value         Cells(idx, "C").Value = rng.Offset(0, 1).Value         If cnt > 0 Then           Cells(idx, "A").Resize(1, 3).Insert shift:=xlDown         End If       Next cnt     End If   Next idx End Sub といったマクロのご回答をいただきました。 これを元に、 ・データが入っているセルをA列→B列に変更 ・A列のデータはセルが増えた分だけ増やしたい ・A1に対応するデータがC1・D1に入っていた場合、対応するデータは残したまま、B列が増えただけ、列を増やしたい と変更したいのですが…。 すいませんが、宜しくお願い致します。

  • エクセル2007 参照セルの値が認識されない

    エクセル2007の環境で下記マクロを実行すると、 アクティブシートのセルA1に数字が入っている場合、Sheet1のセルA1に値を転記しても そのセルA1の値をVLOOKUP関数で参照できません。 マクロに問題があるためなのか何処に問題があるのか分からないので教えてください。 宜しくお願いいたします。 【sheet】は アクティブシートの3行目から1000行目までのA列のセルをクリックしたらセルA1に値を表示 その後、下記【モジュール】を使用し、 アクティブシートのセルA1が空白の場合、 A列の数値をSheet1のセルA1に転記し、アクティブシートのA列の数値が空白になるまで循環する。 Sheet1のセルA1の値をVLOOKUP関数で参照した内容を表示、印刷します。 ----------------------------------------------------------------- '【sheet】 Private Sub Worksheet_SelectionChange(ByVal Target As Range) With Target If .Count > 1 + IsEmpty(.Value) Then Exit Sub If Application.Intersect(.Cells, Range("A3:A1000")) Is Nothing Then Exit Sub ActiveSheet.Cells(1, 1).Value = .Value End With End Sub ----------------------------------------------------------------- '【モジュール】 Sub TEST() Dim myBtn As Integer Dim myMsg As String, myTitle As String Dim WS1 As Worksheet, WS2 As Worksheet Dim i As Long myMsg = "●●●" myTitle = "確 認" myBtn = MsgBox(myMsg, vbYesNo + vbExclamation, myTitle) If myBtn = vbYes Then Set WS1 = ActiveSheet Set WS2 = Sheet1 If WS1.Cells(1, 1).Value = "" Then With WS1 For i = 3 To 65536 If .Cells(i, 1).Value = "" Then Exit For WS2.Cells(1, 1).Value = .Cells(i, 1).Value WS2.Cells(1, 2).Value = ActiveSheet.Name 'WS2.PrintOut Copies:=1 Next i End With ElseIf WS1.Cells(1, 1).Value >= 1 Then WS2.Cells(1, 1).Value = WS1.Cells(1, 1).Value WS2.Cells(1, 2).Value = WS1.Name 'WS2.PrintOut Copies:=1 Else End If End If End Sub -----------------------------------------------------------------

専門家に質問してみよう