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

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

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

A 回答 (8件)

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


また、マクロをどうやって実行するのかは分からないのですが、シートがアクティブになっていない場合は、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

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

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



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

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が見つからない時は、教えて!gooで質問しましょう!

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

このQ&Aと関連する良く見られている質問

Qwordの表のセル参照

wordで作った表のセル参照は出来ますか?式を入れるのではなく、「=○○」という形で参照したいのですが。

Aベストアンサー

ワードの表のあるセル(例えばB3)をアクチブでして
罫線-計算式-計算式欄に =A1 -OKと入れてみました
。その場合A1の数字が入りました。
しかしA1セル(勿論ワードの表)の値を変えると
(1)B3を範囲指定して
(2)F9キーを押すと、A1の値がコピーされました。
(3)A1が文字列の場合はだめでした。
(2)は#1でもご指摘の通りです。
これで使い物になると言えるかのかどうか。

QEXCELでワードアートからセル参照

EXCELでワードアートを沢山使っています。ワードアートでなければ、文字幅を自由に扱えないからそうしているのですが、内容を変更する場合、一つ一つワードアートを指定してはテキストの編集を行う必要があり、大変手間が掛かっています。これをワードアートの中からセル参照を使えれば作業が楽になるのにと思っているのですが、そんなことは可能でしょうか?
よろしくお願いします。

Aベストアンサー

ワードアートを右クリック、"ワードアートの書式設定"で、"Web"タブの"代わりに表示する文字列"をセル参照に利用する方法です。

セルA1を参照する場合、上記の文字列を、A1あるいはa1と記入します。

その後下のマクロtestを実行してください。表示されているワークシート上のワードアート全てに実行されます。
各々のワードアートの"代わりに表示する文字列"が、セル参照と判断されない場合には、そのワードアートは無視します。

Sub test()
Dim myShp As Shape
For Each myShp In ActiveSheet.Shapes
If IsOk(myShp) = True Then
myShp.TextEffect.Text = Range(myShp.AlternativeText).Text
End If
Next
End Sub
Function IsOk(ob As Object) As Boolean
Dim s As String
On Error GoTo p:
s = Range(ob.AlternativeText).Address
s = ob.TextEffect.Text
IsOk = True
Exit Function
p: IsOk = False
End Function

参照先のセルが空白の場合、ワードアートの文字列は消えず、何も変化が起こらないようです。

ワードアートを右クリック、"ワードアートの書式設定"で、"Web"タブの"代わりに表示する文字列"をセル参照に利用する方法です。

セルA1を参照する場合、上記の文字列を、A1あるいはa1と記入します。

その後下のマクロtestを実行してください。表示されているワークシート上のワードアート全てに実行されます。
各々のワードアートの"代わりに表示する文字列"が、セル参照と判断されない場合には、そのワードアートは無視します。

Sub test()
Dim myShp As Shape
For Each myShp In ActiveSh...続きを読む

QEXCEL セルに配置した図形ごと参照

 Sheet1のA1にとある図形を配置したとします。それをSheet2のB3に図形も一緒に参照することはできないでしょうか?
単純に =Sheet1!A1 としたら 0 と返ってきました。(^^;

Aベストアンサー

『=Sheet1!A1』ではセルの値は持ってこれても、図形は表示できないでしょう。

ワークシート関数や算式は・・・思い浮かびません。
何かある?


質問の意味(目的)を、Sheet2にSheet1の図形を貼り付け、Sheet1の図形の変更が、貼り付けたSheet2の図形に反映することなら
Sheet1の図形を含むセル範囲をコピーし、Sheet2で、Shift+編集で図のリンク貼り付けを実行すればSheet1とSheet2の図形は同じものになり、『=Sheet1!A1』と同じ意味合いと考えられるかもしれません。

ご参考に。

Qマクロで別ブックのセルを参照して判定させたいです

まず二つのブックがあって仮にAブック、Bブックとします。

Aブックでマクロを作成していて、二つのブックには商品番号が入っているので一致するのものがあるかを調べます。
二つの商品番号が一致したら、Bブックの商品番号の列(A列)の並びにあるコード(D列)が正しい数字(0 or 1)かどうかを判定します。

このマクロが上手く組めなくて困っています。
どなたかわかる方教えてください。お願いします。

Aベストアンサー

こんばんは。

マクロは、どんな組み立てをしているのですか?
たとえば、お話だけでしたら、関数のCountIf でも、間に合うような気がするのです。
わざわざ、マクロにするためには、他にもいろいろ条件があってしているのではないでしょうか?そうでないと、マクロの意味がなくなってしまうようにも思えます。

単純にマクロにするなら、 WorksheetFunction.CountIf で、戻り値だけを拾えばよいように思います。

Qセルに貼られている画像参照先ディレクトリを知りたい

OFFICE系表計算ソフトでセルに貼られている画像の参照先ディレクトリを知りたいのですが
取得可能なものなのでしょうか?

Aベストアンサー

OFFICE系表計算ソフト⇒EXCELかな?

通常EXCELのブックに貼り付けられた画像はそれ自体がEXCELのブック内にデーターが保存されますので、その画像がもともと何処にあったかの情報は残りません


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

おすすめ情報