No.3ベストアンサー
- 回答日時:
Office のライブラリーにあるダイアログも使えそうにないですね。
パッと確認してみましたが、Visio はダイアログ系が少ないですね。
であるならば、大昔からある手法でどうでしょうか。
GetOpenFileName という API を叩く方法です。
昔の VB 6.0 や Access 当たりではポピュラーな手法だったのでサンプルもたくさん転がっています。
http://www.google.com/search?hl=ja&lr=lang_ja&ie …
ありがとうございました!できました!
教えて頂いた方法は全く知りませんでした。VBAも奥が深いですね。
リンク先のサイトに載っていたものをVisioにあわせて修正したものをここに掲載しておきます。以下のコードは、CommandButton1を有するUserFormを作って、その中に書きます。
Option Explicit
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Private Const OFN_ALLOWMULTISELECT = &H200
Private Sub CommandButton1_Click()
Dim Fkouzou As OPENFILENAME
Dim lngRet As Long, NULLPos As Long
Dim FileName As String
With Fkouzou
.flags = OFN_ALLOWMULTISELECT
.lStructSize = Len(Fkouzou)
.lpstrInitialDir = ThisDocument.Path
.lpstrFilter = "GIF(*.gif)" & vbNullChar & "*.gif"
.nMaxFile = 256
.lpstrFile = String(256, vbNullChar)
End With
lngRet = GetOpenFileName(Fkouzou)
If lngRet = 0 Then 、
MsgBox (vbNullString)
Else
MsgBox (Left(Fkouzou.lpstrFile, InStr(Fkouzou.lpstrFile, Chr(0)) - 1))
End If
End Sub
No.2
- 回答日時:
もともとはVBS(WSH)のもののようですが
Sub test01()
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "All Files|*.*"
objDialog.InitialDir = CurDir
intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit
Else
MsgBox objDialog.Filename
End If
End Sub
はエクセル標準モジュールでも動くようです。
VISIOのVBAでも動かないかやってみてください。
1つしか選択できないが、繰り返し選択させるではダメですか。
MultiSelectはたぶんダメではないかと。
ーー
また、上記SUB,End Subを除いたものをメモ帳に貼り付け
拡張子.VBSでデスクトップに保存し、そのアイコンをダブルクリックしても、「ファイルを開く」ダイアロウグが出てきました。
私のどの環境が効いているのかわからないのですが。
この回答への補足
ご回答ありがとうございます。
Visioで試してみましたが、「ActiveXコンポーネントはオブジェクトを作成できません。」というメッセージが出て動きませんでした。ただ、Excel(バージョンは2007です。)でも同じメッセージが出て動きませんでした。拡張子.VBSでデスクトップに保存しても同様でした。
WSH特有のDLLか何かが必要ということでしょうか。ちなみに、VBはよく使っているのでインストールしていますが、WSHを含むVBSは使ったことがありません。
No.1
- 回答日時:
Visio VBAのことはわかりませんが
ExcelVBAでは
Application.FileDialog(msoFileDialogFilePicker)
でファイル選択をさせることができます。
使い方は下のコードを参照してください。
Sub ss()
Dim FLDname As String
Dim fname As String
FLDname = "e:\開発\vbs\" & Range("A2") & "*.vbs"
fname = ""
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = FLDname
.AllowMultiSelect = false
If .Show = True Then
fname = .SelectedItems(1)
End If
End With
Debug.Print fname
End Sub
複数ファイルの場合はAllowMultiSelect をTrueにして
SelectedItems()を配列で受けます。
あるのかなぁ
ご回答ありがとうございます。
しかしながら、FileDialogもVisioにはありません。
Visioに関してご回答頂ければ幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CAD・DTP Autocad Scriptファイルからの入力とコマンドラインからの入力が違う 1 2023/08/01 09:13
- Windows 10 ネットワークプリンターにファイルを直接送る方法・コマンドないですか?(´・ω・`) 3 2023/03/13 23:15
- Excel(エクセル) エクセルからビジオのリンク貼り付け 1 2023/03/30 17:51
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- Excel(エクセル) 「Excelのオプション」の「ユーザーインターフェイスのオプション」の設定値をVBAで取得したい 1 2022/07/31 23:49
- Visual Basic(VBA) Outlook VBAについて 1 2023/07/10 12:41
- Visual Basic(VBA) Application.Dialogs(xlDialogFileDelete).Showの件 1 2023/02/22 10:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2022/04/01 12:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
make test って何をするための...
-
AccessVBAで実行時間を指定する...
-
バッチファイルを使ってテキス...
-
コマンドプロンプトで、特定の...
-
FTPコマンドを非表示にする
-
ショートカットをデスクトップ...
-
バッチファイルで実行コマンド...
-
シェルスクリプト内のcdで、カ...
-
[MATLAB] データ型を指定した変...
-
【LINUX】sudoコマンドについて
-
シェルスクリプト(.sh)で、10進...
-
GNUPLOTでのGIFグラフ出力
-
コマンドプロンプトでテキスト...
-
bashからFTPコマンドのステータ...
-
バッチコマンドのIF文(条件...
-
バッチファイルで文字列を順番...
-
シェルスクリプトで最初にサブ...
-
シェルの「:コマンドが見つか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
ショートカットをデスクトップ...
-
make test って何をするための...
-
コマンドプロンプトをクリック...
-
バッチコマンドのIF文(条件...
-
シェルの「:コマンドが見つか...
-
findstrでヒットした1行前の文...
-
ftpコマンドを実行すると「425 ...
-
コマンドプロンプトで、特定の...
-
Pythonで単純にファイルを結合...
-
コマンドプロンプトでファイル...
-
コンピュータ名をファイル名に...
-
バッチファイルを使ってテキス...
-
SSH接続でwindowsサーバのコマ...
-
バッチファイルで実行コマンド...
-
フォルダ、ファイル操作に最適...
-
バッチファイルでdiskpart.exe...
-
AccessVBAで実行時間を指定する...
-
2つ目の「pause」は無効?
おすすめ情報