• ベストアンサー

エクセルVBAでセルを名前にしてフォルダを生成

こんばんは。 セルA2 B2 C2にフォルダの名前にしたい文字や数字があり、 それをフォルダ名にすることをエクセルでしたいのですが コードを教えていただけないでしょうか? できたフォルダはデスクトップにあるようにしたいです。 よろしくお願いします。

  • newme
  • お礼率54% (218/400)

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

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

Sub try() Dim myPath As String Dim myDir As String myPath = CreateObject("WScript.Shell").SpecialFolders("Desktop") myDir = myPath & "\" & "abc" 'デスクトップに"abc"と言うフォルダを作る MkDir (myDir) End Sub >セルA2 B2 C2にフォルダの名前にしたい文字や数字があり、 >それをフォルダ名にすることをエクセルでしたいのですが 各セルの値をどうしたいのか不明です。

newme
質問者

お礼

n-junさんありがとうございました。 ばっちりできました。

その他の回答 (2)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

#1と似たようなものですが... デスクトップのフォルダー取得 http://officetanaka.net/excel/vba/tips/tips107.htm フォルダーの新規作成 http://officetanaka.net/excel/vba/filesystemobject/filesystemobject.htm#CreateFolder Sub test() Dim desktopPath As String, WSH As Variant Dim FSO Set WSH = CreateObject("WScript.Shell") desktopPath = WSH.SpecialFolders("Desktop") & "\" Set WSH = Nothing Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CreateFolder desktopPath & Range("a1").Value Set FSO = Nothing End Sub

newme
質問者

お礼

mitarashiさんありがとうございました。 参考サイトのご紹介もありがたいです。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

こんな感じ? デスクトップのパスはマシン環境で違うので、確認の上設定してください。 Sub test() Dim i As Integer, f As String, p As String, c() As String Const cel = "A2 B2 C2" '/←対象とするセル名を列挙 Const pt = "C:\Documents and Settings\デスクトップ" '/←デスクトップのパスを記入 c = Split(cel) p = pt & "\" For i = LBound(c) To UBound(c)  f = ActiveSheet.Range(c(i)).Text  If (Dir(p & f, vbDirectory) = "") Then MkDir p & f Next i End Sub

newme
質問者

お礼

fujillinさんありがとうございました。 いろいろなやり方があるのに驚きました。

