質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コンボボックス

GUIの要素のひとつです。Listboxと同様にいくつかのうちひとつを選択する機能だが、Comboboxの場合は選択されたもののみがデフォルトとして表示される。

Q&A

解決済

3回答

6298閲覧

ブック名を変更したい

mi_ku

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コンボボックス

GUIの要素のひとつです。Listboxと同様にいくつかのうちひとつを選択する機能だが、Comboboxの場合は選択されたもののみがデフォルトとして表示される。

0グッド

1クリップ

投稿2020/05/02 02:22

ブックの名前を変更するマクロの作り方を教えていただけませんでしょうか?

現在ワークシート上にコンボボックスがあり、そこにブック名にしたい候補の一覧があります。
選んだものをブック名にしたい場合はどのようにしたらよろしいのでしょうか?

ブック名をセルに反映させることはできたのですが、その逆ができません。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

このブックを保存するのでしたら

VBA

1ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & ComboBox1.Value

投稿2020/05/02 04:45

ryuno_vanilla

総合スコア119

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mi_ku

2020/05/02 05:04

ryuno_vanillaさん、ありがとうございます。 大変申し訳ありませんが、前後も教えていただけませんでしょうか?
ryuno_vanilla

2020/05/02 08:34

現在のブック名とパスを変数に入れて置き、 ComboBoxのファイル名で保存する。 保存前(変更前)のブックを削除する。 Dim Path As String Path = ThisWorkbook.Path & "\" & ThisWorkbook.Name ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & ComboBox1.Value Kill Path
mi_ku

2020/05/02 09:09

ryuno_vanillaさん、ありがとうございます。 オブジェクトが必要ですと表示されてしまうのですが、 SubとEnd Subで挟むだけではダメなのでしょうか?
ryuno_vanilla

2020/05/02 09:12

ComboBoxはComboBox1という名前ですか? ComboBoxの名前を確認してください。
mi_ku

2020/05/02 09:15

ドロップ7という名前でした
ryuno_vanilla

2020/05/02 09:18

セルにComboBoxで選択した値が入っているのならばそちらを使用してもいいですよ
mi_ku

2020/05/02 09:22

ありがとうございます、できました! が、保存先がどこかわからず、ファイルを探している最中です。
mi_ku

2020/05/02 09:23

すみません、ありました。 この度はありがとうございました。
guest

0

ブック名というのはファイル名のことですよね?

SaveAsで新しいファイル名で保存して、Killで古い名前のファイルを削除でしょうか。

投稿2020/05/02 03:13

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mi_ku

2020/05/02 05:03

otnさん、ありがとうございます。 すみませんが私の知識では理解できません。 SaveAsとKillをキーワードに調べ直してみます。 ヒントありがとうございます。
guest

0

「Excel vba ブック名 変更」で検索すると次のようなページが見つかりますよ。

VBAでブックを開いたままブックのファイル名を変更する

投稿2020/05/02 02:25

Yasumichi

総合スコア1773

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mi_ku

2020/05/02 05:00

Yasumichiさん、ありがとうございます。 こちらのサイトも見ていたのですが、変更後の名称をコンボボックスから選ぶ、もしくは指定したセルの名称にする方法がわかりませんでした。
Yasumichi

2020/05/02 05:51

指定したセルの値を取る方法は、分かりますか?ストレートに教えてもいいのですが、以下のページを参照してみてください。 Cells プロパティ (Excel) | Microsoft Docs https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheet.cells VBA セルの値を取得する https://www.tipsfound.com/vba/07001 あと、「excel vba combobox」とかで検索するとコンボボックスから選ぶ方法も見つかると思いますよ。
Yasumichi

2020/05/02 05:52

あと、マクロの記録も利用すると色んなコードが分かりますよ。
mi_ku

2020/05/02 06:04

