Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
ファイルを開くダイアログについて
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9513#CommentId13977
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2010/1/13 18:38:06
> If デフォルトパスが設定されているか? Then
> sTemp = String(256, Chr(0))
> Call SHGetSpecialFolderPath(Me.hwnd, sTemp, CSIDL_DESKTOP, 0)
> Else
> sTemp = デフォルトパス
> End If
エラーが発生する場合、この部分では True 処理(If ブロック)と False 処理(Else ブロック)の
いずれが処理されていますか?
> cmnDlg.InitDir = Trim$(sTemp)
この部分の処理を見直しください。
sTemp の中身にもよりますが、先の SHGetSpecialFolderPath を通過していた場合、
文字列 sTemp の後半は Chr(0) で埋められているはずです。
しかし Trim 関数では Chr(0) を除去できません。Trim 関数で除去できる文字は、
全角空白(" ")と半角空白(" ")だけであることに注意してください。提示されたコードでは不完全です。
# CommonDialog.InitDir では、Chr(0) 以降の文字列が無視されるため、
# 結果として、この問題に気付きにくいかも知れませんが。
> cmnDlg.ShowOpen <-----------ここでエラーと思います???
ちょっと待ってください。
本当に、そこで発生するエラーが最初の質問にあった
> 1.実行時エラー393 leftプロパティの値の取得は出来ません。
> 2.実行時エラー383 Heightプロパティは値の取得のみ可能です。
という事なのでしょうか?
(提示されたコードには、どこにも left / Height の表示がありません)
本当は、別の箇所でエラーが発生していたりはしませんか?
あるいは、その場所で発生するエラーは、別の内容だったりはしませんか?
> 'ファイルが存在しないとき処理を終了する
> If Dir(msFileName) = "" Then
ShowOpen する前に、cmnDlg の Flags プロパティの値を、どのように設定していますか?
もし、既存のファイルのみを選択させたいのであれば、Dir で判定せずとも、
cmnDlg.Flags = cmnDlg.Flags Or cdlOFNFileMustExist
というコードを事前に入れておくだけで済みますよ。
> ファイル選択ダイアログが表示する前に
> エラーになってしまいます。
あれ? On Error GoTo CANCEL_PROC を組み込んでありますから、この Private Sub cmdRegist_Click() 内で
エラーメッセージが表示される事は無いと思いますよ。
それともこのコードは抜粋で、実際の cmdRegist_Click はもっと複雑なコードなのでしょうか?
(CANCEL_PROC ラベル以下に、エラーの内容を記述するコードが含まれているなど)