コマンドボタンを押すと「ファイル名を選択」ダイアログボックスが開き、
そこで選んだファイル名がテキストボックスに表示される、という
フォームをACCESS97で作成したいのですが、ダイアログボックスを表示させる
ために何という関数を使えば良いのかが分かりません。

宜しくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

「Common Dialog Control」というActiveXを使うと簡単ではないでしょうか。


フォームデザイン時のツールボックスの最後に金槌とレンチをクロス
させたようなアイコンで「コントロールの選択」というのが
あるかと思います。これの「Microsoft Common Dialog Control」
を使うと早くできると思います。
もし「コントロールの選択」に無ければ[ツール]→[ActiveXコントロール]
で[comdlg32.ocx](多分システムフォルダにあるかと思います)という
AxtiveXを登録すれば「コントロールの選択」で選択できるはず。

使い方を簡単に、、、([cmndlg]というコントロールとして)
Me!cmndlg.ShowOpen  'ダイアログボックスを表示
Debug.Print = Me!cmndlg.FileName  '選択したファイル名を表示

その他のプロパティ・メソッド等はプロパティページや本、
VBのヘルプ等を参照してください。
フォントの選択や色の選択など、様々なダイアログボックスが
できたんじゃなかったっけかな、、、(うろ覚え)
    • good
    • 0
この回答へのお礼

ありがとうございました。
ActiveXってすごいんですね。

お礼日時:2002/01/16 13:39

普段Excelは使いますがACCESSは使わないので、はずしているかもしれませんけど。


ExcelのVBAには、
Application.GetOpenFilename()
があります。「ファイル名を選択」ダイアログボックスです。
同じものが多分ACCESSにもあると思います。
使い方はHELPを参照して下さい。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qイタリア語の"chi"の発音について質問します

Aさん:La macchina, chi la guida? Non so guidare.
Bさん:Neanch'io.
Aさん:Allora, chi l'ha portata?

以上はCD付きのイタリア語講座からです。男声の吹き込み者は最初のchiを「くぃ」、最後のchiを「き」と発音(同じ吹き込み者です)していました。2回スキットを読みましたが2回も同じ発音でした。

chiは

1)文中のどの位置にくるかによって発音が異なる
2)速く読めば当然「き」となる
3)個人差、地域差があるので一概には言えない

のどれが正しいのでしょうか。

Aベストアンサー

chiは「き」ですよね、3)個人差だと思います。
ただ、アクセントの落ちるchiだと「きー」や「きぃ」になりますけど、基本的には「き」ですね。

