• ベストアンサー

エクセルのVBAを教えて下さい

エクセルのVBAについて質問させて頂きます。 あるブックを、指定した20~30個のリストのタイトルをそれぞれにつけて20~30個複製し、さらにその複製したブックの指定したセルにタイトルと 同じ指定したリストの文字列を入れることは可能でしょうか。 説明が下手くそで申し訳ありません。 たとえば、Aというタイトルのブックを、 1から100のタイトルをそれぞれつけて100個複製し、 このブックのシート1のセルB1にブックのタイトルを入れるというような感じなのですが…(汗) どなたか知恵をお貸しいただけると幸いです。

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

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.3

新規ブックを作成し、Sheet1のA列に1行目から作成したいタイトルのリストを間を開けずに作成してください。(添付画像を参照願います) (ファイル名になりますので、拡張子「.xls」や「.xlsx」なども含め、他のタイトルと重複しないように) Alt+F11でVBEを開き、挿入から標準モジュールを挿入してください。 下記のVBAコードを貼り付けて、右上の「×」でVBEを閉じてください。 Alt+F8よりマクロ「sample」を実行後、ファイルを開くダイアログが出ますので元のブック(ご提示の例ではAブック)を参照してください。 リストの数だけ、AブックのSheet1のセルB1にリストの名前を入力し、同名で別名保存します。 出力先は参照したAブックと同じフォルダになります。 また、仕様変更・要望等あれば補足願います。 ■VBAコード Sub sample() Dim fpath As String Dim myBook As Workbook Dim myDir As String Dim i As Long fpath = Application.GetOpenFilename("全てのファイル(*.*),*.*") Set myBook = Workbooks.Open(Filename:=fpath) myDir = Left(myBook.FullName, Len(myBook.FullName) - Len(Dir(myBook.FullName))) With ThisWorkbook.Sheets(1) For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row     Application.StatusBar = .Cells(i, "A").Value & "を作成中"     myBook.Sheets(1).Range("B1").Value = .Cells(i, "A").Value     myBook.SaveAs Filename:=myDir & .Cells(i, "A").Value     DoEvents Next i myBook.Close End With End Sub

ponkotsu3
質問者

お礼

ありがとうございます! 早速試してみます!!!

その他の回答 (3)

  • chie65535
  • ベストアンサー率43% (8519/19366)
回答No.4

>このブックのシート1のセルB1にブックのタイトルを入れる 「タイトル」が何なのか判りませんが「ファイル名」だと仮定すると、B1セルに =MID(CELL("filename",A1),FIND("[",CELL("filename",A1))+1,FIND("]",CELL("filename",A1))-FIND("[",CELL("filename",A1))-1) と言う式を入れておくと、自動的に「そのブックのファイル名」がB1に表示されます。

ponkotsu3
質問者

お礼

わかりにくい質問で申し訳ありません(汗) ご回答ありがとうございます! 試してみます!

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

>あるブック と言われただけでは、質問者様以外の人間にはどの様なブックの事なのかさっぱり解りませんし、 >指定した20~30個のリストのタイトル とは、どこのどこからどこまでの範囲に、どの様な形で指定されているのか、という事も説明して頂かなくてはVBAを組む事が出来ませんので、それらの点に関しても御説明願います。  それから、そのリストに入力されているタイトルの中に、もしファイル名として使用できない文字列が存在していた場合や、同じタイトルが複数存在していた場合などにはどの様な扱いをすれば宜しいのでしょうか?

ponkotsu3
質問者

お礼

わかりにくい質問で申し訳ありません(汗) VBAの知識が全く無いため、 そういった情報も必要なことをはじめて知りました。 ご指摘ありがとうございます!

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

テストもしてないので、その辺は別途確認してほしいのですが。 とりあえず、Title(100)の配列にタイトル名が1~100まで入ってるとするなら For I=1 TO 100 Workbooks.Add Range("B1").Value=Title(I) ActiveWorkbook.SaveAs Filename:=Titel(I) ActiveWorkbook.Close Next これで、セルB1にタイトル名が入った、タイトル名のブックが100個、 元のブックのあるフォルダにできるはずです。

ponkotsu3
質問者

お礼

ありがとうございます! 試してみます!!

