• ベストアンサー

Excelマクロで・・・

ワークシート名が「AZ20020101」というような形で付いています。 このシート名から下8桁を日付型で(2002/1/1のような形で)セルに取り出すマクロを作りたいのですがどのようにしたらいいでしょうか。 お分かりの方いましたら大至急お願いします。

  • maity
  • お礼率50% (38/75)

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

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

回答は既出とも言えますが、丁寧に且つ完結した形にすれば下記になります。少数例でテスト済み。 Sub test01() Workbooks(1).Activate Dim y, m, d As String i = 1 Dim sh As Worksheet For Each sh In Workbooks(1).Sheets If Mid(sh.Name, 1, 5) <> "Sheet" Then ' MsgBox sh.Name y = Mid(sh.Name, 2, 4) m = Mid(sh.Name, 6, 2) d = Mid(sh.Name, 8, 2) ' MsgBox Format(DateSerial(y, m, d), "yyyy/m/d") Worksheets("sheet5").Cells(i, 1) = _ Format(DateSerial(y, m, d), "yyyy/mm/dd") i = i + 1 End If Next End Sub シート名が全部AZ20020101の形式かSheet○○になっていると仮定しています。 Sheet5のA列に求める日付けをセットします。 Formatの"yyyy/m/d"か"yyyy/mm/dd"かは適当に選んで 下さい。

maity
質問者

お礼

