• ベストアンサー

フォルダ内にある複数ブックのシート名の変更

エクセルのVBAについて質問させて下さい。 現在、アクセス2000でクエリをマクロのワークシート変換で 規定のエクセルブック(2000)にエクスポートしています。 項目別なので30以上のブックになっています。 これを毎月の更新で12ヶ月分エクスポートします。 問題なのがクエリ名がシート名になっていますが、このシート名を 月によって変更したいのです。ブックが30以上あるので手作業では 自分1人の作業だとやってしまうのですが、不在時に他の人にやって もらうには無理があるかなと・・・。 イメージとしては、マクロブックのコマンドボタンを押すと そのフォルダにある30以上のブックの一番右にあるシートを マクロブックのセルA1に入力した月に変更し、変更したシート内の 1行目の項目名の長さに合わせてセルの幅を変更し、項目名に色をつけるというイメージです。 今までは2項目くらいだったので手作業でやっていたのですが、 30以上になると手作業ではつらい状況です。 VBAは初心者なので答えをいただけると大変ありがたいです。 よろしくお願いします。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

その列の最大のセルの幅に合わせて良いのでしたら例1を、そうではなく、項目(1行目)の内容で調整した幅に合わせるのでしたら、例2を ws.Name = ws.Range("T2") & "月" の下に入れます。 なお、どちらを使用する場合も Dim nCount As Long Dim sVal As String を先頭の方に入れてください。 また、例2を使用する場合は、項目のフォント種やフォントサイズが不明な場合調整が難しい為、作業用シートに項目をコピーしてExcelに幅を調整させ、その幅を対象列に反映しています。 マクロがあるブックのSheet3を作業用シートとして使用しますのでSheet3は空にして置いてください。 【例1】 '対象シートのA1から右に順番に処理、空白セルがあったら処理終了 nCount = 1 sVal = ws.Cells(1, nCount).Value Do While sVal <> ""  '幅を調整  ws.Columns(nCount).EntireColumn.AutoFit  '項目セルに色付け  ws.Cells(1, nCount).Interior.ColorIndex = 38 '色は適当  nCount = nCount + 1  sVal = ws.Cells(1, nCount).Value Loop 【例2】 '対象シートのA1から右に順番に処理、空白セルがあったら処理終了 nCount = 1 sVal = ws.Cells(1, nCount).Value Do While sVal <> ""  '対象項目セルをコピー  ws.Activate  ws.Cells(1, nCount).Select  Selection.Interior.ColorIndex = 38 '色は適当  Selection.Copy  '作業用シートのA1にコピー  ThisWorkbook.Activate  Sheets("Sheet3").Select 'Sheet3を作業用シートとして使用  Range("A1").Select  ActiveSheet.Paste  '-----AutoFitで幅調整  Columns("A:A").EntireColumn.AutoFit  nColWidth = Range("A1").ColumnWidth  対象列にその幅を反映  ws.Columns(nCount).ColumnWidth = nColWidth  nCount = nCount + 1  sVal = ws.Cells(1, nCount).Value Loop それと、今のマクロのままですと、「一番右にあるシート」だけでなく、全てのシートが変更対象になりますので、2箇所修正します。 For Each ws In wb.Worksheets ↓ Set ws = wb.Worksheets(wb.Sheets.Count) Next ↓ 'Next 最初の質問内容からだけでは「答え」は難しいですよ。決して揚げ足取りのつもりでは有りません。

junichihirobe
質問者

お礼

ありがとうございました。 勉強不足で話しについていけないことが多かったですが 大変助かりました。

junichihirobe
質問者

補足

>最初の質問内容からだけでは「答え」は難しいですよ。決して揚げ足 >取りのつもりでは有りません。 こちらも詰まっていたのですいません。 ただ、こういうことをしたいのですか?と事例を挙げてくれれば 対応も違うと思います。 おかげさまでなんとかできたい処理ができました。 ありがとうございます。 また問題が出て今度は定義の削除で悩んでいます。 どうしたらいいのやら・・。

その他の回答 (3)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

ANo.2です。 初めに提示された質問と補足で提示されたコードは、内容に食い違いがありますが、そこはスル~でいいのでしょうか? 実際動いているのであればいいですけど、 >If Trim(ws.Range("T2") & "月") <> "" Then って違うように思いました。 仮にセルT2が空白であったなら"月"と""を比較するわけですから、当然違いますよね。 あとセルの幅を自動に合わせるのであれば、例えばA列からD列なら Range("A:D").EntireColumn.AutoFit ですが、ここでシートの指定が必要なので ws.Range("A:D").EntireColumn.AutoFit となるのかな。 色のつけ方についても With ws .Range(.Range("A1"), .Cells(1, Columns.Count).End(xlToLeft)).Interior.ColorIndex = 8 End With とか。 色については http://www.relief.jp/itnote/archives/000482.php をご参考に。 それぞれFor Each ws~ の直下でもいいかと思いますけど。

