アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になっております。
ホルダー内にある複数のファイルをある規則に従い格納するマクロを作成したいです。
どうぞ宜しくお願い申し上げます。

※Win11 Office365です。

※先に、コードと国名対応を記載致します(101:日本、202:アメリカ、308:イギリス、427;スペイン、599:ロシア、689:ベルギーです)

※これらの名称は例ですので、名前やコードが異なります。コードと名前が変わっても、応用して使えると有難いです。


年月ホルダー例えば『2022年10月』の中に、『日本』、『アメリカ』、『イギリス』、『スペイン』、『ロシア』、『ベルギー』等、各国のホルダーと、『項目』のホルダーが入っています。

さらに、例えば『日本』のホルダー内に『①経済・法律・政治』、『②科学』、『③言語』、『工業』等のホルダーが入っています。(①等の番号が振っていないホルダーもあります)(各国のホルダー内のホルダーの名前は一律です)

『項目』ホルダーの中には、『経済』、『科学』、『法律』、『工業』、『政治』、『言語』等のホルダーがあります。

『項目』ホルダー内の例えば『経済』のホルダー内に、各国のコードが含まれているファイル、例えば『101経済』、『202経済』、『308経済』、『427経済』、『599経済』、『689経済』等のホルダーが入っています。

『項目』ホルダー内の例えば『科学』のホルダー内に、各国の国名が含まれているファイル、例えば『日本_科学新聞』、『アメリカ_科学新聞』、『イギリス_科学新聞』、『スペイン_科学新聞』、『ロシア_科学新聞』、『ベルギー_科学新聞』等のホルダーが入っています。

これらのファイルを例えば『101経済』であれば101は日本にあたるので年月ホルダー『2022年10月』の中の『日本』のホルダー内の『①経済・法律・政治』に入れて、ファイル名『日本_科学新聞』であれば日本とあるので『日本』のホルダー内の『②科学』に入れたいです。

『項目』ホルダーの中の他のホルダー『法律』、『工業』、『政治』、『言語』等のホルダー内のファイルも同様に年月ホルダー『2022年10月』の中の各”国名”のホルダー内に『①経済・法律・政治』、『②科学』、『③言語』、『工業』等のホルダーに振り分けたいです。

画像を添付致しましたが、見づらく申し訳ございません…。

複雑で大変申し訳ございませんが、コードをお教えいただいけると有難いです。
出来ましたら、コードごとにどのような作業をしているのかお教え下さると勉強になります…(出来ればで差支えございません…)

ご回答を楽しみにお待ちしております。
どうぞ宜しくお願い申し上げます。

「Excel VBA マクロ ホルダー内に」の質問画像

A 回答 (4件)

No3です。



>その通りです…。
>そのシートをTABLEとしてコードを考えているのですが、コードが組めておりません…。
「シートに記入」って書いているんですから、コードなんか必要ありません。
シート上で関数で検索すれば良いだけ。
あいまい検索をしてヒットしたものを取り出せば済むものと思います。

No2では、それを「仕組み」と称しました。
マクロは、シートに「記入」して、結果を「読む」だけですみます。
    • good
    • 0
この回答へのお礼

大変お世話になっております。
ご回答を下さいまして有難うございました。
やっと実現しましたが、もう少し簡略化の工夫が必要なため、改めて質問をさせて頂くかと思います…。
この度は本当に有難うございました…。
次回もどうぞ宜しくお願い申し上げます。

お礼日時:2022/11/19 20:38

No2です。



>コードと国名が100以上有り、~~
それだけ数があるなら、Excel とのことなので、シートにテーブルを作成しておいて・・

例えばA1セルにフォルダ名を入れれば、B1セルに振り分け先のフォルダ名が検索で出るような仕組みにでもしておけば良いのではないでしょうか?

そうすることで、マクロの処理としては、
 ・A1セルにフォルダ名を記入
 ・B1セルの指定先に当該フォルダを移動
