No.15ベストアンサー
- 回答日時:
こんな感じで。
[標準モジュール側]
Option Explicit
Public FILEPATH As String
Public Sub FilePathGet()
UserForm1.Show vbModal
MsgBox FILEPATH
End Sub
[ユーザーフォーム側]
Option Explicit
Private Sub UserForm_Activate()
Dim I As Integer
Dim strFileName As String
Dim strWorkFileName As String
Dim strCurrentDirectory As String
Dim strCurrentDrive As String
'ドライブ名の保存
strCurrentDrive = Left$(CurDir$, 1)
'ディレクトリ名の保存
strCurrentDirectory = CurDir$
'読み込み専用のチェックボックスを隠す&エクスプローラスタイル
CommonDialog1.Flags = cdlOFNHideReadOnly + cdlOFNExplorer
'規定値をテキストファイルだけ抽出するように設定
CommonDialog1.Filter = "テキストファイル(*.txt)|*.txt|すべてのファイル(*.*)|*.*"
'キャンセル時のエラーナンバーを取得するように設定
CommonDialog1.CancelError = True
'エラーが発生してもプログラムを続行
On Error Resume Next
'コモンダイアログウインドウを「ファイルを開く」形式で表示
CommonDialog1.ShowOpen
'キャンセル時の処理
If Err.Number = cdlCancel Then
'エラーのクリア
On Error GoTo 0
'Command_Endに飛ぶ。
GoTo Command_End
End If
'その他のエラー時の処理
If Err.Number <> 0 Then
'エラーの番号と、エラーメッセージを表示
MsgBox Format$(Err.Number) & ":" & Err.Description, vbOKOnly + vbExclamation, "エラーです。(T_T)"
'Command_Endに飛ぶ。
GoTo Command_End
End If
strFileName = CommonDialog1.Filename
For I = Len(strFileName) To 1 Step -1
If Mid$(strFileName, I, 1) = "\" Then
'ファイルのパス名を取得する。
FILEPATH = Mid$(strFileName, 1, I - 1)
Exit For
End If
Next
Command_End:
'ドライブを元に戻す。
ChDrive strCurrentDrive
'ディレクトリを元に戻す。
ChDir strCurrentDirectory
Unload Me
End Sub
みなさま本当にありがとうございました。
非常に勉強になりました。
うまくいきそうです。
特に、kakusukeさん、2chさん、たくさんのご回答ありがとうございます。
どちらを20ptにすればいいのか悩みましたが、2chさんには申し訳ありませんが、先着のkakusukeさんに20ptとさせていただきました。
またよろしくお願いします。
No.17
- 回答日時:
Q.#2の方法で、・・・とエラーが返されてしまいます。
やり方違いますか?A.こちらも同じエラーが出た
Q.VB.NETだったら・・・VB6.0とかよりも良くないんでしょうか。
A.あまりVB.NETの必要性を感じておりません。
まわりにも.NETユーザがおりません。
ここの掲示板もそうだけど、どこでも、
環境:VB.NET
と書いてあると、一気にレスが減ります。
それに将来性もあまり無いように思います。
MS曰く「XMLとの連携が・・・」
というのがあるけど、VB6でも、ある程度はできます。
PGなの?
VBAができるならVB6がよいと思うけど、他の人と差をつけたいのであれば、別のスキルを積んでおいた方がよいと思う。
オブジェクト指向言語を理解すると、VBのスキルも自然に上がると思うし。
だからC・Javaなど
あとは脱Winをすると、なお良い。Unix系
No.16
- 回答日時:
>フォーム(EXCELではユーザーフォーム)が無いと出来ないみたいです。
いやOCXを参照設定したら、オブジェクトをコーディングで生成することが可能。
[ウィンドウズ\system32\Comdlg32.ocx]を参照設定
Private Sub Test()
On Error GoTo PGMERR
Dim objDlg As CommonDialog
Set objDlg = New CommonDialog
With objDlg
.CancelError = True
.DialogTitle = "ぱけらった"
'↓どっちか1個だけ
'.Flags = cdlOFNHideReadOnly Or cdlOFNCreatePrompt '存在しないファイルを作成する場合
'.Flags = cdlOFNHideReadOnly Or cdlOFNFileMustExist '存在しないファイルを許さない場合
.InitDir = Environ("windir")
.Filter = "テキスト ファイル (*.txt)|*.txt|ピクチャ (*.bmp;*.ico)|*.bmp;*.ico"
.Filename = "Format.exe"
.ShowOpen
MsgBox .Filename
End With
PGMEND:
Set objDlg = Nothing
Exit Sub
PGMERR:
MsgBox "キャンセルした"
GoTo PGMEND
End Sub
No.14
- 回答日時:
#2です。
フォーム(EXCELではユーザーフォーム)
が無いと出来ないみたいです。
もともとフォームに貼り付けて
使うものですし。
マクロが実行するタイミングで
フォームを読み込んで使用してください。
(xxxx(フォーム名).SHOW)
とモジュールに書き込むとフォームが開かれ、
Form_Activateイベント内で、
コモンダイアログの
SHOWを行って、
コモンダイアログウィンドウを
閉じるときに、
UNLOAD フォーム名
と打ってあげれば大丈夫です。
結構端折ってます。
分からない場合は
スレッドを新たに立てて頂いたら、
飛んでいきます。
No.13
- 回答日時:
>#2の方法で、
>「COMDLG32.DLLを参照設定」
>とありますが、
>Excel Visual Basic Editorで
>「ツール」→「参照設定」→「参照」ボタンで、
>COMDLG32.DLLを選択しても、
>「指定されたファイルへの参照は登録できません」
>とエラーが返されてしまいます。
>やり方違いますか?
#2です。
合ってます。
もしかして、
「commdlg.dll」
を参照しようとした
とかいうことはないですよね?
「COMDLG32.dll」は、
ふつうの「ファイルを指定して保存」の
画面などを表示させるためのものですから、
参照不可ということは無いです。
>VB.NETだったら…
>VB6.0とかよりも良くないんでしょうか。
そんなことは無いですが、
.NETは
まだまだバグが出てくるようなので、
VB6.0のほうがまだましってだけです。
むしろ、ACCESSのモジュールを作るなどして、
勉強したほうが、安上がりでなおかつ、
クライアント/サーバー型の
アプリケーション開発の
効率のよい勉強になると思います。
No.12
- 回答日時:
>vbscriptで
デバッグはメッセージボックスを途中で表示するなり、ファイルにはいたりする、昔ながらの方法でやるのが一番かと
>SとAを打ち間違えたと思ったんですが?
質問者不在で、質意と違う展開になりつつあり
っていうかスレ起こせよw
おもしれー
この回答への補足
質問者です。
たくさんの書き込みありがとうございます。
知識不足で難しいことも多いですが勉強になります。
いろいろ質問したいことがあるのですが、それは改めて質問させていただくとして…
少しだけ質問させてください。
#2の方法で、「COMDLG32.DLLを参照設定」とありますが、Excel Visual Basic Editorで「ツール」→「参照設定」→「参照」ボタンで、COMDLG32.DLLを選択しても、「指定されたファイルへの参照は登録できません」とエラーが返されてしまいます。やり方違いますか?
ちなみに、2chさんのご指摘どおり、VBは持っておらず、使ったこともありません(ToT)。ExcelVBAのみです。VBを使ってみたいと思うのですが、結構高価なようで…。VB.NETだったら1万円台だと思うのですが、安い分、VB6.0とかよりも良くないんでしょうか。
No.9
- 回答日時:
呼んだ?
>1.VBSって何でしょうか?
WSHのことしょう。
フリーでVBモドキを動かせます。
参考URL:http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/wshtop. …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存 2 2022/04/18 13:15
- XML エクセルのマクロについて教えてください。 3 2023/02/06 09:06
- Excel(エクセル) Excel VBA 指定フォルダに格納されている全エクセルファイルに指定シートを挿入する方法について 1 2022/08/22 11:53
- Excel(エクセル) Excel VBAでフォルダが何層にもなっていて最下層の中にCSVファイルがあり最上層のファイルを指 4 2022/06/08 20:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスのクエリでコンパイル...
-
batファイルでレジストリキーの...
-
VBでファイルが開かれているか...
-
access テキストボックスの値取得
-
freadでデータがない場合の読込...
-
NAS上のファイルの使用中が解除...
-
VB実行時エラー75:「パス名が...
-
VBから参照できないCのDLLを使...
-
Returnに対するGoSubがありません
-
Excel VBA でFunctionが呼び出...
-
Access2013にてドラッグ&ドロ...
-
VBA ExecuteExcel4Macro 型が一...
-
EXCELのVBAでの保存方法
-
EXCELVBAでONEDRIVE上への保管...
-
CSVファイルが開かれているかど...
-
EXCELのVBAでWORDが開いてある...
-
fcloseで発生するエラーについて。
-
エラー:インクルードファイル ...
-
【COBOL】read文でエラー
-
csvファイルをvbaで読み...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBでファイルが開かれているか...
-
batファイルでレジストリキーの...
-
gccを行ってもexeファイルが生...
-
「パス名が無効です」の発生原因
-
Returnに対するGoSubがありません
-
アクセスのクエリでコンパイル...
-
NAS上のファイルの使用中が解除...
-
VBから参照できないCのDLLを使...
-
PowerShellを使って関連付けら...
-
Adobeのプレミアプロの書き出し...
-
EXCELのVBAでWORDが開いてある...
-
FTPの送信結果を検知したい
-
access テキストボックスの値取得
-
エクセルマクロでエラーの原因...
-
【COBOL】read文でエラー
-
VB6 Dir関数で52エラー発生
-
VBA ExecuteExcel4Macro 型が一...
-
Access2013にてドラッグ&ドロ...
-
freadでデータがない場合の読込...
-
ファイルクローズ(fclose)でエ...
おすすめ情報