- ベストアンサー
フォルダー内の特定excelファイルを開く方法
フォルダー内の特定excelファイルを開く方法 フォルダー内にたくさんエクセルファイルがありますがACCESSのフォームから特定excelファイルを開きたいです。したいことはフォームの中にテキストボックスを配置し、中にエクセルファイルの名前に記入し、実行ボタンを押すと一致するファイル名前を開くようになってほしいです。 どうせればよいかわかりません。ACCESSの初心者ですので助けください!
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
遅くなりました。。。 さてAcc2007でどうかな? エラーが発生した場合はエラーメッセージとエラーの発生した行をお知らせください Private Sub 見積番号_Click() Dim basePath As String Dim trgPath As String Dim pathList As String Dim i As Integer Dim pathChoice() Dim varAns As Variant Dim pathX As String basePath = "C:\全社員共通\[見積書]\見積\" trgPath = Dir(basePath & me!見積番号 & "*.xls") If trgPath = "" Then MsgBox me!見積番号 & " が見つかりません" Exit Sub End If Do Until trgPath = "" ReDim Preserve pathChoice(i) pathX = i & " ==> " & trgPath pathList = pathList & vbCrLf & pathX pathChoice(i) = basePath & trgPath trgPath = Dir i = i + 1 Loop varAns = InputBox(pathList, "=== 番号で選んでね ===") If varAns = "" Or IsNumeric(varAns) = False Then Exit Sub End If If Int(varAns) > i Or Int(varAns) < 0 Then Exit Sub CreateObject("shell.application").shellexecute pathChoice(varAns) End Sub
その他の回答 (3)
- nicotinism
- ベストアンサー率70% (1019/1452)
キリが無いので回答はこれまでにしますが、 コンパイルが通るのか? 参照設定にDAO3.6が設定されているか? を確認してください。 PS. Me![見積番号].DefaultValue = rs![見積番号] + 1 は Me![見積番号] = rs![見積番号] + 1 で十分でしょう。
お礼
大変助かったです。これでエラーもなくなりましたし、複数の見積番号から開きたいファイルもお陰様で開けるようになりました。 ありがとうございました。またよろしくお願いします。
- nicotinism
- ベストアンサー率70% (1019/1452)
>中にエクセルファイルの名前に記入し は面倒じゃ有りませんか? 年を喰うと昨日の晩飯も覚えてない (^^ゞ。ましてやファイル名なんて・・・。 フォルダが固定できるなら、一覧を表示してユーザから選択してもらった方が 良さそうにも思えます。ファイル数はどれ位? ファイル選択のダイアローグはAccessのバージョンによっては大きく変わりますので まず、OSとAccessのバージョンを教えてもらわんことには。 ※2007だと分かりません Windows XP &ACC2010や2002(多分2003も)だと何とかなるかも? ※※期待しないでね。
補足
こちらの質問はちょっと不足だったのであっちの質問にかわったんです。 OS:Windows XP ACCESSバージョンは2007年です。
- layy
- ベストアンサー率23% (292/1222)
ほかの質問と重なりますが、 EXCELを開くこと と テキストボックスの値でファイル名を構成すること と まずは、ファイルはBOOK1.XLS固定にするとか、分けて考えた方がよいのでは?。 ファイルを開く記載はSUB関数にして、ファイル名を与えるとか、です。 参考になりそうなもの、探してみる。
お礼
お世話になりました。 いろいろありがとうございます。これでやってみようと思いますが急に別のエラーに出ててどうしたらいいか分かりません。 イベント プロパティ指定した式 読み込み時でエラーが発生しました:オブジェクトまたはクラスがこのイベントセットをサポートしていません。 イベント プロパティ指定した式 レコード移動時でエラーが発生しました:オブジェクトまたはクラスがこのイベントセットをサポートしていません。 下記のように命令文があります。 Private Sub Form_Current() 'レコード移動時年度は自動的に次のレコードコッピする Dim rs As DAO.Recordset If Me.NewRecord Then Set rs = Me.RecordsetClone rs.MoveLast Me![見積番号].DefaultValue = rs![見積番号] + 1 End If End Sub Private Sub Form_Load() DoCmd.GoToRecord , , acLast End Sub