• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル内でのVBAの質問です。)

エクセルVBAで別のシートの値をコピーして指定のセルに貼り付ける方法

HohoPapaの回答

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (454/692)
回答No.3

提示された2つ目の画像のB4セルに 例えば"項目"という文字列を埋めてもらえるのであれば 下記のコードで期待の動作になるハズです。 Sub Sample()  Dim cn As Object  Dim rs As Object  Dim SQL As String  Dim shF As String  Const TgBook = "C:\Users\papa\Documents\データ転送ソフト2.xlsx"  '↑:検索対象ブックのフルパス  Const TgName = "う" '検索する項目列の文字列  'シートを定義  shF = "FROM [A$B4:Z64000]" '検索対象シート名と範囲  '↑B4を起点に広めな範囲を指定できます  'DBを定義、設定  Set cn = CreateObject("ADODB.Connection")  Set rs = CreateObject("ADODB.Recordset")  cn.Provider = "Microsoft.ACE.OLEDB.12.0"  cn.Properties("Extended Properties") = "Excel 12.0;HDR=Yes;IMEX=1"  cn.Open TgBook    'SQL文を組立、実行  SQL = "select [" & Range("F1").Value & "] as HitCnt" & vbCrLf  SQL = SQL & shF & vbCrLf  SQL = SQL & "WHERE (" & vbCrLf  SQL = SQL & "[項目] = '" & TgName & "'" & vbCrLf  SQL = SQL & ")" & vbCrLf  On Error GoTo MyError  rs.Open SQL, cn  '検索結果を指定セルに格納  Range("T4").Value = rs("HitCnt")  'MsgBox (rs("HitCnt"))  '後処理  rs.Close  Set rs = Nothing  cn.Close  Set cn = Nothing  Exit Sub MyError:  Select Case Err.Number   Case -2147217904   'SQL文でエラーの時     MsgBox "指定の日が見つかりません"   Case Else     MsgBox "予期せぬエラーが発生しました" & vbCrLf & Err.Number & ":" & Err.Description   End Select End Sub

nyaaaaaaaao
質問者

お礼

今現在、私が行おうと思っている作業に一番近い動作だと思います。 ご回答ありがとうございます。