を繰り返すだけで済むようになると思われます。
    • good
    • 0
この回答へのお礼

大変お世話になっております。
ご返信を下さいまして本当に有難うございます。
>例えばA1セルにフォルダ名を入れれば、B1セルに振り分け先のフォルダ名が検索で出るような仕組みにでもしておけば良いのではないでしょうか?
その通りです…。
そのシートをTABLEとしてコードを考えているのですが、コードが組めておりません…。
例えば一旦『日本』にファイルを格納し、その後、各”国名”のホルダー内の『①経済・法律・政治』、『②科学』、『③言語』、『工業』等のホルダーに振り分けるという方式です。
コードが組めないため、まだまだ時間がかかりそうです…。
大変申し訳ございません…。
引き続きどうぞ宜しくお願い申し上げます…。

お礼日時:2022/11/19 15:44

こんにちは



説明が「例示」ばかりなので、何が確定なのかよくわかりませんね。
各国のフォルダ構成が必ず同じ保証があるのかすら不明ですけれど・・

項目フォルダ内の各フォルダ
・経済 → ①経済・法律・政治
・科学 → ②科学
・法律 → ①経済・法律・政治
・工業 → 工業
・政治 → ①経済・法律・政治
・言語 → ③言語
と決め打ちで良いのなら、それぞれのサブフォルダの行き先の国名がわかれば良いだけになります。

例えば、
[
[101,日本],
[202,アメリカ],
[308,イギリス],
[427,スペイン],
[599,ロシア],
[689,ベルギー]
]
のような配列を用意しておいて、フォルダ名から部分一致で検索すれば良いのではないでしょうか?
あとは、全サブフォルダについてループすれば良いだけかと。
(ヒットしない名称とか、特殊なものをどうするのか不明ですけれど・・)


また、ご質問からは「何がわからないのか」も不明ですが・・・
例えば、
Function classify(fileName As String) As String
Dim c, i
c = Array( _
Array("101", "日本"), Array("202", "アメリカ"), Array("308", "イギリス"), _
Array("427", "スペイン"), Array("599", "ロシア"), Array("689", "ベルギー"))
classify = "others"
For i = 0 To UBound(c)
If InStr(fileName, c(i)(0)) Or InStr(fileName, c(i)(1)) Then classify = c(i)(1):Exit For
Next i
End Function
みたいなものを作っておいて、判別すれば良いのではないでしょうか?

※ 実際には、毎回配列を定義するのは非効率的にすぎますので、まとめて定義しておく方が良いと思いますけれど・・
    • good
    • 0
この回答へのお礼

大変お世話になっております。
ご返信とコードのご提示を下さいまして本当に有難うございました。
コードと国名が100以上有り、そこから毎月10程選択し、ファイルを格納します…。
色々と試していますが、まだ出来ておりません…。
もう少し考えてみます…。
お時間を頂きまして本当に有難うございました。
引き続き、どうぞ宜しくお願い申し上げます。

お礼日時:2022/11/19 13:49

ごめん。


ここは作業依頼をする場所ではないのです。
自身で作るためのアドバイスをもらう場所です。

そんなわけで、そのマクロを作るうえで何が分からないのかをピンポイントに質問することを薦めます。
マクロを作るヒントをもらえると思いますよ。

もしも代わりに作ってほしいのであれば、有料サイトで作業依頼することを薦めます。
(自分ならアフターサポートなし(後付け条件による変更含む)として500円程度で引き受けるかな)
    • good
    • 4
この回答へのお礼

お世話になっております。
お返事を下さいまして本当に有難うございました。
>そのマクロを作るうえで何が分からないのかをピンポイントに質問することを薦めます。
>マクロを作るヒントをもらえると思いますよ。
本当にその通りだと思いました…。
有難うございます!
もう少し考えてみまして、また質問をさせて頂くかも知れません…。
次回も是非宜しくお願い申し上げます…!

お礼日時:2022/11/19 13:36

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