関連するQ&A

  • ExcelのVBAであるフォルダの中にあるファイルに自動的に名前を付けたい

    お世話になっています ExcelのVBAで、あるフォルダの中にあるファイルに自動的に名前を付けたいのですが、どうしてもうまくいきません 「HOZON」(C:\Documents and Settings\TANAKA\デスクトップ\HOZON)というフォルダの中に「A」「B」「C」という3つのファイルがあります その中にはそれぞれ 「Aファイル」→「A-S1」、「A-S2」、「A-S3」(3枚のシート) 「Bファイル」→「B-S1」、「B-S2」(2枚のシート) 「Cファイル」→「C-S1」(1枚のシート) というシートがあります そして、それぞれのシートの「A1」のセルには 「A-S1」→100 「A-S2」→101 「A-S3」→102 「B-S1」→200 「B-S2」→201 「C-S1」→300 という数字が入っています やりたいことは VBAでそれぞれのファイルの名前を 「【100-102】A」 「【200-201】B」 「【300】C」 と変えたいのです つまり、現在の名前に、シートに書かれている一番小さい数字から大きい数字までを"-"でつないだ文字を付加して名前を付けなおしたいのです ThisWorkbook.SaveAs Filename:= で名前を付けると思うのですが、書くファイルの名前の取得の仕方とシートに書いてあるセルからの数字と合わせてリネームする方法がどうしてもわかりません すいませんが、ファイルの数が膨大なので、教えていただけると大変助かります 宜しくお願いします

  • Excel VBA で フォルダ名の一部を一括変更(セルの値を取得して変更)

    こんにちは。例を挙げます。よろしくお願いします。 まず、"ABC" という名前のフォルダがあるとします。 この"ABC"の中に、"00_あいうえお"というフォルダがあるとします。 ほかにも同じようなフォルダ:"10_かきくけこさ123"、"01_しす45せそたち"、"67_つてと"があります。これらのフォルダ名には特徴があり、2桁の半角数字に始まり、半角アンダーバー、文字列という並びになっています。 さらに同じフォルダ"ABC"に、EXCELファイル"なにぬ89.xls"もあるとしましょう。 したがって今、フォルダ"ABC"には、4つのフォルダと1つのEXCELファイルがあります。 "なにぬ89.xls"の、セルA1には"1"、A6には"2"、A11,A16は"34","57"と数値が入っているとします。また、セルB3には"あいう"、B8には"かき"、B13には"しす4"、B18には"つてと"という文字列が入っています。 B3,B8,B13,B18の文字列は、必ず同じフォルダ"ABC"内のフォルダ名に含まれています。 マクロで行いたい内容:フォルダ名の左端の2桁の数字を置換する その詳細: "なにぬ89.xls"のセルB3の文字列"あいう"を含むフォルダ"00_あいうえお"のフォルダ名の2桁の数字"00"のうち、右の"0"だけ、セルA1の数値"1"に置換したいのです。("00_あいうえお"→"01_あいうえお"へフォルダ名置換) 同じように、セルB8の"かき"を含むフォルダ"10_かきくけこさ123"の名前も、セルA5の数値"2"をもとに置換したいのですが、今度は2桁の数字が"02"になってほしいのです。("10_かきくけこさ123"→"02_かきくけこさ123"へフォルダ名置換) 以上のことをふまえますと、 フォルダ名"01_しす45せそたち" は "34_しす45せそたち" "67_つてと" は "57_つてと" に変換したいということがお分かりいただけますでしょうか。 4つの例しかあげませんでしたが、実際の"なにぬ89.xls"にはもっとたくさんのデータが、5行おきに並んでいます。他のセルには無関係の文字列や空白などが入っています。 セルの値でフォルダ名を部分一致検索し、セルの値でそのフォルダ名を置換する、ということができるでしょうか? 説明が長くなりましたが、ご回答、お待ちしております。よろしくお願いいたします。

  • エクセルでセル内容でフォルダを作って保存

    今はマクロボタンをクリックすると特定のセルの内容で指定したフォルダにPDFで保存されるようにして使っているのですがその前段取りが結構手間がかかって間違いも多いので改良したいのです。 やりたいことは、 決まった名前(見積書)のシート上のセルの内容(顧客名)で、例えばデスクトップの決まったフォルダ(見積書)の中に、A1セルの内容(顧客名)でフォルダを作成し、セルB2+C3の内容(日付+見積No)をファイル名にPDFで保存する、ということは出来るのでしょうか? 更にA1(顧客名)が同じなら既存の顧客フォルダにB2+C3で保存したいのですが。。。 かなり贅沢な要求だと思いますが、もし可能であればよろしくお願いします。

  • 【VBA】フォルダ内の複数Excelのセルをコピー

    お世話になります。 初級者ですが、Excel 2002のVBAについてご質問をさせて頂きます。 【概要】  あるフォルダ内にある複数のExcelファイルの、特定のセルを  1つのExcelファイルに集約します。 【詳細】  1.あるフォルダ内に複数のExcelファイルがあります。Excelファイルの数は、その日によって   ことなります。  2.選択画面から、この複数のExcelファイルを選択し、選択したExcelファイルの   それぞれの「A1セル」「B1セル」「C1セル」を、「1つのExcelファイル」に張り付けます。  3.「貼り付け」→「次の列へ移動」→「貼り付け」→「次の列へ移動」というサイクルを、   選択したExcelファイルの数だけ繰り返します。  4.集約したExcelファイルのイメージは以下のとおりです。        A列 B列 C列 D列 E列 F列 G列 H列  。。。。   1行目 A1 A1 A1 A1 A1 A1 A1 A1 。。。。   2行目 B1 B1 B1 B1 B1 B1 B1 B1 。。。。   3行目 C1 C1 C1 C1 C1 C1 C1 C1 。。。。 教えて!gooの回答で、「複数のシートを、1つのExcelファイルに集約する」ものがあったので、 それを参考にしようとしましたが、僕の実力ではできませんでした。 ご助言を頂けると非常に助かります。よろしくお願いします。

  • VBAでファイルを「名前を変えて」コピー

    エクセルVBAを使い、ネットワークドライブ上にあるフォルダをローカルに、出来れば名前を変更してコピーをしたいのですが可能でしょうか? たとえばネットワークを Yドライブ。フォルダを A とします。 ローカルのデスクトップの Bフォルダ 内にコピーされたフォルダの名前を任意の名前、具体的には 20081106 などに変えて保存したいのです。 この「任意の名前」は出来れば自動で作業日の日付、出来なければエクセル上のセルにある数字(あるいは文字列)に置き換えたいのです。 作業日ごとにフォルダが出来上がっていく、という事がしたいのですがどのような構文になりますか? 最終的にはボタンに構文を宛がいたいのですが。。。

  • Excel VBA   %の入ったセル

    困りました、、、 VBAを使って A×30%+15000 これが入ったセルB2と たとえば250000が入ったセルB2を掛け算したいのですが (B2の数字は固定ではなくいろいろな数字が入ります) 文字列が入っていることにより うまくいきません 今は仕方なくMid関数で数字を抜き出して使っているのですが なにかよい方法はないでしょうか よろしくお願いします<m(__)m>

  • デスクトップの所定のフォルダにセルをファイル名で

    先日ここでデスクトップの決まったフォルダ(見積書)の中に、セルA1名のフォルダを作成し、そのフォルダ内にB2+C3をファイル名に保存したい、とし質問したら下記のたった6行で出来ることご回答いただきました。(ビックリ!) このコードは個々のデスクトップのファイルパスが不要なので、どのPCでもこのままC&Pで動くので非常に有用で早速使いたいのですが、新たな要求として、親フォルダの中に子フォルダ(フォルダA1)をつくらずに、デスクトップ上の決まった名前(見積書)のフォルダに直接B2+C3のファイル名で保存したく。 下記のご回答頂いたコードを試行錯誤してみたのですがやはりだめでした。 Sub Macro1()   ChDrive "C:"   ChDir CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\見積書"   On Error Resume Next   MkDir [A1]   On Error GoTo 0   ActiveSheet.ExportAsFixedFormat xlTypePDF, [A1] & "\" & [B2] & [C3] End Sub

  • EXCELのセルにある計算式だけを消したい。

     例えば、C1セルに =A1+B1 の計算式があるとします。 この時、A1セルとB1セルの数字を消しても、C1セルにはそのまま数字を残すにはどうすればいいのですか? C1セルの計算式を扱うとおかしくなるし、A1・B1の数字を消したらC1まで消えてしまいます。 手入力になるとデータが多すぎて・・・ EXCELは2000・2002です。 

  • エクセルで複数のセルにセルにある数字を1つのセルに

    こんばんは、エクセルに関してあまり詳しくないので教えて頂けませんか? A1のセルに1 B1のセルに3 C1のセルに5と、数字が1~8まで並んでいます。 その数字を、ほかの一つのセルに、135~と8桁表示するにはどうしたらよいでしょうか? その数字はrank関数で入力されたものです。 詳しい方よろしくお願いいたいます!

  • エクセルの名前の定義について。

    ご覧いただきありがとうございます。 エクセルの名前の定義についての質問です。 (1)【sheet1】 A2:A6に『aa』、 B2:B10に『bb』、 C2:C6に『cc』という名前を付けたとします。 ちなみにそれぞれのセルには文字列が入力されています。 (名前の定義の《範囲》はブックではなく、sheet1) (2)【sheet2】 B2:D6に『aa』、 B7:D15に『bb』、 B16:D20に『cc』と、sheet1と同じ名前を付けました。 それぞれB列・C列・D列には数字が入力されています。 (名前の定義の《範囲》はブックではなく、sheet2) ちなみにA列には、sheet1に入力されている文字列と同じものが入力されています。 A2:A6にはsheet1で『aa』と名前をつけた範囲と同じ文字列。 A7:A15にはsheet1の『bb』と同じ文字列。 A16:A20には『cc』と同じ文字列です。 ここからが本題です! (3)【sheet3】 A2に何らかしら関数を入れて、【sheet1】で作った名前(aaやbbやcc)が1つ表示されるようにしたとします。 そしてB2には、A2で表示された名前の中の文字列が1つ表示されるようにします。 (例えばA2に『aa』と表示されたら、B2には◯◯) 更にC2には、B2に表示された◯◯という文字列を使って、【sheet2】の名前『aa』の中のB列と、A列にある◯◯とが交差するセルに入力されている数字(図でいう(5))を表示させる関数を入力したいのです。(INDEXやINDIRECT、MATCH関数など…) 他に例えば、A2に『bb』(sheet1の名前)、B2に★★と表示されたら、C2には【sheet2】の名前『bb』の中のB列と、A列にある★★が交差するセルに入力されている数字を表示させたいです。 同じように、今度は、D2には、B2に表示された◯◯という文字列を使って、【sheet2】の名前『aa』のC列と、A列にある◯◯の交差するセルに入力されている数字を表示させたいです。 長々とややこしくてすみません… 説明分かりますでしょうか?? つまりは【sheet3】のC2・D2・E2に入力する関数が知りたいです。 自分なりに関数を入力してみたのですが、A2で表示された名前がsheet1での名前なので、sheet2の情報を引き出す事が出来ません。 わざわざsheet1とsheet2でシートを分けたのは、同じシート内で同じ名前が付けられないと思ったからです! どなたか分かりましたら教えて下さい! どうぞよろしくお願い致します。 ※ちなみに、貼付した図の『・』は以下省略の意味で使ってます。

専門家に質問してみよう