[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『FileDialog initialview 変わらない』(tkit)
FileDialogでinitialviewを設定しても、表示が元々Win上で設定している状態から変わりませんでした。
ネット検索しても、無視された、という内容が1件見つかったくらいで、詳しい内容を探せませんでした。
何かご存知の方がいらっしゃいましたら、情報をお願いいたします。
Sub DialogTest() With Application.FileDialog(msoFileDialogFilePicker) With .Filters .Clear .Add "画像データ", "*.jpg" End With .InitialFileName = "D:\" .AllowMultiSelect = False .InitialView = msoFileDialogViewPreview If .Show = -1 Then Debug.Print .SelectedItems(1) End With End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
Excel2007の頃から、OSとExcelのバージョンによって無視されるプロパティの様ですね。
FileDialog InitialView Property doesn't work ! | MrExcel Message Board
https://www.mrexcel.com/board/threads/filedialog-initialview-property-doesnt-work.1099626/
↑とかでもAPIでフックしてプロパティをセットして.. みたいな、 かなり面倒な事をやってるっぽいです。
(白茶) 2021/07/29(木) 11:53
スキャンした画像をExcelシートに貼り付け、最終的にpdfにする業務を自動化しておりまして。
基本的に選択しないような手順にしていますが、どうしても、画像選択をせざるを得ない場合、
出来るだけ、どのファイルか見やすくするため、自動で表示したかった、という状態でした。
紹介いただいたサイトを確認しましたが・・・
まず、無視される事があり得ることをご教示いただけただけで助かりました。
自身で表示変更してもらうようにしてもらいます。
ありがとうございました。
(tkit) 2021/07/29(木) 12:49
UserFormにWebBrowser1とCommandButton1を配置して
プレビューではなく、アイコンサイズを大きく表示の例です。
アイコン以外の表示項目はレジストリによるようです。
Private Sub CommandButton1_Click() Dim xx As Object With Me.WebBrowser1 Set xx = .Document.focuseditem If Not xx Is Nothing Then MsgBox xx.Name End If End With Unload Me End Sub
Private Sub UserForm_Initialize() Const FWF_NOSUBFOLDERS = &H80 'Folderflags: Do not show subfolders
Dim strFol As String 'Target Folder Dim bstrFilterText As String 'FileFilter 演算子は大文字のこと ' bstrFilterText = "*.jpg OR *.pdf" bstrFilterText = "NOT *.ico 分類:=ピクチャ" 'アイコンを除く画像ファイル
strFol = CreateObject("WScript.Shell").specialfolders("MyDocuments")
With Me.WebBrowser1 .Navigate (strFol) .Document.FOLDERFLAGS = FWF_NOSUBFOLDERS .Document.FilterView bstrFilterText .Document.CurrentViewMode = 4 'FVM_DETAILS:Object names and other selected information .Document.IconSize = 128 'default:=16 End With
End Sub
(kazuo) 2021/07/29(木) 18:45
kazuoさん、ありがとうございます。 求めていた過程と結果が得られそうです。
WebBrowser を使うのは初めてでして、ご教示いただいたコードから、フィットした 表示を探したく、調べました。 ・Documentのプロパティをネット検索したがヒットせず。 ・インテリセンス表示すれば、何とかなるかなと、Documentの型をTypenameで調べ、HTMLDocumentが返った。 ・上記型の変数に入れたが、インテリセンスにご教示いただいたプロパティは無い。
恐らく、参照していないライブラリがあると思っているのですが、 ご教示いただけますと助かります。
また、参考になりそうなサイトがありましたら、ご紹介いただきたく。 以上、よろしくお願いいたします。
(tkit) 2021/07/30(金) 11:04
正確な名称は知りませんが、本品は(ファイル)ピッカーではなくエクスプローラーですので、
ダブルクリックするとファイルが開いてしまいますし、右クリックコマンドなども有効です。
個人では使えるかも知れませんが他の方に使っていただくとトラブル発生するかもしれません。
(kazuo) 2021/07/30(金) 21:32
他にUserForm使って自分で頑張る的な方法だと、 お手軽なのは↓こんな感じのでしょうか...
Option Explicit Private WithEvents List1 As MSForms.ListBox Private WithEvents Btn1 As MSForms.CommandButton Private WithEvents Img1 As MSForms.Image Private myPath As String Private Property Get FolderPath() As String FolderPath = myPath End Property Private Property Let FolderPath(newPath As String) If myPath = newPath Then Exit Property myPath = newPath List1.Clear Dim s As String s = Dir(myPath & "*.jpg") Do Until s = "" List1.AddItem s s = Dir() Loop End Property Private Sub Btn1_Click() Dim s As String With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = myPath If .Show = -1 Then s = .SelectedItems(1) & "\" End With If Len(s) Then FolderPath = s End Sub Private Sub List1_Change() Dim s As String If Len(List1.Text) = 0 Then Img1.Picture = LoadPicture() Else s = myPath & List1.Text Img1.Picture = LoadPicture(s) End If End Sub Private Sub UserForm_Initialize() Set List1 = Me.Controls.Add("Forms.ListBox.1", "List1") With List1 .Top = 6!: .Left = 6! .Height = 144!: .Width = 111! End With Set Btn1 = Me.Controls.Add("Forms.CommandButton.1", "Btn1") With Btn1 .Top = 6!: .Left = 132! .Height = 24!: .Width = 72! .caption = "フォルダ選択(O)" .Accelerator = "O" End With Set Img1 = Me.Controls.Add("Forms.Image.1", "Img1") With Img1 .Top = 36!: .Left = 132! .Height = 72!: .Width = 96! .PictureSizeMode = fmPictureSizeModeZoom End With myPath = "D:\" End Sub
(白茶) 2021/07/30(金) 22:35
>すみません。用途とは合っていませんでした。〜 (kazuo) 2021/07/30(金) 21:32
ありがとうございます。 MS公式からIShellFolderViewDualのプロパティの詳細が拾え、各プロパティでの表示確認は出来ました。 kazuoさんの仰る通り、ダブルクリック、右クリックが効きますね。 WebBrowserに上記イベントが用意されていないので、簡単にキャンセル出来ない事は確認出来ました。 開く事や右クリックメニューが出ることは、今回は問題ないですが、Windowsセキュリティから警告が 出るのが厄介ですね。
>他にUserForm使って自分で頑張る的な方法だと、 お手軽なのは↓こんな感じのでしょうか... (白茶) 2021/07/30(金) 22:35
コード教示いただき、ありがとうございます。 WebBrowserのUserFormと拡大表示用でImageのUserFormで作成しようと考えていました。
お付き合いいただいて、大変ありがたく、自身の糧になりました。 本ツールの使用者のPCスキルもそれなりなので、当初通り、 Application.FileDialog(msoFileDialogFilePicker)で 対応しようと考えています。 jpgファイルが何かはっきりしたければ、右クリ→開くで確認でも十分な気がしております。
(tkit) 2021/08/02(月) 09:23
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.