これ何て呼びますか

エクセル2016を使っているものです。VBAの中で新しいファイルを作成したのですが、そのファイルについて、保存せずに"AA”という名前を付けるコードはありますか?

任意に名前を付けて保存するコードはわかったのですが、ファイルに名前を付けるだけで保存しないコードがわからずに困っているところです。

どなかたご教示願います。

A 回答 (4件)

他山の石で、割り込ませていただきます。



別の人ですが、前にも、同様の話があってうやむやになってしまいました。
私も、最後まで話を煮詰める前に、質問者さんの緊急性には応ぜず、質問者さんのほうが脱落してしまうケースだけで終わってしまいます。

たぶん、ご質問者さんの質問の意図する所は、ほとんど伝わっていないように思います。
問題のポイントはなぜ、仮の保存のようなプロセスが必要か、ということです。

推測で書かせていただきます。

仮のファイル名(インスタンス名)自体は、保存しない限りは、あまり意味のないものですし、かつて、Excelのファイルをキャッシュに置いて作業したようなことを再現するような気がします。SSDがその代わりになるのかは、私は分かりません。保存自体に時間がかかるということを解消するための案です。

もう一つは、世代履歴管理の問題だと思います。
マクロは一般的に、それを実行すると一世代前には戻ることが不可能になってしまいます。そのために、仮にでも、保存したいのではないかと考えます。そうしたユーティリティも存在します。

>指定したセルからファイル名を取得し、その後、そのセル(行ごとですが)を削除した状態で保存したいのです。

おそらく、間違えた時に、一世代前に戻ることを前提としているように思えます。マクロで実行すると「戻る」が効かなくなるからです。

ワードのように、マクロでも「戻る」が効けばよいのですが、Excelでは、その代わりとしては、「バックアップの世代管理」というものがあります。しかし、ステップbyステップでは、「世代管理」には、この項目は間に合うかどうか分かりません。もしも、「世代管理」用のトリガーさえ分かれば、それを利用すればよいのですが、聞いたことがありません。

一世代ぐらいなら、その上、小規模のものでしたら、マクロで補えるはずです。保存の代わりになる命令を作ればよいと思います。シートのバックアップを取る以外は、変数にそれを保存するのですが、その方法が、配列でしか保存できないという欠点があります。

シートのバックアップとして、ある程度のプロトタイプは作りつつあるのですが、一度は完成したと思ったら、うまくいかなくなってしまい、いまだ完成品といえません。
    • good
    • 0
この回答へのお礼

いろいろと考えていただき、誠にありがとうございます。
しかし、やはり私の説明がわかりにくかったのですね。
別の方のお礼に書かせていただいたとおり、別の理由でした。

お礼日時:2018/02/05 11:51

それでしたら No.2 のような方法で処理できますので保存するときまでファイルに名前を付ける必要は全くありませんけど…

    • good
    • 0
この回答へのお礼

ありがとうございます。
うまく伝わらなかったのかもしれませんが、アクティブにあるワークブックにA1から名前を付与するのであれば、以下のコードになるのではないですか?

ActiveWorkbook.Name=ThisWorkbook.Sheets("Sheet1").Range("A1").Value

お礼日時:2018/02/05 11:40

No.1 の補足



一般的には仮の名前(「Book○」のようなもの)が付けられるのでそれを使えば新しいファイルを操作することが出来ます。
--------------------------------------------------------------------------------
Sub test()
Workbooks.Add
ThisWorkbook.Sheets("Sheet1").Range("A1").Value = ActiveWorkbook.Name
End Sub
--------------------------------------------------------------------------------
で、マクロのコードを記述した特定のセルに仮の名前を保存できます(シート名やセル位置は適当に変更してください)もちろん変数に取っておくのも良いですがエラーなどすると消えてしまう可能性が高いのでセルに保存しています。
呼び出すときは以下のように指定すれば操作可能です。
--------------------------------------------------------------------------------
Windows(ThisWorkbook.Sheets("Sheet1").Range("A1").Value).Activate
--------------------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

ありがとうございます。
申し訳ないのですが、マクロの動きを改めてコードを組みなおすと、前もってファイルに名前を付けておく必要がなくなりました。

なお、私の説明が悪かったのですが、以前のコードは以下の「以前」のような流れになっており、2度、ファイルを保存することになるため、その分、余計に処理に時間がかかってしまっていました。それを解消するために、以下の改良のようにコードを変えたいと思っていました。

~以前~
①新規で作成したファイルに、そのファイル中の指定したセルから、ファイル名を付与し、パスを指定し、保存する。
②指定したセルのある列を削除する。
②ファイルを保存する。

~改良~
①新規で作成したファイルに、そのファイル中の指定したセルから、ファイル名を付与する。
②指定したセルのある列を削除する。
②パスを指定し、ファイルを保存する。

お礼日時:2018/02/05 11:37

通常は出来ないと思いますが、目的によっては代行の処理が出来るかもしれません。


なぜ保存もしないのにファイル名が必要なんでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
指定したセルからファイル名を取得し、その後、そのセル(行ごとですが)を削除した状態で保存したいのです。
なので、ファイル名を取得して保存しても、行の削除後に再度、保存しなければならないため、時間が余計にかかってしまうので、まずはファイル名だけを付与しておきたいのです。

お礼日時:2018/02/01 21:03

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