junichihirobe
質問者

補足

>初めに提示された質問と補足で提示されたコードは、内容に食い違い >がありますが、そこはスル~でいいのでしょうか? わからなかったので検索して見つけたコードに合わせて クエリに月という項目を加えてそれを条件にしただけです。 月のT1が空白ならシート名の変更を行わずにスルーという形に なってしまいますが、データがない場合はしょうがないかなと・・。 また問題が出て、ブックのシートにワークシート変換した際に 定義がつけられてしまって月の指定を変えてエクスポートしても 定義がつけられた前月のワークシートにデータを貼り付けようと してエラーが出てしまって・・・。 どうしたらいいのやら・・。 定義の削除ってVBAでできるんでしょうか? 難しいコードで言われてもわからないんですけど・・。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

”答え”って言っても提示された状況からでは”推測による回答”しかでませんが、 あとはご自身で修正できるのでしょうか?って疑問がでましたけど。

junichihirobe
質問者

補足

以下のコードでシート名の変更はできましたが 変更したシート内の1行目の項目名の長さに合わせてセルの幅を 変更し、項目名に色をつけるという作業がわからないです。 Dim path$, wb As Workbook, wbName$ Dim ws As Worksheet, i& path = ThisWorkbook.path & "\" wbName = Dir(path & "*.xls") Do Until wbName = "" If wbName <> ThisWorkbook.Name Then Set wb = Workbooks.Open(path & wbName) i = 2 For Each ws In wb.Worksheets If Trim(ws.Range("T2") & "月") <> "" Then On Error Resume Next ws.Name = ws.Range("T2") & "月" If Err.Number <> 0 Then ws.Name = ws.Range("T2") & "月" & " (" & i & ")" i = i + 1 End If On Error GoTo 0 End If DoEvents Next wb.Save wb.Close End If wbName = Dir Loop Set wb = Nothing Set ws = Nothing

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

大変お困りなのは判りますが、まずはご自分の質問を読み返してみてください。 あなたは困っている事とやりたい事を述べているだけで質問をしていません。 まずはマクロの記録で操作を記録し、そのコードを修正する中で不明な点を質問してください。

junichihirobe
質問者

補足

それがわからないから質問してるんですけど・・。