ご丁寧にありがとうございました)^o^(

その他の回答 (2)

回答No.2

初めまして。次の式で取得できると思います。 最初に取り出したいセルの表示形式を日付型に変更しておきます。 workbooks("ブック名.xls").worksheets("シート名").range("入力したいセル番地").value = mid("シート名",3,4) & " & "/" & mid("シート名",5,2) & "/" & mid("シート名",9) この式を1行で書いて下さい。 もし、シート名を変数に代入したい時は、 変数名=workbooks("ブック名.xls").worksheets("シート名").name 又はエクセルの機能でシートに順番に番号が振られていますので(例えば、Sheet1・Sheet2・Sheet3と3枚シートが挿入されていたらSheet1から順に1・2・3とういように)、 変数名=workbooks("ブック名.xls").worksheets(シート番号).name でも取得することができます。 ご不明な点・不具合等がありましたら、ご遠慮なくお知らせ下さい。私のわかる範囲でご一緒に考えて生きたいと思います。

maity
質問者

お礼

ありがとうございます。 一緒に(考えて)生きたい…なーんて、照れますね。 というのは冗談で、ホントにありがとうございました。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

dim a as integer dim b as string dim c as string b=right(ActiveSheet.NAME,8) c=mid(b,1,4) a=mid(b,5,2) c=c & "/" & a a=mid(b,7,2) c=c & "/" & a ActiveSheet.cells(1,1)=c 以上、未確認ですが、多分大丈夫だと思います。 なお、現在アクティブなシートでないとダメですけど。

maity
質問者

お礼

早速のご回答ありがとうございました。

関連するQ&A

  • エクセル2003 マクロ シート名

    エクセル2003です。 1つのブックにシートが10シート有ります。 R2のセルに日付を入れると それぞれのシート名が日付 (例)"11月25日"になるようなマクロを作りたいのですが、 教えてください。 又は逆にシート名に"11月25日"とすると R2セルが"11月25日"となるマクロを教えてください。 日付はシート毎に違います。 すみませんがよろしくおねがいします。

  • Excelのマクロについて

    すっかり忘れてしまったのですがマクロをワークシート上に記載し その範囲のセル先頭にマクロ名をつけて実行した記憶があるのですが 今でも有効ですか?

  • エクセルマクロを教えてください

    エクセル2003を使用しています。ブックに1シートあります。シート名は「C3」セルに入力してある日付にしますが、シート上の表示形式は「平成20年1月」となっているところをシート名は「08-01」にします。その後シートを11枚コピーし、それぞれのシートの「C3」セルに年月を入力し、シート名を「08-02」「08-03」・・・「08-12」としたいのですが、うまくいきません。 マクロに詳しい方のご指導をお願いいたします。

  • エクセルマクロで検索

    エクセル初心者です。 エクセルで表を作ったのですがその中の計算式で月が変わるたびに参照するワークシートが変わるのでマクロの検索をつかいたいと考えています。 表の横に検索するワークシート名と置き換えするワークシート名をいれるセルをつくりマクロを組んで実行すると置き換えが完了するというようなマクロはできませんか?セル自体を検索置き換えはできるのですがセルの中の文字を指定の仕方がわかりません。 説明がヘタなのでわかりにくいかと思いますがよろしくおねがいします。

  • エクセルマクロのことです

    通常使っていたマクロを間違えて消してしまい、その上再構築できなくて困っています。 こんなマクロだったですが。 ブック内に複数のシートが入っています。新しくSheetを追加してA2セル(他のセルの時もあります)をアクティブにします。 Alt+F8→実行でA2セルから下へ、そのブック内の全ての「シート名」が書き出されるというマクロだったのです。 マクロ初心者です、どなたかアドバイスをお願いします。

  • EXCELでマクロを初めて実行してみたんですがぁ・・・・

    初めてマクロというものをやってみました。 ただ、動作を記憶させただけです。プログラムは全然知りません。 sheet1の株価4本値と日付を1日だけ繰り上げる 単純な動きです。一番最後のセルにその日の 日付と4本値と入れて、マクロを実行させて、1日だけ繰り上げる 作業です。 それを、Sheet2が「=Sheet1!B2」このような形で参照するように してあるのですが、実行させると、 Sheet2B2のセルが#REF!とかなんとか表示されて B3からしか正しく表示されません。 以後同じことを繰り返すと、どんどん1つずつセルがエラーして 正しく表示されるセルが下がりながら、減っていってしまいます??? なぜなんでしょうか?? また回避策というか、正しい方法はありますでしょうか?? 何卒、初めてなので、わかりやすくお教えいただけると ありがたいです。 よろしくお願いを致します。

  • エクセルVBA初心者です。マクロを組んでください。

    エクセルVBA初心者です。組んで欲しいマクロがあります。 Sheet 1に13桁を入力するセル sheet 2に検索したいデータ 手順としては、 Sheet 1のセルにデータを入力 →13桁以上でマクロが開始(されるように設定します) →Sheet 1のセルと同じ数列をSheet 2の列Aから検索 →該当のセルを含む行をSheet 3にコピー →Sheet 1の入力セルの少し下にもコピー (確認用) というのを一回一回ずつやりたいです。 できれば作業中マウスやキーボードを触りたくないので、そのために、マクロの終わわりには入力セル内の消去、マクロの始まりには確認用でコピーした行の削除もつけて下さい。 検索するSheet 2には同じデータが含まれているので、出来ればひとつずつSheet 3にコピーしたいので組み込んで頂けると幸いです。 よろしくお願いいたします。

  •  エクセルマクロでこれを簡単に出来ますか?

     部材関係の仕事に携わっている者ですが、日々変る納品リストの整理が長引き、もっと簡単にしたいと思いますが、次のことをエクセルマクロで瞬時にできるのでしょうか?私はエクセル初心者な者で詳しいことが分かりません。  1.エクセルワークシートが15部の構成のブック  2.その内、自分が必要とするのが5部のシート  3.その各シートには2005.6.○○と日付が付与され   ている  4.その5部のワークシートに記載されている部材うち、自分に関係する物だけをフィルタオプションを使って抽出、抜き出している。  5.フィルタオプションの抽出条件は別ファイルを開き、コピー、貼付けして検索している。  6.各シート検索後、抽出データーを1枚のシートにまとめるために統合機能を使い、1つのリストにしている。  7.日付により、項目が増減、変動するので多くなると1ページに印刷すると、文字が小さくなるので、目一杯縦横の余白を最小にして印刷している。  以上のような流れなのですが、元になるワークシートのシート名に日付が付与されているせいか、マクロを記録してもエラーが出ます。やはり単純なマクロの記録では1~7の操作実行は無理なのでしょうか?  手順はいつもと同じなのですが、シート日付名をそのまま記録してしまうからでしょうか?  現状1~5までの操作を各シート毎に繰り返しているので非常に時間が係ります。VBAじゃないと無理なのでしょうか?個人用マクロに保存しています。アドバイスお願いします。

  • エクセルのマクロについて教えてください

    作業が面倒だし、間違いもよく発生するので、 下の条件のマクロをどなたか教えて頂けませんか? 宜しくお願い致します。 社内のサーバーにエクセルファイル名、AからZまであるとします。 各AからZにそれぞれ同じシート名「集計」があるとします。 そのシート内にデータが色々あるとします。 ある決まったセルだけを削除するのではなく、セルの色だけで判断してデータを削除したいのです。 例えば、赤色のセルになっている部分だけを対象に 入力されている数字を消したいのです(行削除ではなく、単純にデリートです)。 上記をマクロで実行する方法はないでしょうか。 マクロ初心者なので、プログラム言語の下に簡単な説明を頂けると助かります。 どなたか詳しい方がいらっしゃいましたら、宜しくお願い致します。

  • エクセル2000のマクロについて教えてください。

    実は、今日会社で失敗したのですが、エクセルのマクロ実行をしたら、エラー で実行中断となってしまいました。 ワークシートから別のワークシートへコピー&ペーストして印刷というマクロを組みたかったのですが、エラー内容は、 Active Cell Offset(-7,-14).Range("A1:AN15")selectです。 元のワークシートのセル位置と、コピーするワークシートのセル位置は同じ場所でないといけないのでしょうか? セルは同じ数とっているはずなのですが。何回かやってみて、 へんな場所にペーストされて、印刷までは出来たこともあるのですが、何がちがうのだろー。。解らない(;;) だれか教えてください!!!

専門家に質問してみよう