関連するQ&A

  • Excelファイル連続置換vba

    Excelで複数の文字列を一気に置換するvbaを教えていただけないでしょうか。 Book2の置換リストをBook1のSheet1に完全一致で置換したいのです。 Book1.xlsx:元ファイル Book2.xlsx:置換リスト ※下記のような配列 A列 B列 1 01_1 2 02_2 3 03_3 4 04_4 以上です。 よろしくお願いいたします。

  • excel vba 選択されたセルの範囲を別のセル

    excel vba 選択されたセルの範囲を別のセルに書き込みたい。 お世話になっております。 乱筆乱文お許し下さい。 EXCEL VBAについてですが、或るブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でACTIVEなsheetの名前を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前sheetをACTIVEにすることは出来たのですが、もう一歩進んで、 ブックを閉じる時(Private Sub Workbook_BeforeClose(Cancel As Boolean))にその時点でselectされているcellの範囲(単一セル・複数セル共に、名前がついていたら名前、ついていなければrangeを表す文字列)を指定シートの指定セルに書き込み、そのブックを開く時(Private Sub Workbook_Open())に指定シートの指定セルの値の名前cell範囲をselectするようなことがやりたいのですが、私の検索の仕方が下手で、なかなか出てきません。どなたかご教示下さい。よろしくお願いします。

  • エクセルのブック内の検索一覧

    エクセル2003VBAについて教えてください。 複数のブックがあり、ブックの中にはいくつかの同じ内容のシートがあります。 シートの内容は、 A1セルには、○か×が入ります。 A2セルには、このブック名とシート名が入っています。 A3セルにはいろいろな文字列が入っています。 A1が○のブック内のシートを探して、別のブックへ |A2セルの内容|A3セルの内容| というリストを作成したいのですが、どのように組めばよいでしょうか。

  • 【Excel_VBA】セルに連動したシート削除

    ExcelのVBAで実装可能かと思うのですが、ご教授願いたく思います。 シートがかなりたくさんあるエクセルブックがあります。 各シートの指定のセルに文字列の有無を判断し 文字列が無い場合、そのシートを消す この作業を連続して多数の該当シートを一気に削除したいVBAは どのように記述すればよいでしょうか? また、4シートほど、表紙やリストなど上記、文字列の有無を判断せず そのまま残したいシートもあります。(このシート群は固定で増える事はありません) 上記、もし実装可能であればご教授お願いします。 また、可能だけどokwaveの入力欄では面倒だし説明しづらい、という回答でもokです。 その場合、参考サイトなど教えて頂けると幸いです。 (当方VBAには精通しておりませんが) 何卒よろしくお願いいたします。

  • Excelの文字列検索

    Excelの初心者です。申し訳ありませんが、次の件でどなたか教えていただけませんか? エクセルシートには、例えば下記のような文字列の並びがあります。      1       2       3    … 1  文字列11  文字列12  文字列13 2  文字列21  文字列22  文字列23 … 各セルはプルダウンリストにて幾つかの異なった文字列がリストアップされてあります。 各セルの文字列をリストから選び、4列目以降にリストの組み合わせに完全に合致するような結果を示したいと考えております。このようなシートを作成するにあたり、御知恵をいただければありがたく思います。 上記の件、どうぞよろしくお願いいたします。

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

    閲覧ありがとうございます。 エクセルの作業ファイルにてVBAのコードを作成しているのですが、中々思う通りに実行できないので、ご教授願います。 実行したい内容については以下の通りです。 ボタン1を押すと(添付画像上段のブック)、マイドキュメント内にある「データ転送ソフト2」という名前のブックを開き、そのブックのシート「A」内(添付画像下段)の、ボタン1を押したシートのF1セル(添付画像上段のブック)と同じ文字(日付)の列と"う"と入力された行の交差したセルの数値(添付画像下段の紫色のセル)をコピーして、ボタン1を押したシートのT4のセル(転送値1:の右隣にある薄緑のセル)に貼り付ける作業が行えるコードをご教授願いたいです。 要約しますと、作業しているシートのボタン1を押すと、別の場所にあるブックを開き、そのシート内の条件に沿った数値をコピーして、作業しているシートの指定されたセルに貼り付ける作業が行いたいです。 とても分かりにくい文章で申し訳ございませんが、お願いします。 可能ならば、コードの解説もつけてくださると嬉しいです。

  • エクセルVBAで他ブックのセルへジャンプするコード

    お世話になります。アクティブセルから他ブックを開き、元の内容と同じ文字列が含まれるセルにジャンプするVBAのコードを教えていただけないでしょうか。 ・ブック1「12345」のアクティブセルでマクロボタンを押す。 ・指定のブック2シート1を開き、「12345」が含まれるセルを検索しジャンプ(アクティブセル)する。 ・指定の文字列が無い場合は「検索条件に一致するデータは見つかりません。」 ネットなどでいろいろ調べたのですが見つかりませんでした。みなさんご教授お願いいたします。

  • エクセルVBAで範囲指定の方法をおしえてください

    エクセルVBAで範囲指定の方法をおしえてください こんばんは。 以下のようにデータがあるとします。 222 111 333 555 888 999 454 665 222 111の文字列を含むセルから888の文字列を含むセルまでをVBAで範囲指定したいのですが 方法がわかりません。 エクセルに読み込むファイルによって目的の情報の位置が変わるため、文字列を基に範囲指定したいのです。 本当に困っていますよろしくお願いします。

  • Excel VBA について質問です。

    Excel VBA について質問です。 sheet1に、数字が入力され背景色がついたセルがあります。 sheet2に背景色ごとに1列に並び替えをしたいのですが、どのようにしたらよいでしょうか? まったくの初心者で、どうしたらよいのかわかりません。 よろしくお願いします。 1、sheet1の背景色は、指定されていないため何色か指定できない。 2、セルの範囲も都度違うため、指定できない。 3、sheet2には、色ごとに1列に並べるのみでよい。 上記の内容でご理解いただけるでしょうか? よろしくお願いします。

  • エクセルVBA「コンボボックスの値をワークシートに代入」

    エクセルVBA「コンボボックスの値をワークシートに代入」 連日質問してしまい申し訳ありません。・・・ 今回は「コンボボックス」にリストアップされている値をセルに入力したいのです。 画像を見て頂ければと思いますが、コンボボックス(左ウィンドウ画像)には25の文字列がリストアップされています。 このリストアップされている文字列をすべてワークシートのセルB4からの"4"列に入力したいのです。 なんだか滅茶苦茶ですが、ご理解頂ければご協力お願いします。

専門家に質問してみよう