関連するQ&A

  • フォルダ内の全ブックのシート名を変更したいです。

    同一フォルダ内に、ファイル名の違うエクセルブックが100個ほどあります。 その100個のそれぞれには、シートが1つ入っています。(シート名は、ブック毎に異なっています) それらのシート名を100個全部、「2013-07」という名前にしたいのですが、マクロで一括処理はできますでしょうか? データが多く、マクロ初心者なので、困っております。。 エクセルは2013を使用しています。 お教えいただければ幸いですm(_ _)m

  • Excel 複数のシート名を一括変更できる名簿作り

    Excelでシート名を変更する際、特定のブックの特定のセルに文字を打ち込むと、他の全てのブックのシート名が一括で変更されるようにすることは可能でしょうか。 例えばですが“名簿”というブックの「A1~A5」に文字を入力すると、他の全てのブックの「Sheet1」には“名簿”ブックの「A1」に打ち込んだ文字が反映され、「Sheet2」には“名簿”ブックの「A2」…と、一括で変更できる方法はないかと思っています。 他の全てのブックは一つのフォルダの中に集約します。 また、ブック名だけ変えて中身は原本のコピーをしていきます。 3000を超えるブックを作るので、変更をすることになった時は全て手作業になるかと思うとゾッとします…。 調べていると、VBAというものを使いそうというところまで分かったのですが、こことはカテゴリが違っていましたら申し訳ございません。

  • エクセル・ブックの10以上の「シート名変更」と「色変更」

    エクセルブックの10(一例)以上の   「下記作業」 を一挙に行いたい。自分で作ったものは自己責任という ことでいざ知らず、他人様の作ったブックの 「シート名変更」 「シート見出し色」 「シート名並び替え」(ABC順、数字順) は「単純手作業」でやる他無いですよね。殆どの場合、バラ バラになっていて、どのシートを印刷したかとかの確認 や、「矛盾のあるシート名変更」「並び替え=挿入・削除」を 手作業でやるのは「本来の作業」以上に疲れます。 何か良い「裏技」有りませんでしょうか

  • 複数sheet(可変)を別bookにコピーする

    Excel VBAでの質問です。 わかる方ご回答いただけると幸いです。 例えば、 現在"9月"というExcelファイルを開いて作業しています。 sheetは"1"~”20”という、作りが同じsheetが20個あります。 <やりたいこと> ・各sheetのA1~D80のセルの値をすべてdeleteする  (ただしsheetによってはA1セルの値を次月の同じsheetのK1セルにコピーする。  コピー後はA1セルの値はdeleteしてよい。) ・”10月”という名前のbookで新規で保存する(毎月名前は変わります) 現在、毎月月末にsheet"1"~"20"までのセルの値をすべて消して 次月に残す値をコピーペーストして”10月”というファイル名をつけて 保存するということを手作業しています。 上記をボタンひとつでやってくれるようなマクロがほしいのですが。 可能でしょうか?

  • アクセス 複数クエリ⇒エクセルの各シートに

    MS Access と MS Excelとの連携テクニックについて、 教えてください。 アクセスで、クエリA・クエリB があるとすると、 マクロ・VBAを使用して、 これらを、エクセルファイル(ファイル名は任意)の 各シートとして、Sheet1,Sheet2としてエクスポートしたいのですが、 可能でしょうか?

  • 複数のシートや複数のブックの検索

    こんばんは。 エクセルはほぼ初心者です。 セルに入れた文字をほぼ一致、または完全一致で複数のシート内を 検索して、その行の数値を表示させる事はできますか? VBAやマクロで教えて頂けると幸いです。 欲張りですみませんが↑の別バージョンで複数のブック内も可能でしょうか?

  • フォルダ内の特定ブックだけを1つのブックにまとめる

    はじめましてマクロ超初心者です。 会社のシステム(ツール?)で同じフォルダに1案件につき2つのブックが作成されます。 毎回約30案件、すなわち同じフォルダに60ブックあります。 (1)同じフルダ内に60ブック (2)その内、同じ案件が2つ。ブック名「1_****」と「2_****」 ****は毎回かわる (3)ブックには2つのシート。シート名「1」と「2」 (4)ブック「1_****」のシート「1」が開いた状態、ブック「2_****」のシート「2」が開いた状態になってる (5)必要なのはブック「1_****」のシート「1」とブック「2_****」のシート「2」 この「1_****」のシート「1」と「2_****」シート「2」を「1_****」にまとめる作業を毎回手作業でやっています。これをなんとかマクロで出来ないでしょうか?同じフォルダにある複数ブックをまとめるマクロは見つけました、複数=全てのブックに実行されてしまいます。フォルダ内の特定のブックをまとめるマクロがみつからず。。。どなたかご教授して頂けませんか?

  • Excel 閉じているブックのシート名を変更する方法

    いつもお世話になります。 Excel2002を使用しています。 ブックAを開き、ここから閉じているブックBのシート名を変更することは可能でしょうか? 理想としては、ブックA上のボタンをクリックしたときに、閉じているブックBのシート名が変更できれば・・・。 変更する名前は常に同じものでOKです。以上、よろしくお願いします。

  • 複数のブックを新しいブックのSheet1にまとめたい

    教えてください。 「A」「B」「C」「D」「E」「F」「G」 と言った名前のエクセルファイルがあります。 実際は約50個ありますが・・・。 それぞれ、Sheet1にのみ同じフォーマットですが、行数というか、件数が異なります。 新しいエクセルブックのSheet1にA」のデータの下に「B」のデータを貼り付けるという風に、「A」~「G」をまとめて一つのシートにまとめたいです。コピペではなくマクロでできるということを知りました。 毎月作業することになるので、マクロを組んでおきたいと思っています。 しかし、マクロは単純作業を記録して実行するというような基本的なことしかわかりません。 専門的用語ではなく、 (1)ツールをクリック (2)すべてのブックを開いておく (3)Visual Basicをクリック などというように、手順を教えていただけないでしょうか? よろしくお願いします。

  • 同じフォルダにある50個のブックのそれぞれ50枚のシートの集計

    同じフォルダに50個のブックがあり、それぞれのブックが50枚のシートを持っています。ブック名として人の名前、シート名として地名がつけられています。(つまり、総計で2500の地名がつけられたシートがあります。)シートは全て同じ形式です。集計用ブックを作りこの2500枚のシートの同じセルの集計をしたいのですが、どうすればよろしいでしょうか?つまり、2500枚のシートのE1の合計が集計用ブックのSheet1のE1に入るようにしたいのです。2500枚のシートのセルには数式が入っていて、ほしいのはその計算結果(Value)の合計です。また、2500枚のシートのセルの計算結果が””の場合もあります。難しくなければマクロでも結構ですので、是非教えてください。

専門家に質問してみよう