プロが教える店舗&オフィスのセキュリティ対策術

Excel中級、VBA初心者です。
仕事で添付画像のような処理⓵〜⓷を依頼され、一部でもいいのでなんとか手作業の部分を減らせないか、お知恵を頂けないかと思い初めて質問を投稿します。情報の提供不足や失礼がございましたらお手数ですが何なりとお申し付け下さい。
自分の考える簡易なフローチャートとしては
リンク元データ全12施設を縦に並べ、ハイパーリンクを関数か連続データで当てて、行ごとでシート分割し(ここはマクロで行けそうです)、下層として並べたフォルダを上層としての会社名フォルダにまとめる???というような流れかと思うのですが、もっとシンプルなアプローチもあるのではないかとも思うのです。
VBAの基本も一通り参考書を流して見たり検索したりしたのですが煩雑でよくわからなくなってしまいました。
実際には8000件のデータ数があるのでミスも多くなりそうで困っています。
全て解決とはならなくても、一部の作業でも短縮出来たら助かります。どのようなアドバイスでも構いません。どうぞよろしくお願いします。

「Excel(VBAの処理も入ると思うので」の質問画像

質問者からの補足コメント

  • 反応して頂いて大変ありがたいです。すいません補足し忘れていました。自宅がMacOS環境なのでサンプルはおおよそのイメージになってしまいますがですが実際使う職場はExplorerです。画質が劣化してしまうのですね。チェックが足らず申し訳ありません。少し見易くしてみたのですがいかがでしょうか?

    「Excel(VBAの処理も入ると思うので」の補足画像1
      補足日時:2020/08/02 18:28
  • ⓵、⓶はエクスプローラー上の表示
    になります。

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/08/02 19:13
  • 出来ないんですね。それが分かっただけでも1UPしました。m_ _mそれでは、上のブックのD列をそのままシート名にして、それぞれのシートに分割し、下のような1施設分のデータのみコピペしたシートへのリンクを貼って(D列に貼るかもしくは別にリンクするセルを作ってもいいです)、D2セルの「AA」をクリックしたらAAのシートに飛ぶようにするには、方法がありますでしょうか?それとも質問が変わるので新しくスレ立てた方が良いのでしょうか?作法がわからずすいません。

    No.3の回答に寄せられた補足コメントです。 補足日時:2020/08/02 23:37

A 回答 (5件)

こんばんは、


>どのような手順で進めるのが一般的なのでしょうか?
既に各フォルダ、ファイルがある場合。
一般的かどうかは分かりませんが、FolderPickerを使ってフォルダを選び
ファイルを開く形でしょうか。
ご質問の様にフォルダ名とファイル名が同じ場合こんな感じでしょうか。

Sub sample()
Dim FSO As Object
Dim folderPath As String, targetName As String
  Set FSO = CreateObject("Scripting.FileSystemObject")
  With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "会社名を選択してから施設番号フォルダを選択してください。"
    .InitialFileName = "C:\Tmp\"  '親フォルダのパス
    If .Show = True Then folderPath = .SelectedItems(1)
  End With
  If folderPath = "" Then Exit Sub
  targetName = FSO.GetFolder(folderPath).Name
  If Dir(folderPath & targetName & ".xlsx") <> "" Then
    Workbooks.Open folderPath & targetName & ".xlsx"
  Else
    MsgBox "ファイルが存在しません。", vbExclamation
  End If
  Set FSO = Nothing
End Sub

添付画像のような形にする場合は、
多分 UserFormでMSComctlLibのツリービューとDSO Framer ActiveXのDSO Framer Control Objectで
実現できるかと思いますが、現在使えるコントロールか分かりませんし(調べていません)、ハードルはかなり高いです。

また、UserFormを使わず、リボンを操作してツリービューの変わりになるような事も出来そうです。(アイコン付のコンボとか)
しかし、これもリボンXMLの知識が必要になります。が、ネットの情報はだいぶ増えましたので興味があれば調べてみてください。

多分、的外れだと思いますが参考まで

>上のブックのD列をそのままシート名にして、それぞれのシートに分割し、下のような1施設分のデータのみコピペしたシートへ
この分割シートは出来ているのですか
リンクについては、リンクの方法が良いのかなぁ?施設番号の数によるのでは無いでしょうか。

私みたいに変な事言う人が出てくるので、新しくスレ立てた方が良いかと思います。
    • good
    • 0

こんにちは



図が良く読めないので、申し訳ありませんが、内容をきちんと把握せずに回答しています。

ご提示の使い勝手は、使う際の便利さを追求してのことと思いますが、VBAだけでは難しいと思われます。
VB等で簡易的なソフトを作成するつもりで行えば、可能かと思いますが、
>VBA初心者です
とのことですので、ハードルはかなり高いと思います。

>一部でもいいのでなんとか手作業の部分を減らせないか
ということであれば、VBAで可能な範囲での操作性や省力化を考えれば、機能的にはご質問とほぼ同等のもの(UIは少し劣るかも知れませんが)を作成することは可能ではないかと推測します。

フォルダやファイルの選択・表示(エクスプローラ的なUI)部分以外は、普通のVBAで充分処理できるもののように思われますので。
(すみませんが、内容を把握できてはいませんけれど。)
ちなみに、普通のファイル選択ダイアログ程度の操作性までならVBAで充分に実現可能です。
    • good
    • 0
この回答へのお礼

不勉強で、できる範囲と出来ない範囲が分かっておらず混乱させるような質問を投げてしまった事、申し訳なく思います。もう少し勉強して出直して参ります。お時間取って答えてくださったのでお二人共感謝ですがより詳しい答え方をして下さったのでこちらをベストアンサーにさせて頂きたいと思います。

お礼日時:2020/08/03 21:57

エクスプローラー上の操作をExcel VBAで監視して、


下層フォルダを表示したり、エクセルを表示したりしたいということですか?
私が知る限り無理です。
この回答への補足あり
    • good
    • 0
この回答へのお礼

不勉強で、できる範囲と出来ない範囲が分かっておらず混乱させるような質問を投げてしまった事、申し訳なく思います。レスも早く大変有り難かったです。

お礼日時:2020/08/03 21:58

それで、①、②はエクスプローラー上での操作を言っているのですか?


それとも、例えばエクセルのA列に上層のフォルダ、B列に下層のフォルダを表示させてといった具合に1ブック内で行っているのですか?
この回答への補足あり
    • good
    • 0

画面が暗くてよく分かりません。


①、②はエクスプローラー上での操作を言っているのですか?
    • good
    • 0

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