Yasumichiさん、ありがとうございます。 教えていただいたサイトを拝見し、セルの値を取ることはできました。 ですが、その二つをどう組み合わせたら良いのかがわかりません。 教えていただいたサイトのコードでいうと、 '// ファイル名変更ダイアログを表示 sChangePath = Application.GetSaveAsFilename(InitialFileName:=sFileName, Title:="変更後ファイル名") のあたりかと思って色々変更してみたのですが、うまくいきませんでした。
Yasumichi

2020/05/02 06:42

先に sFileName に cells(?,?).value の値を代入すれば、良いのでは?
mi_ku

2020/05/02 08:24

ありがとうございます。 セルの値で保存画面までは進めました。 ところが、保存先を指定しても保存になっておらず、再度開くはずのファイルが開きません。 どこがおかしいのでしょうか? Sub ChangeOpenBookName() Dim bk As Workbook Dim iMsg As Integer Dim sFileName As String Dim sFullPath As String Dim sChangePath As String Set bk = ActiveWorkbook iMsg = MsgBox("ファイル名を変更する前に保存します。" & vbLf & "よろしいですか?", vbOKCancel) If iMsg = vbCancel Then Exit Sub End If bk.Save sFileName = bk.Name sFullPath = bk.FullName sChangePath = Application.GetSaveAsFilename(InitialFileName:=Cells(2, 7).Value, Title:="変更後ファイル名") If sChangePath = "False" Or sFullPath = sChangePath Then Exit Sub End If bk.Close Name sFullPath As sChangePath Call Workbooks.Open(sChangePath) End Sub
Yasumichi

2020/05/02 08:30

ああ、こうしてコードになると自分の答えが間違っていたことに気づきました。 そもそも sChangePath = Application.GetSaveAsFilename (以下、略)の行はいらないですね。ファイル名を取るだけのコードなので。 ryuno_vanilla の提示している ThisWorkbook.SaveAs ファイル名 を実行しないと実際に保存は行われません。
mi_ku

2020/05/02 09:12

Yasumichiさん、ありがとうございます。 sChangePath = Application.GetSaveAsFilename(InitialFileName:=Cells(2, 7).Value, Title:="変更後ファイル名") までは正しいけれど、その下がryuno_vanillaさんにアドバイスいただいた Dim Path As String Path = ThisWorkbook.Path & "\" & ThisWorkbook.Name ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & ComboBox1.Value Kill Path にしなければならないということでしょうか?
Yasumichi

2020/05/02 09:24 編集

申し訳ないですけど、正しいかといわれると精査はしてません。 むしろ、ryuno_vanilla のを元に足りない部分があれば、肉づけした方がよいと思います。 あと、各行のコードの意味とか理解していますか?意味を理解しようとしないで組み合わせるのは、危険ですよ。特に Kill とか。
mi_ku

2020/05/02 09:34

アドバイスありがとうございます。 なるべく理解するようにはしておりますが、まだ全部は理解しきれておりません。 関数みたいに追加するだけならよいのですが・・・。
退会済みユーザー

退会済みユーザー

2020/05/02 12:13

mi_kuさんが混乱しているのは。。 VBAの皆さんの助言もそうなのですが、Combobox(にみえるもの)にも色々あるんです・・。 1、VBAのUserform上に配置したcombobox 2、Excelシートに配置したFormコントロールのCombobox、 3、入力規制でリスト表示でセル範囲を指定したcomboboxのようなもの このあたりの違いを意識しないと、ご意見をいただくたびに迷うことになりますよ。
mi_ku

2020/05/03 00:23

アドバイスありがとうございます。 ネットで探してもその辺で戸惑うことがありました。 私は2のケースがほとんどなので、次回から質問させていただく場合はその辺も明記するようにしたいと思います。
退会済みユーザー

退会済みユーザー

2020/05/03 00:33 編集

2のケースが多いとすると、前回の方のファイル名を変えて保存するというコードは このように違ってきますね・・。エクセルシートに配置したcomboboxはセルに値を転記するわけですから ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & sheets("data").range("A1").Value
mi_ku

2020/05/03 09:52

アドバイスありがとうございます。 sheets("date")を追加して問題なく動作いたしました。 他にも試行錯誤中ですが、質問するのも難しいですね。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問