[[20190608103422]] 『(マクロ)ActiveWorkbook.Pathの結果を途中でカメx(大粒いくら) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『(マクロ)ActiveWorkbook.Pathの結果を途中でカットしたい』(大粒いくら)

勉強中です。ご指導、よろしくお願いします。

ActiveWorkbook.Path を入力する事で、

C:\Users\user\Dropbox\doc\集計ファイル\クレジットカード管理

のように開いているワークブックのパスが拾えると思いますが、

C:\Users\user\Dropbox\doc

のように途中まででカットしたい場合は、どうすれば良いのか分かりません。

Path1 = ActiveWorkbook.Path

Path2 = \買掛金\買掛金管理表.xlsm

FPath = Path1 & Path2

結果→ C:\Users\user\Dropbox\doc\買掛金\買掛金管理表.xlsm

のようにしたいです。

書き方を教えて頂けると嬉しいです。

そもそも ActiveWorkbook.Pathを使うんじゃなくて、こういうのを使うんだよといったご指導でも嬉しいです。

よろしくお願いしますm(__)m

< 使用 Excel:Office365、使用 OS:Windows10 >


てっとりばやく、文字列操作で
ActiveWorkbook.Pathの右から何文字目に\があるか調べて
ActiveWorkbook.Pathの左から↑で見つかった文字の1つ前まで取り出し
てはどうですか?

(もこな2) 2019/06/08(土) 11:03



試してないのでわかりませんが、
絶対パスではなく相対パスで書けば済む問題かもしれません…

(もこな2) 2019/06/08(土) 11:10


もこな2さん、ありがとうございます!

文字列操作という単語が分からなかったので、それで調べたところ、

Replace関数がバッチリ合いました♪

ありがとうございましたm(__)m

(大粒いくら) 2019/06/08(土) 11:53


>文字列操作という単語が分からなかったので
分かりづらかったですかね。
フォルダのパスということは一旦忘れてただの文字列として考えてみればという意味でした。
なので言ったことは、こんなことです。
    Sub さんぷる1()
        Const MySTR As String = "あ\い\う\え\お"

        '▼後ろから最初の「\」を探して、全体の何文字目か調べ、その1文字前までを取り出す
        Debug.Print Left(MySTR, InStrRev(MySTR, "\") - 1)

        '▼後ろから2番目の「\」を探して、全体の何文字目か調べ、その1文字前までを取り出す
        Debug.Print Left(MySTR, InStrRev(Left(MySTR, InStrRev(MySTR, "\") - 1), "\") - 1)

    End Sub

相対パス〜のほうは、調べてみたら複雑そうだったので別案。
FileSystemObjectというものを使います。
http://officetanaka.net/excel/vba/filesystemobject/

    Sub さんぷる2()
        Dim FSO As Object
        Dim フォルダ As Object

        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set フォルダ = FSO.GetFolder(ThisWorkbook.Path)

        '▼親フォルダの親フォルダのパスを取り出す
        Debug.Print フォルダ.ParentFolder.ParentFolder.Path

    End Sub

(もこな2) 2019/06/08(土) 21:57


階層の深さは固定なのでしょうか?
置換でできたということは、フォルダ名も固定で
変動するのは、user の部分だけですかね。
 Sub test()
    Dim s As String
    Dim f As String

    s = "C:\Users\user\Dropbox\doc\集計ファイル\クレジットカード管理"
    f = "\Dropbox\doc\"

    s = Left(s, InStr(s, f) + Len(f) - 1)
    MsgBox s

 End Sub

(マナ) 2019/06/08(土) 22:27


 Sub test相対パス()
     Dim FilePath As String
     ChDrive ActiveWorkbook.Path
     ChDir ActiveWorkbook.Path
     ChDir "..\.."  '<- 2階層上  ..で1階層
     FilePath = CurDir
     MsgBox FilePath
 End Sub
(seiya) 2019/06/09(日) 06:48

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.