その時は、口に唾が溜まってたとか(~_~;)、下を噛みそうだったとか(-"-)、そんなのだと思いますよ。

QAccess97VBAで「ファイルを開く」ダイアログボックス

事情があり、使い慣れないMicrosoft Access97のVBAでアプリケーションを作成中です。
使用者がHDD上のファイルを選択できるようにしたいのですが、どうすれば良いのでしょうか?
イメージとしては、「ファイルを開く」ダイアログボックスのようなものでファイルを選択・指定できるようにしたいのです。
(Delphiなら、OpenDialogコンポーネントの機能です。)

Aベストアンサー

 
Win32APIのGetOpenFileName関数を使用します。


[サンプルコード]

Option Compare Database
Option Explicit

'[ファイルを開く]と[ファイルを保存]ダイアログボックスの為の構造体宣言
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

'[ファイルを開く]ダイアログボックスを呼び出すAPI
Private Declare Function GetOpenFileName Lib "comdlg32.dll" _
             Alias "GetOpenFileNameA" (ByRef pOpenfilename As OPENFILENAME) As Long

Private Const OFN_READONLY       As Long = &H1    '[読み取り専用]チェックボックスをオンにする
Private Const OFN_OVERWRITEPROMPT    As Long = &H2    '選択したファイルが存在する場合の上書確認する
Private Const OFN_HIDEREADONLY     As Long = &H4    '[読み取り専用]チェックボックスを表示しない
Private Const OFN_NOCHANGEDIR      As Long = &H8    'ダイアログボックスを開いたときに現在のディレクトリを表示する
Private Const OFN_SHOWHELP       As Long = &H10   'ダイアログ ボックスに [ヘルプ] ボタンを表示する
Private Const OFN_NOVALIDATE      As Long = &H100   '無効な文字を含むファイル名を指定出来るようにする
Private Const OFN_ALLOWMULTISELECT   As Long = &H200   'ファイル名リストボックスで複数選択を可能にする
Private Const OFN_EXTENSIONDIFFERENT  As Long = &H400   'ファイル名の拡張子とlpstrDefExtで指定された拡張子が異なる
Private Const OFN_PATHMUSTEXIST     As Long = &H800   '無効なパスを入力したときに警告メッセージを表示する
Private Const OFN_FILEMUSTEXIST     As Long = &H1000  '既存のファイルだけ入力できるようにする
Private Const OFN_CREATEPROMPT     As Long = &H2000  '現在存在しないファイルを作成するかを確認する
Private Const OFN_SHAREAWARE      As Long = &H4000  '共有違反エラーを無視する
Private Const OFN_NOREADONLYRETURN   As Long = &H8000  '読み取り専用属性を持たず、読み取り専用フォルダにないファイルを取得する
Private Const OFN_EXPLORER       As Long = &H80000  'エクスプローラに似たダイアログボックスにする
Private Const OFN_NODEREFERENCELINKS  As Long = &H100000 'ショートカットを実行しない
Private Const OFN_LONGNAMES       As Long = &H200000 '長いファイル名を使用する

Public Function GetFileName(ByRef hwnd As Long, _
              ByVal strPath As String) As String
                
  Dim ofn     As OPENFILENAME
  Dim strFileName As String
  Dim strTmp   As String
  Dim lngRet   As Long
  Dim i      As Long
  
  ' ダイアログ ボックスのオプションを設定します。
  With ofn
    '親Windowの指定
    .hwndOwner = hwnd
    'アプリケーションのインスタンスを指定
    .hInstance = 0
    .lpstrCustomFilter = vbNullString
    .nMaxCustFilter = 0
    .lpfnHook = 0
    .lpTemplateName = 0
    .lCustData = 0
    'フィルタの種類を設定
    .lpstrFilter = "すべてのファイル (*.*)" & vbNullChar & "*.*" & vbNullChar
    'アクティブなフィルタの番号を設定
    .nFilterIndex = 1
    '最大ファイル長の設定
    .nMaxFile = 511
    'ファイルのタイトルを受け取るポインタ
    .lpstrFileTitle = String$(512, 0)
    'ファイル名の最大長を設定
    .nMaxFileTitle = 511
    'デフォルトディレクトリの設定
    .lpstrInitialDir = strPath
    .lpstrDefExt = ""
    'サイズの設定
    .lStructSize = Len(ofn)
    'ダイアログのタイトルを設定
    .lpstrTitle = "ファイルを選択してください。"
    '[ファイル名]ボックスの内容を設定
    .lpstrFile = String$(512, 0)
    'オプションの設定
    .flags = OFN_HIDEREADONLY  ' + OFN_PATHMUSTEXIST
  End With
  lngRet = GetOpenFileName(ofn)
  
  If lngRet = 0 Then
    GetFileName = ""
    Exit Function
  End If
  
  lngRet = InStr(ofn.lpstrFile, vbNullChar)
  
  If lngRet <> 0 Then
    ofn.lpstrFile = Left$(ofn.lpstrFile, InStr(ofn.lpstrFile, vbNullChar) - 1)
  End If
  
  ' パスとファイル名を返します。
  strFileName = Trim$(ofn.lpstrFile)
  
  GetFileName = strFileName
  
End Function

 
Win32APIのGetOpenFileName関数を使用します。


[サンプルコード]

Option Compare Database
Option Explicit

'[ファイルを開く]と[ファイルを保存]ダイアログボックスの為の構造体宣言
Private Type OPENFILENAME
  lStructSize     As Long   '構造体のサイズ
  hwndOwner      As Long   'ダイアログボックスを所有するウィンドウのハンドル
  hInstance      As Long   'アプリケーション インスタンス
  lpstrFilter     As String  'フィルター
  l...続きを読む

Qa couple of について

英会話の本に「for a couple of weeks」を「2週間」と訳していました。
いろいろ調べたのですが、「2,3週間」訳していることもありました。
「for a couple of weeks」は厳密な2週間(例えばfor two weeks)ではなく、大体2週間という感じなのでしょうか?

また、a few と a couple of の違いも教えて下さるとうれしいです。

ご教授おねがいします。

Aベストアンサー

2週間ではないでしょうか。だいたいの期間を言っていてその期間が2週間くらいということなので、2,3週間と訳すことも可能なのかもしれません。

a fewについては、おおざっぱに少量のという意味しかなく、2,3という意味がそもそもないそうです。きいたはなしですが、料理の最中に、a few beansといって、てでおおかまに豆をつかんだばらばらいれたというはなしをきいたことがあります、2,3どこらか、20粒くらいはいったらしいです。

これにたいして、a couple of はめがねとかずぼんとか、はさみとか、一対でひとつになっているものをかぞえるときにつかうので、あきらかに2を指す場合がたくさんあるということで、基本は2と訳していいのだと理解しています。

ただし、2,3週間のようなあいまいさもふくむことができるとおもうので、締切などがかかわってくる場合には、締切日などを日付で確認したほうがいいかとおもいます。

QAccessのOLEオブジェクトのファイル名/更新日時をフォームに表示

よろしくお願い致します。
AccessのOLEオブジェクト(画像ファイル等)を、アイコンでフォームに表示させているのですが、同時にファイル名とそのファイルの作成/更新日時を表示させたく思うのですが、可能でしょうか?
基本的な質問で申し訳ありません。
不足している情報がありましたら御質問ください。
よろしくお願い致します。

Aベストアンサー

Label1・2・3をフォームに用意してLabelに表示させるようにするには
参照設定でMicrosoftScriptingRuntime の参照にチェックが必要。
下記でできるはずなのですが

Dim Ocn   As New FileSystemObject
Dim OcnFile As File
      Set OcnFile = Ocn.GetFile(フルパス\ファイル名.拡張子")
      Label1.Caption = "ファイル名:" &OcnFile.Name
      Label2.Caption = "作成日時:" & OcnFile.DateCreated
      Label3.Caption = "最終更新日時:" & OcnFile.DateLastModified
  Set OcnFile = Nothing

Qa couple of days と 2日間の違い

外人と話していると、彼らはいつも a couple of days とか a couple of hours とか言いますね。

もし、two days とか two hours とか私が言ったら、彼らはどんな感じで受け取るのでしょうか?

また、two weeks よりも fortnightを使うのが普通なんでしょうか?

宜しくお願いします。

Aベストアンサー

★もし、two days とか two hours とか私が言ったら、彼らはどんな感じで受け取るのでしょうか?
→two daysの方が厳密です。本当に2日という意味ですが、a couple of daysですと、2~3日というような、ぼやけた表現と受け取ります。

★また、two weeks よりも fortnightを使うのが普通なんでしょうか?
→いいえ。fortnightは、fourteen nightを略した形で、主にイギリス英語で使われる表現ですが、今の時代、廃れた表現です。

以上、ご参考になればと思います。

Qファイルを保存した直後に、フォルダを開くダイアログボックスが表示されてほしい。

WindowsXPを使用しています。
CSVファイル等をデスクトップ上のフォルダに保存すると、
直後にフォルダを開くダイアログボックスが画面上に展開されて
いたのに、ある日突然展開されなくなりました。
しかたがないので、デスクトップ上にあるフォルダをマウスで
クリックして開いていますが不便です。
元の様にするには、どうしたらよいか教えて下さい。御願いします。

Aベストアンサー

エクスプローラのオプションからファイルタイプタブをクリックし
CSVファイルをクリック、詳細設定ボタンをクリックして
ダウンロード後にひらく確認をする。という項目にチェックをいれる。

Qcouple of days

教えていただきたいのですが。
Couple of days と a few daysはどちらが日数的には多いのでしょう?

couple of daysは2~3日
a few daysは数日・・・・・・・・・・

ニュアンス的にはa few daysのほうが多いような・・・

でもほとんどの訳って、a fewでも2.3日って書いてあるような

Aベストアンサー

厳密な違いはありませんが、強いて比較するなら私は「couple of days」のほうが日数が少ないと感じます。ちなみに、「a few」は厳密な数を特定できませんが、「a couple」はハッキリと「2」と訳すことも可能です。

Qマクロ コマンドボタンを押すともう一つコマンドボタン

マクロ初心者です。宜しくお願いします。

コマンドボタンをクリックしたら、指定して開いたファイル上にもうひとつコマンドボタンを追加で表示させることは可能でしょうか?

<詳細>
・コマンドボタンを押す
・エクセルのファイルを指定して開く

・指定して開いたファイルの「Sheet1のA1」に新たにコマンドボタンを出現させる。
・「Sheet1のA1」に現れたコマンドボタンを押すとそのファイルを印刷する。

みたいな事をしたいのですが、可能でしょうか??
宜しくお願いします。

Aベストアンサー

こんにちは。

#2/3様たちがおっしゃる

>その生成されたコマンドボタンに処理をつけるのが難しいんです。
>コマンドボタンへのマクロ登録は面倒だと思います。

それは、今の時代では、VBAのおきて破りのコードです。マクロ・ウィルスの技術と同じことだから、セキュリティを外さないといけないわけです。マクロでマクロを書くというのは、今は書かないことになっています。(とはいっても、自主規制です、無頓着な人は書くでしょうし、それでここで削除されることはありません) 私は、書かないようにしてきているだけです。


その代償として、

#3さんのオートシェイプに、マクロを付ける方法

'-------------------------------------------
'コマンドボタン(コントロールツール)
'シートモジュール
Private Sub CommandButton1_Click()
 Call ShapeAdd_Macro1
End Sub

'-------------------------------------------
'標準モジュール
'-------------------------------------------

Sub ShapeAdd_Macro1()
Dim rng As Range
'オートシェイプを置く場所
 Set rng = Range("B1:B2")
 With ActiveSheet.Shapes.AddShape _
  (msoShapeRectangle, Left:=rng.Left, _
            Top:=rng.Top, _
            Width:=rng.Width, _
            Height:=rng.Height)
  
  .OnAction = "TestMacro"
 End With
End Sub
Sub TestMacro()
 MsgBox "TestMarcoが実行されました。", vbInformation
End Sub

こんにちは。

#2/3様たちがおっしゃる

>その生成されたコマンドボタンに処理をつけるのが難しいんです。
>コマンドボタンへのマクロ登録は面倒だと思います。

それは、今の時代では、VBAのおきて破りのコードです。マクロ・ウィルスの技術と同じことだから、セキュリティを外さないといけないわけです。マクロでマクロを書くというのは、今は書かないことになっています。(とはいっても、自主規制です、無頓着な人は書くでしょうし、それでここで削除されることはありません) 私は、書かないようにし...続きを読む

QI will play in a couple big parades this week.

英語初心者です。
I will play in a couple big parades this week.

この意味は、「今週、2つの大きなパレードで演奏するつもり」でいいのしょうか?
この a couple といのは、few times のような意味ですか?
それとも、カップル??
自分なりに調べてみましたが、分からないのでどなたか教えていただけないでしょうか。
よろしくお願いします。

Aベストアンサー

a couple (of)~ 二つ三つの
として使用される表現です。

http://eow.alc.co.jp/search?q=a+couple+of

http://eow.alc.co.jp/search?q=a+couple+of+days

I will play in a few big parades this week.
と言い換えることも可能です。

日本語訳は御解釈の通りで全く問題ありません。

QAccess2000 単票フォーム上のボタンを押すと、同じIDを持つフォームが開くよういしたい

Accessの初心者です。
本当に超がつく初心者ですので、解説もしてくださるととても嬉しいです。
宜しくお願いします。



請求書番号連番を取得するフォーム(テーブルも)があります。
請求書番号は特殊な為、現時点ではじか打ちで作成しています。
それとは別に、顧客ごとに請求データを入力するフォーム(テーブルも)があります。
その二つは、請求書番号でひもづけています。



<請求書番号連番取得フォーム/帳票>
・請求書番号
・請求日
・顧客ID

<請求データの入力フォーム_A社/単票> ※これがB社、C社と複数存在します。
・顧客ID
・請求書番号
・商品CD


<請求書番号連番取得フォーム/帳票>上にボタンをつくり、そのボタンを押すと、
同じ顧客IDを持つ<請求データの入力フォーム/単票>が開けたらな・・・と思っているのですが、
わかりますでしょうか・・・・。

どうか、宜しくお願い致します。



<請求書番号連番取得フォーム/帳票>
_________________________________________________________________
請求書番号|請求日 |顧客ID| 
_________________________________________________________________
09BB87ZZ1|2009/04/01|0001 |■(ボタン)
--------------------------------------------
09BS87AA2|2009/04/10|0003 |■(ボタン)
--------------------------------------------

↑この1行目の■(ボタン)を押すと、顧客ID「0001」の請求書番号「09BB87ZZ1」の単票フォームが開き、
(請求書番号欄に「09BB87ZZ1」が入っている。)
2行目の■(ボタン)を押すと、顧客ID「0003」のフォームを開く・・・というような動きです。


説明が下手で申しわけありません。
お願いします。

Accessの初心者です。
本当に超がつく初心者ですので、解説もしてくださるととても嬉しいです。
宜しくお願いします。



請求書番号連番を取得するフォーム(テーブルも)があります。
請求書番号は特殊な為、現時点ではじか打ちで作成しています。
それとは別に、顧客ごとに請求データを入力するフォーム(テーブルも)があります。
その二つは、請求書番号でひもづけています。



<請求書番号連番取得フォーム/帳票>
・請求書番号
・請求日
・顧客ID

<請求データの入力フォーム_A社/単票>...続きを読む

Aベストアンサー

#2です。

意味合いが違ってましたね。

「顧客ID」に対応した「フォーム名」情報がテーブルで作られているとします。
もしくは、「顧客ID」と A社、B社、C社 などが紐付けされ、その社ごとに「フォーム名」情報が得られるとすると

ボタンがクリックされた時の処理例)

Private Sub ボタン_Click()
  Dim sForm As String
  Dim sWhere As String
  Dim sArg As String

  sWhere = "請求書番号='" & Me.請求書番号 & "'"
  sArg = "'" & Me.請求書番号 & "'"
  sForm = DLookup("フォーム名","テーブル名/クエリ名","顧客ID='" & Me.顧客ID & "'")
  DoCmd.OpenForm sForm, , , sWhere, , , sArg
End Sub


呼ばれた各「請求データの入力フォーム」での処理

Private Sub Form_Open(Cancel As Integer)
  If (Me.Recordset.RecordCount = 0) Then
    Me.請求書番号.DefaultValue = Me.OpenArgs
    DoCmd.GoToRecord , , acNewRec
'☆    Me.ラベル1.Caption = "新規"
'☆  Else
'☆    Me.ラベル1.Caption = "既存"
  End If
End Sub


※「顧客ID」に対応した「フォーム名」情報ではなく、「会社名」なり「会社ID」が得られるのであれば以下のような感じかと
(会社IDが得られるとした場合)

Private Sub ボタン_Click()
  Dim sForm As String
  Dim sWhere As String
  Dim sArg As String

  sWhere = "請求書番号='" & Me.請求書番号 & "'"
  sArg = "'" & Me.請求書番号 & "'"
  Select Case DLookup("会社ID","テーブル名","顧客ID='" & Me.顧客ID & "'")
    Case 1
        sForm = "請求データの入力フォームA"
    Case 2
        sForm = "請求データの入力フォームB"
    Case 3
        sForm = "請求データの入力フォームC"
    Case Else
        sForm = "請求データの入力フォームETC"
  End Select
  DoCmd.OpenForm sForm, , , sWhere, , , sArg
End Sub

#2です。

意味合いが違ってましたね。

「顧客ID」に対応した「フォーム名」情報がテーブルで作られているとします。
もしくは、「顧客ID」と A社、B社、C社 などが紐付けされ、その社ごとに「フォーム名」情報が得られるとすると

ボタンがクリックされた時の処理例)

Private Sub ボタン_Click()
  Dim sForm As String
  Dim sWhere As String
  Dim sArg As String

  sWhere = "請求書番号='" & Me.請求書番号 & "'"
  sArg = "'" & Me.請求書番号 & "'"
  sForm = DLookup(...続きを読む


人気Q&Aランキング

おすすめ情報