• ベストアンサー

EXCEL VBAでファイル名取得

A1のセルにユーザー定義で書式設定をしたものをそのファイルの名前にしようと思ってます。 書式は「1」と入力すれば「001」と表示されるようになっています。 そのままセル+".xls"で保存しようとすると、「型がちがいます。」というエラーになり、そのセルを変数にしてvalueで表示すると、そのまま「1.xls」というファイル名になってしまします。 「001.xls」というファイル名にするにはどうしたらよいでしょうか? どなたかよろしければ、回答お願いします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

こんにちは。 Range("A1").Text のようにすれば、001 が返ります。 Sub Test1()  MsgBox Range("A1").Value  MsgBox Range("A1").Text End Sub 従って、下記のようなパスを作ってSaveAsに渡せばOKです。 (例の ThisWorkbook は一度は保存してある前提です) Sub Test2()  MsgBox ThisWorkbook.Path & "\" & Range("A1").Text & ".xls" End Sub

その他の回答 (2)

回答No.2

初めまして. ActiveWorkbook.SaveAs Filename:="C:\My Documents\" & ActiveSheet.Range("A1").Value & ".xls" これを1行で書いて下さい。実行されると思います。 1つ注意しなければならないのは、必ず保存するブックをアクティブにしてこのマクロを動作させてください。そうしないとエラーが出たり、思わぬブックがこの名前になって保存されてしまいます。 もし不都合な点等がありましたらご遠慮なくお知らせ下さい。

回答No.1

format(val(セル.value),"000") & ".xls" とフォーマットを使って編集桁数を指定したらどうでしょうか。

関連するQ&A

  • EXCEL VBA

    1月から3月までの12シートからなる複数のファイルがあります。 そのファイルを上書き保存したときに書式と値だけをコピーした「ファイル名+シート名」で別ファイルに保存をかけたいのです。 (例) 営業課月次.xlsの4月シートに入力をして、上書き保存をかけた時点で月次4月.xlsにシート名=営業課月次4月で書式と値だけ保存する。 こんな都合のよいVBAがありましたら教えていただきたいと思います。宜しくお願いします。 (VBAに関しては入門編ぐらいの知識しかありません。)

  • エクセルVBA セルの書式につい

    ユーザーフォームのテキストボックスに入力した日付(yyyy/mm/ddの形式)をA1セルに入れるとします。  Range("A1").Value = Me.txt日付 A1セルの表示形式は書式設定でユーザー定義の"d"で表示されるように設定していますが、 テキストボックスに入力した形式のまま(yyyy/mm/dd)でA1セルに表示されてしまいます。 上記のみではNGでしょうか? ちなみに、yyyy/mm/ddと入力されたA1セルを一旦編集モード([F2]キーを押した状態)にして[Enter]を押すと"d"(書式設定で指定している書式)に変わります。 参考:A1セルの日付をみて別シートの一覧からVlookup関数で値を検索したいところが、yyyy/mm/ddで表示されるためにエラーとなってしまいます) ご存知の方教えていただきたいです。

  • エクセルVBAで、PDFファイルを開きたい

    セルに入力した値のブック(xls)を開く場合、 以下となりますが、↓ Sub セルに入力したブック名のブックを開く() ブック名 = Cells(1, 2) 'B1セルの値を取り出す Workbooks.Open Filename:=ブック名 & ".xls" '指定されたブックを開く End Sub これでPDFファイルを開きたいです。 記述をどうしたらよいでしょうか。 目的はPDFファイルの検索/照会をxlsにてしたいのです。 お手数ですがお願いいたします。

  • エクセルの書式設定の「#」

    エクセル2002の書式設定についてですが、セルの書式設定の「表示形式」で「ユーザー定義」にします。そして種類のところには「#」と入れました。 セルに「999」と入力すると「999」と表示されました。 ところが「ユーザー定義」の種類のところには「#,」と入れました。 するとセルに「999」と入れても「1」と表示されます。 またセルに「9999」と入れたら「10」と表示されました。 これはどうしてでしょうか?

  • excelで0が13個貼り付け

    excel2000で 000000000000(←0が13個)とセルの書式設定、ユーザー定義で設定しているセルがあります。 このセルをコピーして、貼り付けるときの方法について相談です。 excel2000で 000000000000(←0が13個)とセルの書式設定、ユーザー定義で設定しているセルがあります。 たとえば、このセルに0と入力すれば、000000000000(←0が13個)と表示されるのですが、 このセルをコピーして、ユーザー定義が文字列のセルに貼り付けていのですが、どうしても0としか貼り付けられません。 ユーザー定義が文字列のセルにも、000000000000(←0が13個)と貼り付けられるようにするにはどうすればいいでしょうか

  • エクセル97で

    エクセルで、0104と入力すると2001/4となるようにするには、書式→セル→表示形式→日付orユーザー定義ですよね。 ここで定義しても1900/4となってしまいます。なぜでしょう??

  • EXCEL VBAのファイルオープンについて

    1列のセルそれぞれに同フォルダのファイル名が入力されていて(ファイル数は変化する)それを、一度に開くか、もしくは1つずつ開いていくかの構文で悩んでいます。ファイル数が特定されていないので、Do Untilでカウンタ変数をたててしているのですが、1つ目のファイルは開くのですが、後のファイルがエラーになってしまいます。 説明がうまくできていないかもしれませんが、もしわかりましたら、是非教えてください。

  • エクセルの書式設定

    エクセルのセルの表示が#VALUE!になるのでたどっていったところ、あるセルの書式設定に問題があるようなのです。 そこで、書式を数値に直したいのですが、通常、「数値」の場合には、表示されないはずなのですが、今回、表示されるサンプルに、かつてユーザー定義で入れたと思われる"歳"が表示されたままで、どうにもならず、これが原因と考えられます。 なぜこのようなことが生じるのか、また、どうすれば解消できるのか、 ご存知の方、教えてください。

  • エクセルVBAで、数字をテキストファイルに書き出したい

    print #1,cells(1,1) のようにセルの値をテキストファイルに書き出しています。 セルには、6が入力されていて、表示は6.00 にしてありますが、書き出すと当然6になってしまいます。セルの書式を、文字列にすればいいのでしょうが、入力や計算の都合で、数値のままにしたいのです。見えている通りにテキストに書き出すには、どのようにしたら良いですか? よろしくお願いいたします。

  • vba ワークシートを変数を用いて開くには

    初歩的な質問ですが、 ワークシートの書式が新しくなったことで、書き換えをすることになりました。 現在のエクセルファイルから、新しいエクセルファイルへ、セルの値を参照しながら VBAにて作業をしたいのですが、 Sub changesheet() Dim iname As String Dim wbname As String iname = InputBox("ブック名を入力", "対象ブックを入力") wbname = "シート2012(" & iname & ").xls" ActiveSheet.Range("P4").Value = Workbooks(wbname).Worksheets("Sheet1").Range("P4").Value End Sub この記載で実行すると、インデックスが有効範囲にありません とエラーになってしまいます。 変数(inputbox)を用いたセルの参照はどのように記述すればよろしいでしょうか? よろしくお願いします。

専門家に質問してみよう