• 締切済み

VBAでデータ転送

エクセルの表で必要な列(複数)のみ別のブックにデータ転送しCSV形式に保存したいのですがどのようにすればいいでしょうか? たとえば・・・ <book1.xls> 日付  仕入先  商品  金額 --------------------------------- 5/6  **(株)  パソコン  100,000  7/1  **店  プリンター 50,000  <book2.xls> 仕入先  仕入区分  担当者 ---------------------------------   book1の仕入先のデータをbook2の仕入先の列にデータを 転送したいのです。 他にも何列かデータを入れたいものがあります。 (コマンドボタンを押せばデータが転送できるように・・) どなたかわかる方教えてください。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

「転送」と大げさに、通信でも使う言葉が出ていますが、簡単なケースでは、代入で済むのでは。 Sub test02() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Workbooks("Book2.xls").Worksheets("4月") Set sh2 = ActiveWorkbook.Worksheets("Sheet1") ' MsgBox sh1.Cells(3, "A") sh2.Cells(5, "A") = sh1.Cells(3, "A") End Sub を応用すれば、済むことでは。 これですまない場合は質問文の表現に大切な点が、抜けているはずです(Book2を開きたくないとか諸々)。 上記Book2に当たるブックは開かれている必要があります。 Book1から、Book2に代入するとき、列を(固定対応で) 帰るなど簡単。 代入文の左辺・右辺でセルを表現するとき、全てCells()やRange()の前に、sh1. やSh2.を明示でつけること。 CSVファイルに保存 コマンドボタンで起動 などもありきたりの質問です。WEB照会で沢山でてくるでしょう。

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

こんにちは。 実際、なかなか、そういうご質問は難しいのですね。 >book1の仕入先のデータをbook2の仕入先の列にデータを転送したいのです。 と書かれていますが、book1 とbook2 の項目として、つながるものが、「仕入先」しかありません。 ご質問とは直接関係がないのですが、決まった回答者さんとの間で、何度かやり取りをした上で、ある程度、表のレイアウトや内容が伝わった段階でしたら、プロが作るような内容のコードなどでも提供可能だと思いますが、残念ながら、今回、その前提がありませんので、いきなり、そういうご質問では無理に近いのです。 VBAのレベルとしては、中級以上ですから、簡単に記録マクロを示して解決ということも簡単には行きません。内容的には、Excelで解決可能な内容なのですが、今の状態では、申し訳ありませんが、情報的に不足して、取り掛かりができないのです。

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

質問はコードを全部書けということなんですかね? さすがにそれは無謀というものかと思いますが。処理の分からない部分があるというのならまだ分かりますが。 まぁこれならアクセスでやった方が楽ですよ。エクセルでのサンプルコードを示されてそれを少しずつ修正していくよりも、はるかに楽です。