関連するQ&A

  • エクセルVBAで質問です

    あるブックのシートに入力するようにしています。そこには関数や、 リストなどさまざまな設定がされています。そのブックにコードを書いてマクロ実行ボタンもそのシートに付けたいと思っています。 このシートをデスクトップにコピーして別ブックとして作成したいのですが、コードを教えていただけないでしょうか。できるかわかりませんが、関数が設定されてある箇所は関数としてではなく、値としてコピーされると都合がいいです。 また、作成されたブック(コピーしたシート)には、マクロのボタンなんかが残らない形ではできないものでしょうか?

  • エクセル複数シートの検索とVBA

    エクセルVBA初心者です。 今エクセル2007で、下画像の上段・中段のような売上げシートを ブックの中に複数シート作成しています。 シートは売上げのあった日毎に作成しており、シート名は「1.1」のように日付にしています。 売上日はシートの左上のA1セルに入力しています。 ここでしたい処理なのですが、画像の下段のように検索用の シートを1枚作り、そこに売上内容を入力し、マクロコードを実行すれま、自動的に 該当するデータ(売上内容から支払い方法まで)を表示するコードはあるのでしょうか。 今は手作業で、シートを目視で確認しているので大変になってきました。 よろしくお願いします。

  • エクセルVBAについて。

    あるセルの数値を別シートへ連続してコピーするにはどのようなコードを使えばいいのでしょうか? 教えてください。お願いします。

  • エクセルVBAでの質問です。

    エクセル2003での質問です。 book1のシート1からbook2のシート18セルC30へ 表のコピーを行い、C30が空白セルだったらそのまま貼り付け、 非空白だったら表最下部から2行あけて表のコピー操作を行う。 としたいのですが以下の箇所でエラーがでてしまいます。 book1.Activate sheet1.Range("C8:E24").Copy book2.Activate If sheet18.Range("C30") = "" Then sheet18.Range("C30:E46").Select Selection.PasteSpecial.xlPasteValues ←実行時エラー424発生 Else sheet18.Range("C30").End(xlDown).Offset(2).Select Selection.PasteSpecial.xlPasteValues ←実行時エラー424発生 End If 以上、解決策をご教示願います。

  • 複数ブックの特定のセルを合計したいです

    中を見ていただき、ありがとうございます。 似たような質問・ご回答があるのは重々承知しておりますが できるだけシンプルなコードを教えていただきたく、質問させていただきました。 さて、いま1つのフォルダ内に,複数のブック(ファイル)が入っています。 すべてのブックはExcel2007で作成しており、目的の作業もExcel2007で行いたいです。 なお、それぞれのブックの名前に規則性はありません。 ブックの中身は統一されており、1ブック1シート、シート名は Sheet1 です。 このシートのB4からP4(横一列15個のセル)には、画像上段のように数値が入っています。 ここでやりたいのは、すべてのブックに入っているそれらの数値を平均して、 別に用意しておいた集計用のブックの同一セル(B4からP4)に入れるという作業です。 ブックを結合してから串刺し演算をしても良いのですが、できればマクロ一発で しかもできるだけシンプルなコードで以上を実現できれば嬉しいです。 過不足等ございましたら補足させて頂きますので、どうかお知恵をお貸しください。

  • Excel VBA  Sheet1に記述していたのですがうまく動きません。

    シート1にコマンドボタンを配置し、Sheet1にそのままコードを記述していました。そこにマクロで記録したシート3の並び替えのコードを追記したのですがうまく動きません。 もしかしてこれは、Sheet1に記述していたためなのでしょうか。 このままSheet1に一連の作業として記述していきたいのですが、 どうしたらよいのでしょうか。 Excel2003を使用しています。 またModule1にSheet1のコードをコピーして移動させた場合は、どのようにすればコマンドボタンから実行させることができるのでしょうか。 宜しくお願い致します。

  • EXCEL VBAについての質問です

    質問させてください。 添付した画像のような表にて在庫の管理をしたいと考えています。 VBAのフォームを使用し、テキストボックスに入出庫の数値を入れ、 入庫、出庫のボタンを押し、在庫の数値を増減させたいと思っています。 下に書かせていただいたような流れでできないものかと思ったのですが、 3行目と4行目のプログラムがうまく動作させられません。 offsetを使用し、セルをずらすことができるかと思いましたが エラーが出てしまい実行することができませんでした。 どなたか方法をご存知の方がいましたら回答よろしくお願いします。 また、もっとベターな方法がありましたらアドバイスをよろしくお願いします。 Private Sub CommandButton1_Click() '「a」という単精度浮動小数点数型 の変数を宣言する. Dim a As Single 'ワークシート「Sheet1」をアクティブにする. Worksheets("Sheet1").Activate 'textbox1の内容を変数aに入れる. a = TextBox1.Value1 'Comboboxで選択したセルの4つ右隣のセルの値を(A32)に記入する Worksheets("Sheet1").Range("A32") = ComboBox1.Offset(4,0).Value 'セル(A32)と変数aを足し、その値をComboboxで選択したセルの4つ右隣のセルに記入する 'Worksheets("Sheet1").ComboBox1.Offset(4,0).Value = a + ComboBox1.Offset(4,0).Value End Sub

  • エクセルVBAの質問です。

    エクセルVBAの質問です。 一つ一つコードを試しては動きを確認するという作業を始めたばかりの初心者です。 VBAで他のブックからデータを取得するにあたっては、その参照先のブックの行列は絶対いじってはならないものだと理解しています。でも、行列が変わってしまう可能性があるため、参照先のブックの値を、行列ではなく、たとえば「“4月”かつ“売上”の交わるセルから数値を取得せよ」のように、参照先のブック内の文字列を読みにいって、そこから取得するような考え方は成り立つでしょうか。もし成り立つ場合は、どのように組めるものなのか、考え方を教えていただけませんでしょうか。 何卒よろしくおねがいいたします。

  • エクセルVBAでブックを開くとマクロを実行するようにしたいのですが

    ブックを開くと同時に開いたシートを保護するようにしたいのですがうまくいきません。通常(?)ボタンを作っておいて押すと実行すると思うのですが、そうせずにブックを開くと実行するようにならないかと思っています。保護をするコードはわかるのですが、どこにそれを書き込んだらいいのかもわかりません。VBAプロジェクトを見るとSheet1,Sheet2,ThisWorkbook,UserForm1とありますが、そのうちのどこかに置くのでしょうか?

  • excel vba 作成について教えて下さい。

    excel VBAを使ってあるブックのセル範囲を別のブック(日報.XLS)のシートへコピー貼り付けをしたいのですが、コピーする側のブックがランダムに取り込まれ(例 8時間ピッチにて自動的にブックが作成される)そのブックを日にちごとに集計し、一か月ごとにまとめるということをやらなければなりません。 例)8時間ごとにフォルダが作成されます。   000001.XLS 000002.XLS   00000F.XLS ・・・・・・・・16進数にて   上記ブックのSheet1のA2:A11までの数値を別のブック(日報月報集計)のに貼り付ける。 別のブック(日報月報集計)は項目ごとに10個のシートがあり 8時間ごとのファイルのセルA2は別ブックのSheet1の日付けに対応するセルへ貼り付け B2は       Sheet2 上記操作を8時間ごと(可変可能)に自動的にコピー貼り付けをやりたいのですが ブック間のコピー貼り付け等わからないことが(初心者です。)多々あり、いろいろ調べてはいるのですが、STOPした状態です。 出来れば、初心者にも理解しやすい解説等あれば宜しくお願いします。