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

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

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

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

Q&A

解決済

4回答

11485閲覧

【VBA】特定の文字までを取得する方法

murama2

総合スコア113

VBA

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

0グッド

0クリップ

投稿2017/06/20 07:34

VBAのことでお聞きしたいことがあります。

■やりたいこと
・サイトのディレクトリデータが入っている列から最後の「/」以降の文字を除いた文字を取得

例)「/test/test2/index.html」とデータがあったら「/test/test2」と取得したい
ただしすべて「/test/test2」というディレクトリになっておらず「/about/index.html」や「/campany/price/test/index.html」などの場合もある。
またファイル名もバラバラ。

指定した文字以降を取得するというコードは見つけたのですが指定する文字が「/」だといくつもあってうまく取得できないじゃんと悩んでおります。

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

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

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

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

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

guest

回答4

0

InStrRev関数を使えば右から検索してくれます

Dim url url = "/test/test2/index.html" Dim lastindex As Integer lastindex = InStrRev(url, "/") MsgBox (Mid(url, 1, lastindex))

みたいな感じで
いろいろなエラーは考慮していません

投稿2017/06/20 07:41

編集2017/06/20 07:48
dojikko

総合スコア3939

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

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

0

Midで切り出すのが定番かと思いますが、敢えて別の方法を書いてみます。

VBA

1Dim items() As String 2items = Split("/test/test2/index.html", "/") 3ReDim Preserve items(UBound(items) - 1) 4path2 = Join(items, "/") 5Debug.Print path2

投稿2017/06/20 08:05

ttyp03

総合スコア16998

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

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

0

ベストアンサー

vbs

1Function DirPath(s) 2 Dim i 3 i = InStrRev(s, "/") 4 If i < 0 Then 5 DirPath = s 6 Exit Function 7 End If 8 DirPath = Left(s, i-1) 9End Function 10 11' DirPath("/foo/bar/baz")) = /foo/bar 12' DirPath("/foo/bar/")) = /foo/bar 13' DirPath("/foo")) = /foo 14' DirPath("/")) = 空

もし最後の / を残したいのであれば i-1 の部分を i にして下さい。

投稿2017/06/20 07:54

mattn

総合スコア5030

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

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

0

フルパスからディレクトリパスを取得するのでしたら、以下の正規表現で抽出可能です。
「^.*/」

下記例では、full_path からdir_path への変換を行っています。

VBA

1 Dim full_path As String 2 Dim dir_path As String 3 4 full_path = "/test/test2/index.html" 5 6 Dim reg, Match 7 8 Set reg = CreateObject("VBScript.RegExp") 9 reg.Pattern = "^.*/" 'パターン設定 10 reg.Global = True '文字列全体検索 11 12 Set Match = reg.Execute(full_path) 13 If Match.Count > 0 Then 14 dir_path = Match(0).Value 15 End If

投稿2017/06/20 07:49

monagano

総合スコア246

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問