• ベストアンサー

セルを参照して、保存

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

  • ynaka
  • お礼率16% (3/18)

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

  • ベストアンサー
  • 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

  • エクセルのセル参照で、セルにパスが入る

    初心者の為、お願いします。 Office2000を使用しています。 あるエクセルファイルのシートのセルを参照して新たなエクセルファイルに反映させたいと思いました。(セル参照というのでしょうか。) しかしながら、どうしても反映させたいセルに元エクセルシートのパス(=\○○.xls\○○(sheet名)\セル番地、等)が入るのです。 セルの表示形式かとも思ったのですが、どう変えても同じ結果です。 違うようです。 このような現象の場合、どんな理由が考えられるでしょうか。 よろしくお願い致します。

  • 開いているファイルを削除し、別名で保存する方法

    エクセルVBA独学中の初心者です。 VBAを利用して以下のことがしたいのですが、わかりません。 助けて下さい。よろしくお願いいたします。 エクセル2003を使用しています。 現在開いているファイルのセル1Aの値を参照したファイル名で保存し、先に開いていたファイルを削除するにはどうすればよいのでしょうか? 先に開いていたファイルを閉じるではなく、削除してしまいたいのです。 そのファイル名は固定されたものではなく、ランダムなものなので指定できません。 どなたかご存知の方、ご教授ください。 よろしくお願いいたします。

  • エクセルで複数セル(約50個のセル)を参照し、合計値を出そうと思ってい

    エクセルで複数セル(約50個のセル)を参照し、合計値を出そうと思っています。 複数セルの中にはエラー値#N/Aも含まれています。 参照元のセルにVLOOKUP関数を埋め込むのも数が多く大変ですし、 合計値セルでISERROR関数を埋め込んだら「数式が長すぎます」というエラーが出ます。 #N/A以外を抽出し、合計値を出す方法はありますでしょうか。 出来ればVBAを使用せず回避できる方法を教えて頂ければ幸いです。

  • Excelを2つ起動してセルを参照する方法

    ご質問させていただきます。 Excel2007を2つ起動して、他方のシートのセルを参照したいのです。 具体的に説明いたしますと、1つ目のExcel2007をExcel(1)と呼び、2つ目のExcel2007をExcel(2)と呼ぶことにします。Excel(2)のsheet1のA1セル~A48セルまでcalculateイベントでリアルタイムに変化する値が入っています。それらの値をExcel(1)のsheet2のB1セル~B48セルで参照したいのです。 できるのでしょうか? どなたか教えていただけないでしょうか? よろしくお願いいたします。 もしVBAを使わなくてもできるようでしたら、そちらの方法も教えてください。 よろしくお願いいたします。

  • エクセル関数のセル参照方法

    エクセル関数のセル参照で、あるセルに入力した数値を、参照するセルの行番号として使いたいのですがどうしたらよいのでしょうか? VBAではそのような方法があったと思うのですが、関数で処理する方法はあるのでしょうか? たとえば、 =SUM(C5:C*) のような関数で「*」を他のセルに入力して参照させることは可能でしょうか? よろしくお願いいたします。

  • 別ファイルのセル参照

    Excelで別のファイルのセルを参照しています。 参照しているセルには、ちょっとした文章が入っているのですが、とあるセルを参照すると「#REF!」と表示され、参照できません。 文字数の制限とかあるのでしょうか? 回避できる方法がありましたら、ご教授願いたいです!

  • VBA セル内の関数の参照先

    あるExcel2000のファイル セル A1に20 A2に30 A3に50 A4に10 A5に60 セル B1に30 と表示されています B1の中は =Average(A2:A4) となっています 私はVBAでこのB1の中のAverage関数の参照先を取得したいのですがその方法が分かりません 例えば A=Cells(1,2)や A=Range(B1) としても変数Aは当然ですが30となってしまいます EXCELの関数でセルの中にある関数や参照先を抽出出来るものがないかと探して見ましたが私には見つける事が出来ませんでした。 セルの中にある関数、もしくはその関数の参照先を抽出する方法は無いのでしょうか よろしくお願いします。

  • セルの内容を名前をつけて保存する方法

    エクセルのセル(A2)の内容をタイトルにして自動で名前をつけて保存する方法を教えてください。VBAでは可能みたいなのですが…VB6 win2kです。よろしくお願いいたします。

  • excelで外のブックのセルを参照が上手くできない

    excelでの操作で行き詰まっています。 他のexcelファイルのセルを参照するのに、1つのセルにドライブパス名からファイル名までを すべてを入力すると参照したいファイルを開いて無くても参照出来るのですが ドライブパス名のセルとファイル名のセルを組み合わせた時に、開いて無い時は参照が出来ません。 参照したいファイルを開いた状態なら見れますが開かない状態で参照するには どうしたら良いのでしょうか? ='D:\user\[abcde.xlsx]Sheet1'!B1 ・・・ abcde.xlsxを開いて無くてもB1が参照出来る。 A1セルに 'D:\user\[ A2セルに abcde.xlsx A3セルに Sheet1'!B1 と入れて =indirect(A1&A2&A3) ・・・ 参照できない ファイル名を随時変更して参照したい為の作業です。 乱文ですみませんが、ご教示願います。

  • エクセルのセル参照

    エクセルですが、セル参照の件で困っとります。 同一シート内ではセル参照(shift =)ができるのですが、他のシートのセルを参照させると、数式が出て、セル内に文字が出ません。 どうすれば他のシートのセル参照ができるようになりますか?

専門家に質問してみよう