• ベストアンサー

ExcelVBA シートコピーの処理

シート1、シート2、シート3、シート4があり シート1、シート2、シート3を『新しいブック』へコピーを行い保存をする。 保存の際にシート4のA列にファイル名がありシート3のA1へファイル名を入れ 保存の際にファイル名をシート4のファイル名似て保存を行う。 シート4のA列に入力のある行の回数だけ繰り返す。 また、保存の際にファイル名と同じフォルダを作成しそこへ保存を行う。 以上の処理を100件以上繰り返す必要がありうまくいかず悩んでおります。 ご教授いただけましたらよろしくお願いいたします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

sub macro1()  dim myPath as string  dim myFile as string  dim h as range, target as range  mypath = thisworkbook.path & "\" ’保存先を正しく準備する事  worksheets("Sheet4").select  set target = range("A1:A" & range("A65536").end(xlup).row)  on error resume next  worksheets(array("Sheet1", "Sheet2", "Sheet3")).copy  for each h in target   myfile = h.value   mkdir mypath & split(myfile, ".")(0) & "\"   worksheets("Sheet3").range("A1") = h.value   activeworkbook.saveas mypath & split(myfile, ".")(0) & "\" & myfile  next  activeworkbook.close false end sub #どこに保存先フォルダを一連作成するのか、状況説明が足りてません。  シート4のA列の「ファイル名」として具体的にどんな内容で記入してあるのかも、説明されていません。  てきとーに補って作成してあるので、必要に応じて適切にマクロを見直してください。

tukiyomino
質問者

お礼

早速のご回答ありがとうございます。 実行して確認してみます。 ありがとうございます。 ※保存先フォルダはC¥Tempを想定し ファイル名は地域名の予定でした。 説明が足らず申し訳ありません。

その他の回答 (1)

回答No.2

ワケワカランノハ、ハタクシタケアルカ? ジブン、ホント二ワカッテイルノコトアルカ??

tukiyomino
質問者

お礼

質問文が拙く申し訳ありません。

