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

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

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

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

Q&A

解決済

1回答

523閲覧

VBA リストボックス複数列

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

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

0グッド

0クリップ

投稿2018/06/26 05:37

編集2018/07/02 00:07

chromeで動作完了したseleniumをiPad(safari)上でも自動テストしたいです。
どのようにすればいいか手探りの状態です。
どのようにセットアップすればよろしいでしょうか?
実現出来る手順やサイトなど、ご教授おねがいします。
現在、気になっているサイトは以下の通りです。
リンク内容

VBA

1Private Sub btn_FileOpen_Click() 2 Dim OpenFileName As Variant, Target As Variant 3 'カレントディレクトリを指定 4 ChDrive "C" 5 ChDir "C:\test" 6 OpenFileName = Application.GetOpenFilename(FileFilter:="Microsoft Excelブック,*.xls?", _ 7 MultiSelect:=True) 8 If IsArray(OpenFileName) Then 9 With Me.BookInput 10'リストボックスにファイル名を表示 11 For Each Target In OpenFileName 12 .AddItem Mid(Target,InstrRev(Target,"\")+1) 13 Pathname = Replace(Target, Filename, "") 14 .AddItem "" 15 .List(BookInput.ListCount - 1, 0) = Filename 16 .List(BookInput.ListCount - 1, 1) = Pathname 17 Next Target 18 19 End with 20 Else 21 MsgBox "キャンセルされました" 22 End If 23End Sub

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

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

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

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

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

guest

回答1

0

ベストアンサー

VBA

1.AddItem Mid(Target,InstrRev(Target,"\")+1) 23Filename = Mid(Target,InstrRev(Target,"\")+1)

投稿2018/06/26 05:40

ttyp03

総合スコア16998

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

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

退会済みユーザー

退会済みユーザー

2018/06/26 05:47

ttyp03さん〉 回答ありがとうございます Firename = Mid(Target,InstrRev(Target,"\")+1) を試した際に、 1列目がフルパス、2列目が空白 になってしまいます。
ttyp03

2018/06/26 05:48

Fireになってますが・・・ Fileですね。
ttyp03

2018/06/26 06:46

こういう間違いを防ぐためにも、ソースコードの先頭で、 Option Explicit を宣言することをお勧めします。
退会済みユーザー

退会済みユーザー

2018/06/26 07:21

ttyp03さん〉 回答ありがとうございます コメントの方のコードを間違えてました。 Option Explicitは先頭に一応付けてますが、 上手くいきません。
ttyp03

2018/06/26 08:00

For Each のところが次のようになればいいだけなんですけど。 For Each Target In OpenFileName Filename = Mid(Target,InstrRev(Target,"\")+1) Pathname = Replace(Target, Filename, "") .AddItem "" .List(BookInput.ListCount - 1, 0) = Filename .List(BookInput.ListCount - 1, 1) = Pathname Next Target Dirの行を置き換える。 前回の質問では、そういった意図で回答しました。
退会済みユーザー

退会済みユーザー

2018/06/26 09:44

ttyp03さん〉 回答ありがとうございます 確かに前回の質問ですとその処理でエラーは解決できましたが、 今回の質問の 1つのリストボックスを複数列で1列目をファイル名、2列目をフルパスで表示する方法 での回答とは違っていると思うのですが。
ttyp03

2018/06/26 11:08

2列目がフルパス名ってことですか。 見落としてました。 Targetをそのまま使えばよいのでは。 Pathname = Target
退会済みユーザー

退会済みユーザー

2018/06/27 00:49

ttyp03さん〉 回答ありがとうございます 試してみたのですが、 リストボックスの 1列目をファイル名だけ、 2列目をフルパス にしたいのですが 上手くいきませんでした。
ttyp03

2018/06/27 00:50

どう上手くいかないのか書いてください。
退会済みユーザー

退会済みユーザー

2018/06/27 00:53

ttyp03さん〉 1列目にフルパス 2列目もフルパス がリストボックスに表示されてしまいます。 2列目は良いのですが 1列目にファイル名だけを表示させたいのですが
ttyp03

2018/06/27 00:57

以下の行にブレークポイントを置いて、ステップ実行後のFilenameの値を見てみてください。 Filename = Mid(Target,InstrRev(Target,"\")+1) また以下の行にブレークポイントを置いて、Filenameの値を見てください。 .List(BookInput.ListCount - 1, 0) = Filename どちらもファイル名になっていないとおかしいですが、どこでダメになっているのか確認を。
退会済みユーザー

退会済みユーザー

2018/06/27 01:09

ttyp03さん〉 デバッグした結果 Filename = Mid(Target,InstrRev(Target,"\")+1) のFilenameの値がフルパス+ファイル名になっており .List(BookInput.ListCount - 1, 0) = Filename のFilenameの値もフルパス+ファイル名になっていました。 結果どちらもフルパス+ファイル名になっていることがわかりました。
ttyp03

2018/06/27 01:11

では、Targetの値に問題がありそうなので、どうなっているか確認してください。
退会済みユーザー

退会済みユーザー

2018/06/27 01:19 編集

ttyp03さん〉 質問した際に下記のカレントディレクトリを指定してるコードが質問した時のコードに抜けていました。 CreateObject(¨WScrpt.Shell¨).CurrentDirectory = ¨¥¥◯◯¥△△~¨ この質問での1列目にフルパス+ファイル名が出てきてしまう現象と関係ありますか?
退会済みユーザー

退会済みユーザー

2018/06/27 01:18

ttyp03さん〉 TargetもFilenameと同じ値でした
ttyp03

2018/06/27 01:21

イミディエイトウィンドウでTargetに入っている値を使って次のようにするとファイル名取得できますか? ?Mid("Targetの値",InstrRev("Targetの値","\")+1)
退会済みユーザー

退会済みユーザー

2018/06/27 01:56

ttyp03さん〉 試してみたのですが フルパス+ファイルが取得されちゃいました。
ttyp03

2018/06/27 01:59

Targetにはきちんとフルパス名が入っていて、パスの区切りは\マークですよね? Mid関数の引数の\マークが全角になっているとかないでしょうか? 少なくともこちらでは問題なくファイル名が取得できているので何かミスしていると思います。 回答したコードをコピペしてますよね? 自分で打ち込んだりしてないですよね?
退会済みユーザー

退会済みユーザー

2018/06/27 02:51

ttyp03さん〉 すみません。パスの区切りが ¥¥◯◯¥△△~ \ではなく¥になっています これは関係ありますか?
退会済みユーザー

退会済みユーザー

2018/06/27 03:06

ttyp03さん〉 Filename = Mid(Target,InstrRev(Target,"\")+1) から Filename = Mid(Target,InstrRev(Target,"¥")+1) に変えて1列目にファイル名を表示することができました。
ttyp03

2018/06/27 03:08

?何が変わったんですか?
退会済みユーザー

退会済みユーザー

2018/06/27 03:36

バックスラッシュから¥に変えました パスの区切りがバックスラッシュではなく¥でした。
ttyp03

2018/06/27 04:02

どこでバックスラッシュが入ったんでしょうか・・・ このページ内でも全て\マークで表示されていたのでそうだと思っていたのですが。 まあ何にしても解決してよかったです。
ttyp03

2018/06/27 04:19

Mac使ったことないですけど、このページからのコピペでもそうなるんですかね?謎。
退会済みユーザー

退会済みユーザー

2018/06/27 05:01

osはwindows7です 回答ありがとうございました
ExcelVBAer

2018/06/27 07:27

こちらもWin7なんですが、再現してませんね。。。 \ エンマーク / バックスラッシュ
ttyp03

2018/06/27 07:42

過去の誰かの回答でバックスラッシュが混入しているのかと思って遡ってみましたがそれらしき痕跡はなし。 ちなみにバックスラッシュって日本語環境では¥マークと同一です。 (キーボードの「ろ」のキーを押しても入力されるのは「\」) 質問者さんが「バックスラッシュから¥に変えました」と言っているくらいですから、表示上バックスラッシュが表示されている、つまり全角のバックスラッシュ「\」が入っていたなんてことはないでしょうか。 いやしかしこれ入力するのも面倒なんで違うか。 やはり謎。
退会済みユーザー

退会済みユーザー

2018/06/27 08:48

ちなみにteratailはAndroidスマホで見てます 関係あるかわかりませんが
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問