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

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

新規登録して質問してみよう
ただいま回答率
85.35%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

VBA

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

Q&A

解決済

4回答

17910閲覧

VBA ファイル名がよく変わるファイルを開く、閉じる

minako_tera

総合スコア12

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

VBA

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

0グッド

0クリップ

投稿2020/04/10 07:31

バージョンがよく変わるファイル名があるのですが、
マクロでそのファイルを開く、閉じるという操作をできるコードがわかりません。
ご存じでしたら教えてください。
よろしくお願いいたします。

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

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

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

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

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

otn

2020/04/10 07:51

> バージョンがよく変わるファイル名があるのですが、 具体的にお願いします。
minako_tera

2020/04/13 04:24

コメントありがとうございます。返信が遅くなり申し訳ありません。 テスト.ver1.xlsx」のように、ファイル名が変わっていくのですが、コードを書き換えないで開く、閉じるという作業を行いたいです。よろしくお願いします。
guest

回答4

0

ベストアンサー

テスト.ver1.xlsx」のように、ファイル名が変わっていくのですが、コードを書き換えないで開く、閉じるという作業を行いたいです。

ファイル名の一部をワイルドカードにして、合致するファイルの一覧を取得できます。

VBA

1chdir "ファイルのあるフォルダ名" 2file = Dir("テスト.ver*.xlsx") 3Do While file <> "" 4 file を開いて処理する 5 file = Dir() 6Loop

合致するファイルが、絶対に1つしか無いなら、

VBA

1chdir "ファイルのあるフォルダ名" 2file = Dir("テスト.ver*.xlsx") 3file を開いて処理する

投稿2020/04/13 05:06

otn

総合スコア85901

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

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

minako_tera

2020/04/13 09:49

どうもありがとうございました。無事に解決しました。
guest

0

>バージョンがよく変わるファイル名

んと、
「ファイル名の頭から何文字かは同じだけど、後ろの方の文字がちょいちょい変わる」
という認識でよろしいでしょうか?

コードをと言われても、
1つの命令や
1行や2行のコードでどうなるものでもないので、
簡単に考えない方がいいです。

それから、安易に「バージョンが」と言われてますが、
それは、minako_teraさんが読んだ時はそのように脳内変換して読むから、
バージョンだと思うと思いますが、
赤の他人が読んだ場合は、「ただの文字列」です。
プログラムを作るには、どういうルールで文字列が書かれていたら、
それをファイルのバージョンと読むかというルールを作るところから始まります。

じゃぁ、何から手を付けるかというと、
そのファイルを開くには、
手動ではどういう手順で行うのか?
という作業の流れを細分化していくところから始めます。

例えば、
1)「保存データ Ver. ??.??.xlsx」
というようなファイル名をコンピューター内から探す。
2)探したファイル名を一覧表示する
3)ファイル名を選択してもらう
4)ファイルを開く

というような作業手順を自動で行いたいなら、
ファイルを検索する方法を学ばないといけないですし、
どこにどんな風に表示するかを決めないとならないですよね?
その前に、まずはVBAの基礎も一通り学ばなければいけないと思います。

自転車に乗れないのに、
カーブの曲がり方を習ったところで、
自転車でカーブを曲がるなんてことはできないですよね?

まずは、日本語でやりたいことと、
それを実現できる手順を考えてみましょう。
そして、日本語で書けたら、それをVBA語に翻訳できるように勉強しましょう。

参考サイト>>

ファイルを検索する
ファイルの一覧を取得する
Like演算子とワイルドカード

この辺が参考になるかと思います。

投稿2020/04/10 08:24

mattuwan

総合スコア2163

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

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

minako_tera

2020/04/13 04:25

コメントありがとうございます。返信が遅くなり申し訳ありません。 ワイルドカードを使えると思ったのですが、開く作業はできそうなのですが、閉じるをするとうまくいきません。 もう少し勉強してまたわからなければ質問させていいただきます。
mattuwan

2020/04/13 04:35

>閉じるをするとうまくいきません。 どうなるのですか? 上手くいかないでは伝わりません。 やりとりしながら、勉強していけばいいのではないでしょうか?
mattuwan

2020/04/13 04:44

あぁ、開くときにははっきり名前が分かっているはずですよね? それを変数に保持しておけば、閉じれると思いますが? というか、名前は解らなくても、「最後に開いたブック」は分かるので、(開いた順番に番号が付くので)、 それで指定することは可能ですが、Workbooks.Openメソッドには、返り値(開いたブックその物)が、 有りますので、それを変数に受けるようにすれば、 閉じることは容易だと思います。 まずは書いてみて、躓いたらまた聞いて下さい。 今の質問の仕方だと、「サンプル書いて下さい=アプリ作ってください」という風に取れます。 ここは無料でアプリを作ってもらえる場ではないので、 向ってみて、困っていることを解決できるような質問をしましょう。
minako_tera

2020/04/13 09:51

言葉足らずで申し訳ありませんでした。 いろいろ試してみて、無事に解決しました。また、何かありましたらその時はよろしくお願いします。
guest

0

Workbooks.Open "C:\Book1.xlsx"
Workbooks("Book1.xlsx").Close

がそれぞれファイルを開く/閉じる
です。
XXXXX_Ver10.xlsx
XXXXX_Ver11.xlsx
.
.
.

のようにどんどん名前が変わってしまう、ということであればシートのどこかにそのファイル名を記録しておき、オープン/クローズで参照するのはそのシートのどこかのセルにしておけば良いのではないでしょうか?

投稿2020/04/10 08:29

sugawata

総合スコア67

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

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

minako_tera

2020/04/13 04:24

コメントありがとうございます。返信が遅くなり申し訳ありません。 すみません。もう少し勉強してみます。
guest

0

フォルダの階層読み込みと言うプログラムを参考にしてみて下さい。
「VBA, Scripting.FileSystemObject」と検索すると情報が色々出てくるはずです。
更新日や作成日などの情報も取得出来るので、そのデータを元にソートしてみるのもいいかも知れません。

投稿2020/04/10 07:52

編集2020/04/10 07:54
stdio

総合スコア3307

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

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

minako_tera

2020/04/13 04:25

コメントありがとうございます。返信が遅くなり申し訳ありません。 もう少し検索してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問