tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルACCESS VBAでダイアログを開く
記事No579
投稿日: 2003/12/05(Fri) 13:16
投稿者田村
[OSのVer]:Windows2000    [VBのVer]:ACCESS VBA

ACCESS VBAをはじめて間もない者ですが、よろしくお願いします。

ACCESS VBAでも.NETのようにダイアログを開くことができるのでしょうか?
.NETのときは、下記のように開いていました。

        OpenFileDialog1.Filter = "テキストファイル(*.txt)|*.txt"
        OpenFileDialog1.FileName = ""
        OpenFileDialog1.ShowDialog()

よろしくお願いします.
  

[ツリー表示へ]
タイトルRe: ACCESS VBAでダイアログを開く
記事No583
投稿日: 2003/12/08(Mon) 14:03
投稿者名も無きVBA使い
[OSのVer]:Windows    [VBのVer]:VB.NET  
> [OSのVer]:Windows2000    [VBのVer]:ACCESS VBA
>
>  ACCESS VBAをはじめて間もない者ですが、よろしくお願いします。
>
>  ACCESS VBAでも.NETのようにダイアログを開くことができるのでしょうか?
>  .NETのときは、下記のように開いていました。
>
>         OpenFileDialog1.Filter = "テキストファイル(*.txt)|*.txt"
>         OpenFileDialog1.FileName = ""
>         OpenFileDialog1.ShowDialog()
>
>  よろしくお願いします.
>
        OpenFileDialog1.Filter = "すべてのファイル (*.*)|*.*|" & _
                                "テキスト ファイル (*.txt)|*.txt|"
        OpenFileDialog1.FilterIndex = 2

        form名.OpenFileDialog1.ShowOpen
        form名.text = OpenFileDialog1.FileName

こんな感じで、出来ないでしょうか?

[ツリー表示へ]
タイトルRe^2: ACCESS VBAでダイアログを開く
記事No584
投稿日: 2003/12/08(Mon) 21:48
投稿者田村
> > [OSのVer]:Windows2000    [VBのVer]:ACCESS VBA
>         OpenFileDialog1.Filter = "すべてのファイル (*.*)|*.*|" & _
>                                 "テキスト ファイル (*.txt)|*.txt|"
>         OpenFileDialog1.FilterIndex = 2
>
>         form名.OpenFileDialog1.ShowOpen
>         form名.text = OpenFileDialog1.FileName
>
> こんな感じで、出来ないでしょうか?

OpenFileDialog1が定義されていない。というメッセージが出てしまいました。
参照設定などをかえればよろしいのでしょうか?

[ツリー表示へ]
タイトルRe^3: ACCESS VBAでダイアログを開く
記事No599
投稿日: 2003/12/16(Tue) 10:10
投稿者田村
[OSのVer]:Windows2000    [VBのVer]:ACCESS VBA
すみません。解決しました。
Option Compare Database

Type OPENFILENAME
      lStructSize As Long        '構造体のサイズ
      hWndOwner As Long          '0を指定すると表示位置は左上となる
      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          'OFN_XXX、フラグ
      nFileOffset As Integer      'フルパスのファイル名までのオフセット
      nFileExtension As Integer    '拡張子までのオフセット
      lpstrDefExt As String        'デフォルトの拡張子
      lCustData As Long        '???
      lpfnHook As Long        'フック関数へのポインタ
      lpTemplateName As String      'ダイアログのタイトル名
  End Type