関連するQ&A

  • excel vba

    テーブル情報に基づきシートをコピーするVBAマクロを記述したい。 ExcelのBook111のSheet1に次のような データが入っています。 (1、2)セルにn=3という数字が入っているものとします。 その数値に合わせて、この場合は3なので Sub Sample01() Workbooks("Book3.xls").Worksheets("booksheet3").Copy After:=Workbooks("Book111.xls").Sheet(1) End Sub のようなつまり、booksheet3なるシートをBook111(固定なBOOK)にコピーしようとしています。 このようなことをVBAで書くにはどうすればいいのでしょうか。 ただしBook名とシート名はあくまでデータの値にもとづいたデータをもってくることになります。 要するに間接参照したデータに基づき処理するのをどのように記述するかという質問です。 A列 B列 1 回数 n=3 2     3     4 Book1.xls book1sheet ←n=1 5 Book2.xls book2sheet ←n=2 6 Book3.xls book3sheet ←n=3 7 Book4.xls book4sheet 8 Book5.xls book5sheet 9 Book6.xls book6sheet ←n=6 10 Abc,xls Defsheet ←n=7

  • Excel 微妙に違う2つのシートのデータをリンクさせる

    ある程度 同じデータのブック1とブック2があり、 ブック1は祭日などデータが無い日も日付があり、行が確保されていますが、 ブック2は祭日などデータが無い日は行が抜いてあります。 A列:日付、B列:曜日 C列:データ1、D列:リンクを入れる 04.11.22 月 56  =[ブック2.xls]シート1!H2 04.11.23 火  04.11.24 水 50  =[ブック2.xls]シート1!H3 04.11.25 木 52  =[ブック2.xls]シート1!H4 04.11.26 金 49  =[ブック2.xls]シート1!H5 04.11.29 月      04.11.30 火 A~C列はブック1、2とも同じデータです。(現在ブック1は1400行、ブック2は1300行くらい) D列にブック2のH列のデータを表記したいのですが、ドラッグなどでは行がずれてしまいます。 関数かマクロなど、何か良い方法を教えて下さい。 下記のことにも対応できれば更に便利なのですが・・。 ブック2のH列は時々J列とか他の列(表範囲内)に移動します。 そしてたまにはブック2のシート1もブック1に移動したりブック2に戻したりもします。

  • VBA 表作成 再 続

    引き続きよろしくお願いします。 入力データというブックがありそこには B列に日付と曜日(日付の下)3行目~、 M列に区分(1か2が入力)3行目~、 T列に商品名3行目~、 AQ列に商品数3行目~、 BA列4行目~にコードが入力されています。 日付を入力したブックに 入力データにある、日付の部分を見て入力フォームで日付から1ヶ月の間の日付で一致すれば、商品名、コードを別ブックにある表に貼り付けます。日付部分の表に数値を商品名とコードにあわせて貼り付け、日付も、商品名もコードも同じであれば足してから表示します。 元にあるのはひとつ分しかはいらないので増えるたびに行数を挿入していくようにします。 最初にある表は    B   M   L ・・・ 4          日付・・・ 5          曜日・・・ 6  商品名 コード 数値・・・ 7          小計・・・ 8  商品名 コード 日付・・・ 9          小計・・・  10         合計・・・ という表になっています。上段には区分1、下段には区分2のものが入ります。 わかりますかね・・・;; 説明下手で申し訳ありません よろしくお願いします

  • EXCEL VBAについて

    VBAでCSVファイルをテンプレートのBBOKに読込むコードを 作り、CSVファイルから読込んだBOOK1データを集計する BOOK2を作成しています。 BOOK1・11/21・・・11/21・・・11/22・・・11/23と続きます      A     B     C      D 1  ID     店名   売上    日付 2 1104567   渋谷店  190,809   11/21 3 1102031   新宿店  209,808   11/21 4 1103450   横浜店  108,765   11/21 BOOK2・集計      A    B    C       D       E 1  ID   店名   11/21    11/22     11/23 2 1104567  渋谷店  190,809   203,487 3 1102031  新宿店  209,808   340,876 4 1103450  横浜店  108,765   547,627 ※BOOK1とBOOK2のIDの並び順は一致していません。 上記のBOOK1のデータをBOOK2に読込ませたいと考えています。 VLOOKUPやINDEX関数を使用しようかと考えたのですが、日付毎に ファイル名が違うのと、集計のファイルには外部参照をさせたくないと 考えています。 VBAで作成したいコードはBOOK1からBOOK2の日付のセルにIDを検索条件として日付毎のファイルを読込ませたいです。 フォームで日付を入力し、コピーするBOOK2のセルを指定後、BOOK1を選択するためにダイアログボックスを出したいです。 BOOK2のIDを検索条件としてBOOK1から一致する売上セルを抽出するコードだけでもわかれば何とか作成できそうなのですが、 ご教授いただけませんでしょうか?

  • 「Excel」で、異なるブックのデータを一つにまとめたい。

    「エクセル2000」を使用しています。 異なるブックのデータを、うまく一つにまとめる 方法があるかどうか、お教え頂きたいのですが…。 「Book1.xls」には A列に名前 B列に部署名 が、それぞれ入っています。 「Book2.xls」には A列に名前、 B列に内線番号 が入っているとします。 そこで、「Book1」のそれぞれの名前の行に 「Book2」の「内線番号」を表示させたいのですが… そんな事は可能でしょうか? 「Book1」と「Book2」の「名前」のデータは、 ほぼ同じものが入っているのですが 並び順は異なっています。 (「並べ替え」を行ったとしても、 「Book2」の方が遥かにデータ量が多いので、 どうしても行は一致しません) 「同じデータを探して貼り付ける」 という作業が必要になると思うので、 やはり難しいでしょうか…。 ご助言願います。

  • VBAでデータの仕訳し新規ブックへ貼付け・登録

    VBAで指定(A列の値と同一)ファイルを開き、データ内C列の値を認識し、新規ブックへ1行全ての データをコピー貼付け処理後、各々仕訳されたブックB列値に-A・-B~を付加し、ファイル登録を行い たいのですが、VBA初心者でどうしてよいか教えてください。    A列   B列   C列    D列 1 J00001 11111 ABCDE BHBHB 2 J00001 22222 SDFAG NHNHN 3 J00001 22222 AZXCV NHNHN 4 J00001 11111 CVBNM LKLKL 5 J00001 33333 VBNM< TYTRE ※ 指定ファイル内行数は、可変です。 ※ 指定ファイル内A列値は同一 ↓ <book1>    A列   B列   C列    D列 1 J00001 11111 ABCDE BHBHB 2 J00001 11111 CVBNM LKLKL <book2>    A列   B列   C列    D列 1 J00001 22222 SDFAG NHNHN 2 J00001 22222 AZXCV NHNHN <book3>    A列   B列   C列    D列 1 J00001 33333 VBNM< TYTRE               ↓ book1⇒J00001-A.xlsで登録 book2⇒J00001-B.xlsで登録 book3⇒J00001-C.xlsで登録

  • マクロ 2つのブック 条件一致 転記

    2つのエクセルブックがあります。 1つがIDデータ表になって、IDと払い出し内容と日付の3つがあります。 もう1つがID管理票で、IDを担当ごとに管理している票です。 IDデータ表のIDとID管理票のIDを一致したら IDデータ表の払い出し区分の単語を基準に(新規・変更・廃止) ID管理票.xlsに乗っているIDの横に 払い出し区分の単語の条件で 新規の場合,ID右隣に日付を転記 変更の場合,IDの2つ右隣に日付を転記 廃止の場合,IDの3つ右隣に日付を転記を行いたいのですが FINDメソッドを使い、行のB列の区分で判定して、日付を書き入れるのと Offセットでセルの位置を指定するのと「IDデータ表」.xlsの特定の範囲のデータを繰り返す というアドバイスをもらいましたが 繰り返し処理(ForやLoop)をよく理解していないからだと思います。 どなたかご教示くださいますでしょうか。 下記に簡素でありますが構成状態と 処理の概要と画像添付させて頂きます IDデータ表.xls    A列         B列       C列 1  ID番号     払い出し区分   日付 2  110001241      新規      10/2 3  120000065      変更      10/3 4  190000036      廃止      10/4     ↓ 以下100行くらい続いています ID管理票.xls ID番号の場所がバラバラで AO列にあったりBC列にあったりしています。 また、ID管理票にすでに日付が入っていることもありますが それはそのまま上書きで問題ありません。 110001241, 10/2       (新規区分なのでIDの右隣に日付を転記) 120000065, 空白 10/3     (変更区分なのでIDの右2つ目に日付を転記) 190000036, 空白,空白,10/4   (廃止区分なのでIDの右3つ目に日付を転記) お手数ですがよろしくお願いいたします

  • CSVデータから日付を正確に読み込めません

    ユーザーフォームのテキストボックスでCSVファイルを指定し、レポート用のBookに貼付けしようとするのですが、 以下のように日付がおかしくなってしまいます。 ご教授願えませんでしょうか? CSVデータ       Xlsデータ 日付(A列)      日付(A列) 2008/4/1        2001/8/4 2008/4/2        2002/8/4 2008/4/3    ⇒   2003/8/4 2008/4/4        2004/8/4 2008/4/5        2005/8/4 (B列からQ列までは数値データとなっております。) 現在、入力しているVBAは下記のような記述です。 ' "CSVデータ"をExcelで開く Workbooks.OpenText TextBox2.Value, Local:=True Cells.Select Selection.Copy Windows("Report.xls").Activate Sheets("元データ").Select Cells.Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Windows(2).Activate ActiveWindow.Close SaveChanges:=False

  • VBAで表作成中解らないことだらけ・・・ひとつずつ教えてください。

    ブックの種類 入力フォーム→日付を設定するフォーム画面です。 book→予め出来ている表(B5・B7・B9・B10・I5はタイトル?になります)    B  I   L ・・・ 4         日付・・・ 5 商品名 コード 曜日・・・ 6 商品名 コード 数値・・・ 7   小計    数値・・・ 8 商品名 コード 数値・・・ 9   小計    数値・・・ 10  合計    数値・・・ 入力データ→日付(曜日)、区分、商品名、商品数、コードが表になっています。 まず入力フォームで日付をセットします。 次にbookに入力フォームで入力した日付から1ヶ月間を表示させます。 (1) 日付設定表に設定日付をキーにして入力データブックより検索 (2) 検索日付が一致すれば、該当商品名、コード、区分、商品数等を取得 (3) 区分:1の場合は、該当日付の下の6行に、区分:2の場合は、8行に設定(同一商品の場合は加算) 但し、新しい商品の場合は行を追加→ 区分:1の場合は6行以降に、区分:2)の場合は8行以降に追加する (4)区分ごとの小計を表示 (5)合計を表示 (6)bookのみ処理した日付と時間で保存 (7)入力データのブックを閉じる。 出来ているところは日付を貼り付けるまでは教えてもらいながらですができています。 明日中とのことなのでよろしくお願いします。

  • ブック間のデータ転送マクロをお教えください

    Book1のSheet1のA列にあるデータと、開いているBook2のSheet2のA列にあるデータが完全一致したら、後者のBCD列のデータを前者のDEF列に順に代入するマクロをお教えください。 同じBook内にあるSheet1とSheet2間のデータ転送は、以下のFind関数を使用したマクロでうまくいのですが、Book間での処理に苦慮しています。できれば以下のコードを基にして作りたいです。よろしくお願い申し上げます。 -------- Sub sample() 転送先 = "D" '転送先の列番号 転送元 = 1 '転送元の列番号(相対) サイズ = 2 '転送サイズ Set st1 = Worksheets("sheet1") Set st2 = Worksheets("sheet2") For i = 1 To st1.Cells(Rows.Count, 1).End(xlUp).Row Set pos = st2.Range("A:A").Find(st1.Cells(i, "A"), _ LookAt:=xlWhole, MatchCase:=True, MatchByte:=True) If Not pos Is Nothing Then st1.Cells(i, 転送先).Resize(1, サイズ).Value = _ pos.Offset(0, 転送元).Resize(1, サイズ).Value End If Next End Sub

専門家に質問してみよう