• ベストアンサー

Excelで任意のセルのデータをファイル名に追加して上書き保存するマクロ

Excelのブックが300個ほどあります。 現在アルファベット4文字のファイル名がついています。 このブックを1つずつ開き、任意のセル(ブックごとに異なる)を選択後ホットキーでマクロを起動し選択したセルの内容をもともとのファイル名に追加して名前を付けて保存したいのです。 例) 元のファイル名:bgf.xls 選んだセル:A4 A4の内容:あいうえお 新しく保存するファイル名:あいうえおbgf.xls 環境はwin2k、Excel2kです よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 ホットキーで? あまり、きちんとしたチェックをしたわけではありませんが、対話型で作るなら、以下のようになりますね。 Sub RenameFiles()   Dim FileName As Variant   Dim BaseFName As String   Dim myPathName As String   Dim NewFileName As String   Dim fn As Variant   Dim rng As Variant     FileName = Application.GetOpenFilename("Excel(*.xls),*.xls", MultiSelect:=True)   If VarType(FileName) = vbBoolean Then Exit Sub   For Each fn In FileName    On Error Resume Next    Set rng = Application.InputBox(fn & vbCrLf & _    "の名前の変更をします。" & vbCrLf & "セルを選択してください。", "ファイル名変更", "$A$4", Type:=8)    On Error GoTo 0    If VarType(rng) = vbEmpty Or rng Is Nothing Then Exit Sub        If IsEmpty(rng.Value) Then      MsgBox "セルが空です。", vbCritical      Else      BaseFName = Mid$(fn, InStrRev(fn, "\") + 1)      myPathName = Mid$(fn, 1, InStrRev(fn, "\"))      NewFileName = myPathName & rng.Value & BaseFName      If Dir(NewFileName) = "" Then       On Error GoTo ErrHandler       If MsgBox(NewFileName & vbCrLf & " に変更してよろしいですか?", vbOKCancel) = vbOK Then         Name fn As NewFileName         MsgBox "変更しました。", vbInformation       End If       Else       MsgBox "同名ファイルがあります。", vbCritical      End If    End If    Set rng = Nothing    Next fn    Exit Sub ErrHandler:    MsgBox Err.Number & ":" & Err.Description    Resume Next End Sub

muushuke
質問者

お礼

ありがとうございます。 御礼が遅くなりすみません。 教えていただいたマクロを少し加工して期待した動作するようになりました。

その他の回答 (1)

noname#15459
noname#15459
回答No.1

SendKeys Sheets("Sheet1").Range("A4").Value Application.Dialogs(xlDialogSaveAs).Show

muushuke
質問者

お礼

ありがとうございます。 ちょっと期待していたものとはちがいましたが今後の参考にさせていただきます。

関連するQ&A

  • エクセルマクロで任意のファイル名をつけて保存したい

     エクセルVBAについての質問です。  エクセルのマクロで、Aというファイルを開いて、そのうち必要なワークシートだけを抽出し、新しいブックに移動し、その新しいブックを新しいブックのsheet1のセルC2の文字列をファイル名として保存するようなマクロをくみたいと思っています。  ファイルを開いて必要なワークシートだけを抽出し、新しいブックに移動するところまではできましたが、新しいブックのセルC2の文字列をファイル名として保存することができません。FNを変数として宣言して、C2の文字列を代入し、FNをファイル名として保存しようとすると、ファイルにFNという名前が付いてしまいます。どうすれば、C2の文字列をファイル名として保存できるのでしょうか。なお、保存するフォルダはc:\変換ファイル\6月です。どなたか教えてください。よろしくお願いします。

  • 指定したセルでファイル名を保存するマクロについて

    マクロ初心者です。 A1セルの文字をファイル名にして保存する方法を知りましたが、A1セルとB1セルの文字をファイル名にして保存したい場合、どのようにすれば良いか分かりません。 A1セルに企業コード、B1セルに企業名です。 ファイル名を「請求書(13579いろは株式会社様)」としたいのです。 実際のマクロを一部抜粋しますが、下記の場合はファイル名は 「請求書(13579様).xls」となります。 Dim WS As Worksheet Dim fname As String fname = "C:\保存先\" & ("請求書(") & WS.Range("a1").Value & ("様)") & ".xls" どなたか教えて下さい。 どうぞよろしくお願い致します。

  • excelマクロ、任意セルの値で名前を付けて任意のフォルダに保存

    マクロの初心者ですが、どうか教えてください。 テンプレートブックを名前を付けて保存するマクロで 苦戦しております。  ・ダイアログを必ず開く  ・その時の保存先はz:\あああ  ・ブック名はアクティブシートの任意のセルA1 --------------------------------------------- Application.Dialogs(xlDialogSaveAs).Show _ Arg1:=Range("A1").Value ここまではたどり着けたのですが、ダイアログが 当初のテンプレートブックの保存場所が開いてしまいます。 どうぞよろしくお願いいたします。

  • エクセルのファイル名を任意のセルの内容にしたい

    windows2000、Excel2000の環境です。 ファイル名が数字7桁のブックが約1000個あります。 このブックのファイル名をブックに含まれるセル(最大2つ)の文字列+元のファイル名の数字7桁にしたいのです。 マクロやVBで一括で変換する方法はありませんでしょうか? セルの指定は特定の個所ではなく、ブックごとに違いますので、ブックを1つずつ開いて指定する形になります。 よろしくお願いします。

  • EXCELで複数ファイルのセル抽出マクロ

    EXCELで複数ファイルのセル抽出マクロ いつもお世話になっております。 首題の件ですが、複数のEXCELファイル約100個があるフォルダに入っています。 フォーマットは統一されていますが、記載してあることは別です。 特定のセルの内容を抽出し、別のEXCELブックに保存したいと考えております。 例) パス-D:\集計\ ファイル名-統一されていません シート名-アンケート(統一している) 抽出したいセル-A1:A10とC10:C20(結合されているセルもあります) できれば保存するEXCELブックに抽出したA1の全集計結果をA1に、 抽出したC10の全集計結果をC10に保存したいのです。(1ファイルずつ改行を入れて) マクロを検索して調べてみたのですが、自分の環境に合わせてみるとうまく動かなく、 (単に私の勉強不足ですが・・・)お手上げ状態です。 皆様、宜しくお願いします。 また、厚かましく下記にも別件で質問をしております。 お力添え頂ければ幸いです。 http://okwave.jp/qa/q6170791.html

  • エクセルで新たなファイルを開くマクロ

    【質問:1】 ○○○.xlsというファイル上で、 ボタンを押すと、 ×××.xlsというファイルを ”マクロを有効にする”で開いて、 (どちらもマイドキュメントに保存してあります) かつ、 ○○○からの自動リンクを反映させ更新し、 (通常ですとダイヤルログボックスがでますよね) ×××のシート1のA1セルをアクティブにする というマクロはどのように書けばいいでしょうか? 【質問:2】 ×××.xlsにおいて、 ボタンを押すと、 ×××を”保存せずに閉じ”て、 かつ○○○.xls(既に開いてあります)の シート1のA1セルをアクティブにする というマクロはどのようにかけばいいでしょうか?  よろしくご教示のほどお願い致します。

  • ファイルの保存先を任意にしたい(マクロ)

     エクセルのマクロです。  マクロを実行した時に、保存先とファイル名は任意に入力して(その部分だけは、マクロ実行者が入力して)、その後もマクロを実行させたいのですがどうすれば良いのでしょうか? たとえば、 ActiveCell.FormulaR1C1 = "1" Range("B1").Select ChDir "C:\Documents and Settings\a\デスクトップ" ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\a\デスクトップ\ Book1.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Range("A2").Select ActiveCell.FormulaR1C1 = "2" Range("B2").Select ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\a\デスクトップ\ Book2.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Range("A3").Select ActiveCell.FormulaR1C1 = "3" Range("B3").Select ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\a\デスクトップ\ Book3.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Range("A4").Select ActiveCell.FormulaR1C1 = "4" Range("B4").Select  上記の場合は、保存先もファイル名もこちらが指定していますが、その部分だけは、マクロの実行者に任意指定及び入力させたいのです。  マクロ初心者なので、よろしくお願いします。

  • マクロExcel2003日付を付けてファイルを保存

    Excel2003でマクロを利用して、日付を付けた形でファイルを保存するようにしたいです。 条件としては、 (1)ファイルをz:\に「【ここに日付を八桁で保存】File1.xls」とする 例えば、20111127File1.xls (2)上書きする場合も、確認をせずに強制的に保存 (3)保存が終わったら、強制的にExcel2003を終了する という具合に書きたいです。 マクロの保存でやってみてわかっている所まで書きました。 Sub SaveEnd() ActiveWorkbook.SaveAs Filename:="Z:\【????】file1.xls", FileFormat:=xlNormal   【上書き保存で、確認をしない】   【Excel2003の強制終了】 End Sub どのように調べれば良いかも含めて、ご指導をいただければ幸いです。

  • エクセルでファイル名を任意のセルに入力するマクロを組むには?

    エクセルにて、マクロを実行すると、 ダイアログボックスが出てきて、ファイルを 選ぶと、そのファイル名が任意のセル (たとえばB10とか)に入力されるような マクロを組みたいのですが、うまくいきません。 しかも、そのファイル名についている拡張子なしで 入力されるようにしたいです。 どなたかご教授ください。

  • 起動するとファイル名がbook11となり、上書きできない

    Excel2007を使用しています。 excelを起動すると、普通はファイル名book1が開きますが、 いつの間にか変わっていて、ファイル名book11が開くようになりました。 そして、このBook11を編集して、名前をつけて保存して(仮にそれをA.xlsとします) A.xlsを再編集して上書き保存しようとするとできません。 名前をつけて保存の画面がでてきて、いちいち保存ボタンを押さないと保存できません。 以前のようにBook1が開くように設定を直したいのですが、どうすれば良いのでしょうか?

専門家に質問してみよう