はじめましてynakaと言います。

現在、VBAを使用して、Excel上のセルを参照して、それを使い
あるファイルの名前を変えて保存しようと考えているのですが、
どうもうまくいきません。

名前を変える所はうまくいったんですが、セルを参照する所がどうも・・・・
どなたかアドバイス下さい。
お願いします。

A 回答 (8件)

keeさま、ご指摘ありがとうございます。


補足のソースをそのまま利用してしまいましたm(._.)m
    • good
    • 0

たびたびどーもkeeです。



DestinationFile = "C:\aa1" & fname.Value & ".txt"

の fname.Value て正しかったっけ?
string型はオブジェクトじゃないから、違うような・・。

正しくは
DestinationFile = "C:\aa1" & fname & ".txt"
かもね
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/03/05 13:41

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のセレクトの所がピリオドで無くカンマになっています。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/03/05 13:38

マスターを残してと言うことですが、ファイル名を指定して保存と同様の動作をしますので、問題ないと思います。


また、マクロをどうやって実行するのかは分からないのですが、シートがアクティブになっていない場合は、keeさんがご指摘の用にbook名から指定する必要が有ります。

もし、ファイル名が重複する場合は、ファイル名を更するか聞いてきますので大丈夫でしょう。

この回答への補足

Dim fname As String
Sheets("sheet1"),Select
fname = Range("B2").Value
FileCopy "C:\aa1.txt"),
"C:\aa1(fname.Value).txt")

と、Excel上の"B2"を参照し、違う種類のファイルの名前を変えようと
考えているのですが、うまくいきません。
変数の定義の仕方がおかしいのか、変数の使い方がおかしいのか、
それとも他の何か?
無限ループにはまってしましました・・・・・

補足日時:2001/03/02 21:21
    • good
    • 0

セルを参照するためにはオブジェクトをキチンと指定しないとうまくいかないようなことがあります。



下のようにシート名もしてみてください。

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
    • good
    • 0

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

この回答への補足

助言、ありがとうございます。

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

補足日時:2001/03/02 13:44
    • good
    • 0

具体的にセル内データをどの用に利用するのか補足願えませんか?


行う処理を細かく文章でお願いします。
内容によっては答えられると思います。

この回答への補足

セルにデータの情報を書きます。
(例)データ番号を”8851”でしたら、セルに”8851”と入力。
そのセルを参照して、保存します。
「8851,xls」と保存したいです。

変数を宣言して、その変数をセルの情報として扱おうとしたのですが
失敗しました。

助言、お願いします。

補足日時:2001/03/02 11:52
    • good
    • 0

実際にどのようなプログラムを書かれたのかが分からないので回答ではないのですが。


セルの値を参照するのはWorksheetオブジェクトのRangeプロパティーを使用します。
以下のコードはアクティブなシートのA1の値をメッセージボックスに表示します。

Dim Sheet As Worksheet
Set Sheet = ThisWorkbook.ActiveSheet
MsgBox Sheet.Range("A1")
    • good
    • 0

このQ&Aに関連する最新のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