• ベストアンサー

セルを参照して、保存

はじめましてynakaと言います。 現在、VBAを使用して、Excel上のセルを参照して、それを使い あるファイルの名前を変えて保存しようと考えているのですが、 どうもうまくいきません。 名前を変える所はうまくいったんですが、セルを参照する所がどうも・・・・ どなたかアドバイス下さい。 お願いします。

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

  • ベストアンサー
  • madman
  • ベストアンサー率24% (612/2465)
回答No.5

マスターを残してと言うことですが、ファイル名を指定して保存と同様の動作をしますので、問題ないと思います。 また、マクロをどうやって実行するのかは分からないのですが、シートがアクティブになっていない場合は、keeさんがご指摘の用にbook名から指定する必要が有ります。 もし、ファイル名が重複する場合は、ファイル名を更するか聞いてきますので大丈夫でしょう。

ynaka
質問者

補足

Dim fname As String Sheets("sheet1"),Select fname = Range("B2").Value FileCopy "C:\aa1.txt"), "C:\aa1(fname.Value).txt") と、Excel上の"B2"を参照し、違う種類のファイルの名前を変えようと 考えているのですが、うまくいきません。 変数の定義の仕方がおかしいのか、変数の使い方がおかしいのか、 それとも他の何か? 無限ループにはまってしましました・・・・・

すると、全ての回答が全文表示されます。

その他の回答 (7)

  • madman
  • ベストアンサー率24% (612/2465)
回答No.8

keeさま、ご指摘ありがとうございます。 補足のソースをそのまま利用してしまいましたm(._.)m

すると、全ての回答が全文表示されます。
  • kee
  • ベストアンサー率13% (63/457)
回答No.7

たびたびどーもkeeです。 DestinationFile = "C:\aa1" & fname.Value & ".txt" の fname.Value て正しかったっけ? string型はオブジェクトじゃないから、違うような・・。 正しくは DestinationFile = "C:\aa1" & fname & ".txt" かもね

ynaka
質問者

お礼

keeさん、ありがとうございました。 また、無限ループに陥る所でした。 何度やっても、注意がでてきて、????状態でした。 助言どおりにしてみたら、OKでした。

すると、全ての回答が全文表示されます。
  • madman
  • ベストアンサー率24% (612/2465)
回答No.6

fileをコピーですが、補足の動作を行う場合ですと セルのB2の内容が123と入っていた場合 aa1.txtをaa1(123).txtにする場合 Dim fname As String Dim DestinationFile As String Sheets("sheet1"),Select fname = Range("B2").Value DestinationFile = "C:\aa1(" & fname.Value & ").txt" FileCopy "C:\aa1.txt", DestinationFile aa1.txtをaa1123.txtにする場合 Dim fname As String Dim DestinationFile As String Sheets("sheet1"),Select fname = Range("B2").Value DestinationFile = "C:\aa1" & fname.Value & ".txt" FileCopy "C:\aa1.txt", DestinationFile という風に、実値と変数を組み合わせる場合は「&」もしくは「+」で加工しないと行けません。また、補足のロジックには「)」が2個ほど余分に入っています。 また、Sheetsのセレクトの所がピリオドで無くカンマになっています。

ynaka
質問者

お礼

いろいろありがとうございました。 お陰で、なんとかできました。

すると、全ての回答が全文表示されます。
  • kee
  • ベストアンサー率13% (63/457)
回答No.4

セルを参照するためにはオブジェクトをキチンと指定しないとうまくいかないようなことがあります。 下のようにシート名もしてみてください。 ppath = "c:\log\" pfile = Workbooks("book1.xls").Worksheets("Sheet1").Cells(2, 2).FormulaR1C1 ptail = ".xls" Workbooks("book2.xls").SaveAs Filename:=ppath & pfile & ptail, FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False Workbooks("Book2.xls").Close

すると、全ての回答が全文表示されます。
  • madman
  • ベストアンサー率24% (612/2465)
回答No.3

VBAを下記のように記述してみてください。 Rangeの括弧内は利用するセルに書き換えてください。 "c:\"も任意のディレクトリに書き換えてください。 fnameを宣言し、セルデータからフルパスのファイル名を作成、そのファイル名で保存。 Dim fname As String fname = "c:\" & Range("a1").Value & ".xls" ActiveWorkbook.SaveAs Filename:=fname, FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False

ynaka
質問者

補足

助言、ありがとうございます。 書きもらしていたのですが、 マスターは残しつつ、Copyfileを使って、コピーを作り、 コピーしたものだけ、名前を変えようと考えています。 その場合は、上記のでも対応可能でしょうか?

すると、全ての回答が全文表示されます。
  • madman
  • ベストアンサー率24% (612/2465)
回答No.2

具体的にセル内データをどの用に利用するのか補足願えませんか? 行う処理を細かく文章でお願いします。 内容によっては答えられると思います。

ynaka
質問者

補足

セルにデータの情報を書きます。 (例)データ番号を”8851”でしたら、セルに”8851”と入力。 そのセルを参照して、保存します。 「8851,xls」と保存したいです。 変数を宣言して、その変数をセルの情報として扱おうとしたのですが 失敗しました。 助言、お願いします。

すると、全ての回答が全文表示されます。
  • ykymtkt
  • ベストアンサー率51% (14/27)
回答No.1

実際にどのようなプログラムを書かれたのかが分からないので回答ではないのですが。 セルの値を参照するのはWorksheetオブジェクトのRangeプロパティーを使用します。 以下のコードはアクティブなシートのA1の値をメッセージボックスに表示します。 Dim Sheet As Worksheet Set Sheet = ThisWorkbook.ActiveSheet MsgBox Sheet.Range("A1")

すると、全ての回答が全文表示されます。

関連するQ&A