• ベストアンサー

Accessのマクロについて教えてください。

WinXP Access2002です。 現在Accessのあるフォームにコマンドボタンを貼り付けこのボタンをクリック時にマクロでアプリケーションの実行を指定しExcelのファイルを開いています。具体的には c:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE10\EXCEL.EXE D:\EXCEL\AAAY\BBB.XLS です。D:\以下はExcelで作ったファイルの格納場所です。現在これでうまくいっています。 この場合BBB.xlsしか立ちあがりません。これはこれでBBB.xlsだけで用が足りているので何ら問題ないのですがやろうとしていることは¥AAAのホルダーに入っている複数のCCC.xls、DDD.xls・・・・・・等をマクロの途中ダイアログボックス等で仮に今ほしいファイルがXXX.XLSだったとしたら目的のXXX.xlsを指定し開く方法がありますでしょうか。 又これが駄目ならマクロで¥AAAのホルダーまで開く方法はあるのでしょうか。何せAccessのマクロでExcelは立ちあがりますが沢山のホルダーがあるので一歩でも自動で近づきたいのです。方法がありましたらよろしく教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

#2です。 Sub test03() ChDir "c:\my documents\test2" myFname = Application.GetOpenFilename _ ("Excel ファイル (*.xls),*.xls") MsgBox myFname End Sub をエクセルVBAで実行すると、test2フォルダの中のフォルダとエクセルブックの一覧のダイアログが出てきましたが。 http://member.nifty.ne.jp/bear/basis/getopen.htm http://www5c.biglobe.ne.jp/~yamag/data/Soft/VBAProgramingTIPS.html http://www.amy.hi-ho.ne.jp/pepa/pc/tips/excel/xl_vba21.html

noname#18634
質問者

お礼

お手数かけまして有り難うございます。今日はこれから時間がありませんので明日やってみたいと思います。とりあえず有り難うございます。

noname#18634
質問者

補足

いろいろ有り難うございます。上記VBAの "c:\my documents\test2"を 自分の環境に合わせて書き換えて実行しますと ("Excel ファイル (*.xls),*.xls") の行が 赤字になり 「コンパイルエラー 修正候補:行番号または行ラベルまたはステートメント またはステートメントの最後」 とエラーメッセージがでてしまいます。 いろいろ全角にしたり半角にしたりと書いてみましたが 駄目でした。お時間がありましたらよろしくお願いします。

その他の回答 (4)

回答No.5

>myFName = Application.GetOpenFilename("テキスト ファイル (*.txt),*.txt") Excel では実行可能ですが、Access だと、GetOpenFilename が実装されてないのでしょう。Access でやろうとするなら、 Dim ea As Excel.Application Set ea = New Excel.Application myFName = Application.GetOpenFilename("テキスト ファイル (*.txt),*.txt") のようにしなければならないと思います。 が、GetOpenFilename って、ダイアログを開いたときに表示するフォルダの指定ができなさそうですよね・・・。 それなら FileDialog の方が良いと思うんですけど。 全部は理解できなくても、そのままコピー&ペーストで貼り付けて、 .Filters.Add "HTML ファイル", "*.html" のところを Excel 用に変えるのと、 .InitialFileName = CurrentProject.Path のところを .InitialFileName = "D:\EXCEL\AAAY\BBB.XLS" に変えるくらいで使用できると思います。

noname#18634
質問者

お礼

お手数をおかけしています。しかし丁寧に教えていただいても小生のレベルでは無理と分かりました。今隠居の身ですから時間はありますのでゆっくり勉強します。有り難うございました。

  • i-harada
  • ベストアンサー率22% (56/252)
回答No.3

i-haradaです。 D:\EXCEL\AAAY\BBB.XLSの後に1スペース入れてから、D:\EXCEL\AAAY\ccc.XLS D:\EXCEL\AAAY\DDD.XLS D:\EXCEL\AAAY\EEE.XLS って感じで出来ないでしょうか? 見当違いでしたらごめんなさい(。-人-。)

noname#18634
質問者

補足

有り難うございます。確かに教えていただいた方法でやってみましたら複数開くことができましたが、AAAホルダーの中にはファイルが500個ぐらいあるので駄目でした。すいませんです。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

エクセルVBAでは出きる Sub test02() myFName = Application.GetOpenFilename _ ("テキスト ファイル (*.txt),*.txt") End Sub が出きると思うので、やって見てください。 ファイルをオープンする前にファイル名をユーザーに選択させる部分に上記1行を挟んで見てください。 ("テキスト ファイル (*.txt),*.txt")の部分は、たまたま身近にあったテキストファイルの例ですが、エクセルファイル用に変えてください。

noname#18634
質問者

補足

有り難うございます。やみくもに教えていただいた Sub test02() myFName = Application.GetOpenFilename _ ("テキスト ファイル (*.txt),*.txt") End Sub をホルダーの中にある一番最初のファイルの中に書いてみましたが("テキスト ファイル (*.txt),*.txt") の部分がエラーになります。 その前に教えていただいたことが完全に理解できませんです。 このVBAをどこに書くのか、 「ファイルをオープンする前にファイル名をユーザーに選択させる部分に上記1行を挟んで見てください。」 は具体的にどこに挟むのか等々です。 もし可能ならば教えてただけますか。よろしくです。

回答No.1
参考URL:
http://www.accessclub.jp/samplefile/samplefile_159.htm http://www.accessclub.jp/samplefile/samplefile_78.htm
noname#18634
質問者

お礼

有り難うございます。しかし参考URLを熟読しましたが小生のレベルでは理解できませんでした。すみませんです。

関連するQ&A