関連するQ&A

  • ExcelVBA シートコピーについて

    何度か試行錯誤したのですが、何故かうまくいかないので質問させていただきます。 エクセルで 「A」という名のBook内にSheet1にある値を参照して該当する値を返すSheet2があります。(ここまではVlookup関数などで処理できます。) このSheet2を全く新しいBookにコピーしてブック名を「B」、シート名をSheet2のB1の値にします。 このシートBにBook「A」のSheet2のA1の値を変化させたもの(添付画像のの場合だとだと1~3)をBook「B」のSheetの末に1つずつコピーしたいと考えています。 最終形はBook「B」に「山田」~「高梁」までのデータがシートごとに集約されたものを作りたいのですが、Sheetの貼り付けををする際にエラーが出てうまくいきません。 つたない説明で恐縮ですが、どなたかお知恵を拝借できないでしょうか。

  • 【EXCEL】シートのコピーと切り分け

    教えてください。 1~11000行のデータがあります。 1行目はヘッダーとしてそのまま残して、2行目から 62行づつ新しいシートにコピーしていきます。 そしてその新しいシートは新しいブックとして デスクトップの「c」というフォルダに保存したいんです。 わかりづらかったらすみません。 宜しくお願いします。

  • ExcelVBA 名簿の別ブック(CSV)へコピーについて

    VBAは学生時代勉強したもののすっかり忘れてしまい、初心に返って現在参考書を読みながら取り掛かっていますが、 望むような動作が出来ず大変困っています。下記のようなデータを新規ブックAへある条件でコピーし、 CSVとして保存したく、試行錯誤中です。 (A:1)(G:15)までタイトル行にあったデータが入っている名簿があります。 (G:15)でデータは終了ですが、別の名簿も扱う事があり、別の名簿はデータの終了行は(G:15)とは限りません。 -------------------------------------------------------------- (A列)(B列) (C列) (D列) (E列) (F列) (G列)  No   姓    名  姓カナ  名カナ  年齢  性別  1  2  3  ・  15  空白  空白  空白  空白  空白  空白  空白 -------------------------------------------------------------- コピー条件 (1)データの開始行検索&終了行検索(空白セル) (2)データ内の検索(文字or数字) (3)データの開始行から終了行まで新規ブックAへ下記を繰り返す (4)A列のデータを新規ブックAへコピー (5)タイトル行のデータ入力(A列:同じ)(B列:名前)(C列:カナ) (6)B列+全角スペース+C列のデータを新規ブックAのB列へコピー (7)D列+半角スペース+E列のデータを新規ブックAのC列へコピー (8)G列のデータを新規ブックAのD列へコピー (8)F列のデータを新規ブックAのE列へコピー (9)新規ブックを本ファイル名+YYYYMMDD.csvでデスクトップへ保存 -------------------------------------------------------------- 図々しい質問ですが、具体的なコードのお知恵をお貸し頂けたら大変助かります。どうぞ、よろしくお願いいたします。

  • ExcelVBA シートコピー

    ExcelVBAで管理表1のシート1へ管理表2のシート2へコピーするVBAを書いてみました。 以下部分を修正したいです。 wbSaki.Worksheets("シート2").Range("A1:VA3000").Copy こちらの選択範囲を最終行と最終列という風にしたいのですが、うまくコピー貼り付けができないので理由がわかる方がいらっしゃれば教えていただけますでしょうか。 以下全体コード------------------ Sub 管理表1のシート1を管理表2のシート2へを貼り付け() '選択したファイルを取り込み、別のファイルに貼り付ける。 Dim RC As Integer Dim OpenFileName, fileName, Path, SetFile As String Dim wbMoto, wbSaki As Workbook Set wbMoto = ThisWorkbook 'マスターデータ取り込み元をセット Application.DisplayAlerts = False Application.ScreenUpdating = False 'BOOKを開かない RC = MsgBox("管理表1を開きますか?", vbYesNo + vbQuestion, "確認") If RC = vbYes Then 'サーバー指定 End Withまで With CreateObject("WScript.Shell") strCdir = CurDir .currentdirectory = "ファイル格納先" OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") 'ダイアログボックスを表示して、マスターデータファイルを指定します。 If OpenFileName <> "False" Then SetFile = OpenFileName Else MsgBox "キャンセルされました" Exit Sub 'マスターデータの取り込みをキャンセル End If End With Workbooks.Open fileName:=SetFile, ReadOnly:=True, UpdateLinks:=0 'ダイアログボックスで指定したマスターデータファイルを開きます。 'VBA起動BOOKのシートをクリア wbMoto.Worksheets("シート1").Cells.Clear Set wbSaki = Workbooks.Open(Path & SetFile) '--- オートフィルタをクリアする ---' If wbSaki.Worksheets("シート2").FilterMode Then wbSaki.Worksheets("シート2").ShowAllData 'ワークブック間のシートをコピーします。 wbSaki.Worksheets("シート2").Range("A1:VA3000").Copy wbMoto.Worksheets("シート1").Range("A1").PasteSpecial xlPasteValues Application.CutCopyMode = False 'コピー切り取りを解除 wbSaki.Close False 'マスターデータ取り込み先のファイルを閉じる Application.ScreenUpdating = True 'BOOKを開かずに作業 Else MsgBox "処理を中断します" End If ThisWorkbook.Worksheets("元のシート").Select 'シート名を指定 Application.DisplayAlerts = True End Sub

  • Excel マクロ シートをコピーするには

    初心者です。 今、Excelファイルが2つあります。 1つは、Book1で、Sheet1にA列だけ文字列の入った表があります。 セル  文字列 A3  AAA A4  BBB A5  CCC A6  DDD  :   : のような感じです。 もう1つ、Book2があり、それにはいろいろな単価表のシートが多数入っています。 そのシート名はBook1,Sheet1の表にある文字列と全く同じものもあります。(表にはないシート名のシートもあります) 今、Book1,Sheet1の表にある文字列と同じ名前のシートを Book2からBook1へコピーしたいのです。 Book1の表にある文字列は、必ずしもBook2にあるシート名と同じとはかぎらないので、 IFを使って、この文字列のシートがあればコピーする というふうにしたらよいかと思ったのですが、あまりに初心者のため、 条件文にどう書いたらよいのかで困ってしまいました。 お力添えを宜しくお願いします。

  • IF関数と文字列のコピー

    次の処理をしたいのですが、どうしたらいいのかがわかりません。 Book名AAAとBook名BBBがあります。 Book名AAAに A行にキーワード(文字列) B行に、その検索需要数(数値)があります。 B行の数値が2500以上、10000未満なら真とします。 真である場合 Book名BBBのA行に、Book名AAAのA行をコピーします。 Book名AAAのB行の値が3000以上10000以下ならの式と 別のブックに文字列をコピする という別々の処理はわかるですが 真である場合に、別のBookにセルをコピーする というやりかたがわかりません。 どなたかお分かりのかたいらしゃいませんか

  • エクセルでシートを新規Bookにコピーして保存

    いつもお世話になっております。 毎回お世話になっております。 過去にも似たような質問をさせていただいてその時々の要求は解決しているのですが、悲しいかな各々のVBAが組み合わせられません。(というレベルです) やりたいことは、特定のBookのアクティブシートを別の新規BookのSheet1にコピーして数値で貼り付ける。➣ここまではできました。 問題はこの、新規Bookを指定のセル(D5とA1)の内容をファイル名にして指定のフォルダに保存する。が出来ません。 1.新規BookでVBAを動かしたいのですが、複数のPCで使う時にどこに記録するのかわかりません。 2.コピーして数値で貼り付けから保存までのVBAは元のシートから直接(1回の操作)でも、新規Book1を表示させてからの操作でもどちらでも良いです。 3.Book1を保存するファイル形式はVBAが含まれないxlsxが好ましいです。(メールで送信するので)

  • エクセルでのシートのコピーについて。

    このカテゴリで始めての質問です。よろしくお願いします。 ファイルサーバーに数台のPCが繋がっています。 (PC名はA、B、C・・・とします。) 全てのPCはWindowsXPでOffice EXCEL 2000です。 AのPCでEXCELの新規のBookを作りファイルサーバーにSAVEします。でBのPCで新規のBookを作り、そこにAで作成されたBookを開き、そのBookのSheet1をドラッグ&ドロップでコピーしました。 すると、そのままコピーしたのに列の幅が異なってしまいます。何か設定でもあるのですかね? どのたか教えてください。 ちなみに、固定列の文字(AとかAEとか一番上のグレーの部分)の大きさも異なります。) よろしくお願いします。

  • 全てのシートに同じ条件で処理をし保存するマクロ

    いつも識者の皆様にはお世話になっております。 Excel VBAのことで質問させてください。 ファイル名やその中のシートの数がばらばらで、データの型が同じファイルが毎日生成されます。 下記の流れでVBAで処理をしたいと思っています。 1.ファイルを開くダイアログを出し、ブックを指定する。 2.開いたブックにある全てのシートに対し、A列が"aaa"以外の行を削除する。 3.同じディレクトリに、ファイル名の前頭に"ccc"と付けて保存する。 しかし、それぞれのシートにはデータが20000-30000行あり、上記方法だとScreenUpdatingをfalseにしても時間がかかるという記述を見つけたため、 1.ファイルを開くダイアログを出し、ブックを指定する。 2.開いたブックにある全てのシートに対し、A列が「"aaa"と等しい」の条件でフィルタをかけ、そのデータを別の新しいブックに貼り付ける(シート名も同じにする) 3.ダイアログで開いたブックと同じディレクトリに、ファイル名の前頭に"bbb"と付けて保存する。 このような手順でやろうと思っていますが、ダイアログを出すところまではなんとかたどり着けたんですが、その後がまったくわかりません。 ご参考にならないとは思いますが、書きかけ(というかダイアログを出してworkbookを追加するだけ)のコードを添付いたします。 Sub test() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") If OpenFileName <> "False" Then Workbooks.Open OpenFileName Else MsgBox "キャンセルされました" End If Workbooks.Add End Sub 識者の皆様、どうかご回答よろしくお願いいたします。

  • フォルダに入っている複数のファイルをコピーしたい。

    エクセルなのですが、 1つのフォルダに入っている複数のエクセルファイルを 1つのエクセルファイルに(下に付け加えて)まとめたいと思っています。 このようなことをやりたいと思っているのですが、 お力をお貸ししていただけないでしょうか? どのシートも形式は同じなのですが、 1つのエクセルファイルに複数のBookがある場合もあります。 中身としてはA~Z列まであり、また行についてはそれぞれのシートによって異なります。 そして、どのシートに対しても1~3行についてはタイトル等が書いてありますので、 4行目以降でデータが入っているところまで、同じフォルダに用意したファイルに 順番にコピーしていきたいと思っています。 色々と試してみたのですが、どうしても複数のファイルから取り出してくることができなくて、 すみませんがよろしくお願します。

専門家に質問してみよう