Const OFN_READONLY = &H1 '[読み取り専用] のチェック ボックスをオンにした状態で表示する
Const OFN_OVERWRITEPROMPT = &H2 '既存のファイル名がある場合メッセージボックスを表示
Const OFN_HIDEREADONLY = &H4  '[読み取り専用] チェック ボックスを非表示にする
Const OFN_NOCHANGEDIR = &H8  '他のサブディレクトリから選択不可能
Const OFN_SHOWHELP = &H10  'ヘルプボタンを表示する
Const OFN_ENABLEHOOK = &H20
Const OFN_ENABLETEMPLATE = &H40
Const OFN_ENABLETEMPLATEHANDLE = &H80
Const OFN_NOVALIDATE = &H100  'ファイル名の有効性をチェックしない
Const OFN_ALLOWMULTISELECT = &H200  '複数ファイルを選択可能にする
Const OFN_EXTENSIONDIFFERENT = &H400
Const OFN_PATHMUSTEXIST = &H800  '有効なパス名だけだけを受け取る
Const OFN_FILEMUSTEXIST = &H1000  '指定したファイル名は必ず存在しなければならない
Const OFN_CREATEPROMPT = &H2000  'ファイル名の指定がないときメッセージボックスを表示
Const OFN_SHAREAWARE = &H4000  '共有違反のエラーを無視する
Const OFN_NOREADONLYRETURN = &H8000  'Read Onlyファイルと上書き禁止ファイルディレクトリからの選択
不可能
Const OFN_NOTESTFILECREATE = &H10000
Const OFN_NONETWORKBUTTON = &H20000
Const OFN_NOLONGNAMES = &H40000  '長いファイル名を使用しない
Const OFN_EXPLORER = &H80000  'Windows 95の[ファイルを開く]ダイアログボックスのテンプレート
Const OFN_NODEREFERENCELINKS = &H100000  'ショートカットを使用しない
Const OFN_LONGNAMES = &H200000  '長いファイル名を使用する


Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename
As OPENFILENAME) As Long


  '---------------------------------------------------------------------------
  ' 関数名: GetSaveFilePath
  ' 機能 : ファイルを保存するためのダイアログボックスを表示し、ファイル名、または
  ' ファイルのフルパスを返す
  ' 引数 : (in) RetMode … 0 -> ファイルのフルパスを返す
  '              1 -> ファイル名を返す
  '     (in) Filter … 拡張子設定のフィルタ (省略可能)
  '      (in) InitialDir … ディレクトリ指定 (省略可能)
  '      (in) DialogTitle … ダイアログボックスのタイトル (省略可能)
  ' 返り値 : ファイル名、またはファイルのフルパス キャンセル:空文字
  '---------------------------------------------------------------------------
  Function GetSaveFilePath(ByVal RetMode As Integer, _
                        Optional ByVal Filter As String = "CSVファイル (*.csv)" & vbNullChar
& "*.csv" & vbNullChar, _
                        Optional ByVal InitialDir As String = "C:\", _
                        Optional ByVal DialogTitle As String = "ファイルを名前を付けて保存す
る") As String


      Dim udtOpenFile As OPENFILENAME
      Dim ret As Long


      With udtOpenFile
          .lStructSize = Len(udtOpenFile)    '構造体のサイズ
          .hWndOwner = 0     'オーナーハンドルを指定
          .hInstance = 0    'インスタンス指定
          .flags = OFN_PATHMUSTEXIST Or OFN_HIDEREADONLY Or _
                    OFN_OVERWRITEPROMPT     'フラグを指定する
          .lpstrFile = String(255, Chr$(0))     'ファイル名を格納するバッファを設定
          .nMaxFile = 255          'ファイル名を格納するバッファサイズ
          .lpstrFileTitle = String(255, Chr$(0))     'ファイルのフルパスを格納するバッファ
          .nMaxFileTitle = 255    ' ファイルのフルパスを格納するバッファサイズ
          .lpstrInitialDir = InitialDir '初期ディレクトリ指定
          .lpstrFilter = Filter       'フィルターの設定
          .nFilterIndex = 1        'フィルターインデックスを指定
          .lpstrTitle = DialogTitle    'ダイアログボックスの名前を指定
      End With


      ret = GetSaveFileName(udtOpenFile)


      If ret <> 0 Then
          Select Case RetMode
              Case 0      'ファイルのフルパスを返す
                  GetSaveFilePath = Left$(udtOpenFile.lpstrFile, InStr(udtOpenFile.lpstrFile,
Chr$(0)) - 1)
              Case Else    'ファイル名を返す
                  GetSaveFilePath = Left$(udtOpenFile.lpstrFileTitle, InStr
(udtOpenFile.lpstrFileTitle, Chr$(0)) - 1)
          End Select
      Else
          GetSaveFilePath = ""
      End If


  End Function

こんな感じだそうです。

[ツリー表示へ]