EXCEL VBA EXCEL2000で「ファイルを開く」を表示させる

このQ&Aのポイント
  • EXCELで、「ファイルを開く」を表示させようとしています。
  • EXCEL2000ではエラーになるため、どちらでも使えるコマンドを教えていただけますか?
  • 【ハッシュタグ】EXCEL #VBA #ファイルを開く
回答を見る
  • ベストアンサー

EXCEL VBA EXCEL2000で「ファイルを開く」を表示させる

EXCELで、「ファイルを開く」を表示させようとしています。 下記命令文でEXCEL2003ではうまくいくのですが、2000だとエラーになるようです。 どちらでも使えるコマンドを教えていただけるでしょうか。 タイトル = "ファイルを開く" ファイルの場所 = "C:\Users" '場所 フィルタ1a = "CSV" '種類 フィルタ1b = "*.csv" '拡張子 With Application.FileDialog(msoFileDialogOpen) .Title = タイトル .InitialFileName = ファイルの場所 .Filters.Clear 'フィルタクリア .Filters.Add フィルタ1a, フィルタ1b 'フィルタ設定 .AllowMultiSelect = False '複数選択不可 .Show End With

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

#3 の回答者です。 >Sub Test2のほうを試したところパスが見つかりません とエラーが出ますが、どういったことなのでしょう 今、調べてみましたが、「\」(パスセパレータ)を抜くと、いけないのでした。こちらには、ないパスだったので、いい加減に書いてしまいました。 Const ファイルの場所 = "C:Users" '場所   ↓ Const ファイルの場所 = "C:\Users" '場所

hiro_ele
質問者

お礼

早速お返事いただいてありがとうございます。 うまくいきました。 エラーの原因はフィルの場所のところでしたか。 わたしも、もう少し注意深く見てからお尋ねすればよかったですね。 でも、良い回答をありがとうございました。 いまは2003でやっているので、あとは実際に2000で試してうまくいけば解決です。 ありがとうございました。

その他の回答 (7)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.8

こんにちは。 #6のお礼の部分。 >後にそのファイルを開きたいのですが開きません。 (パス名は、例のように直していただければよいのですが) 'MsgBox fName Workbooks.Open fName '行の先頭にある、コメントブロック(')は、外してくださいね。Excel2000でテストはされています。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.7

#1です。 コードをご確認下さい。お礼の項に書かれた通りの動作をする、ファイル名取得までのサンプルコードです。 ご質問の内容から、XL2000の生の情報を提供すれば十分と判断させていただきました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

>いまは2003でやっているので、あとは実際に2000で試してうまくいけば解決です。 こちらでは、Excel 2000 で、作動試験しましたから、たぶん大丈夫です。(フォルダの名称は、実際は、C:\Temp などで試して、元に書いたものに戻すとき、ミスしました。(^^; すみません。)

hiro_ele
質問者

お礼

何度もお答えしていただきありがとうございます Sub2でもうまく言ったと思ったのですが、ファイル名は取得できていますが、最後にそのファイルを開きたいのですが開きません。 Sub1のほうでは開く要になっているのですが。 教えていただけますか。

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

FileDialogを使えるのはエクセル2002からのようです。 http://www.happy2-island.com/bbs/bbs.cgi?mode=view&no=874 (この方はプロフィールを見てください。VBAの本を沢山書いておられる方です) http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200707/07070027.txt >2000以前では使えません。 ココにはApplication.Dialogs(xlDialogOpen).の引数の指定なども載っています。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 ご質問のマクロをそのまま移せば、こんなところでしょうね。 Sub Test1() Dim OrgDir As String Const ファイルの場所 = "C:\Users" '場所 OrgDir = CurDir ChDir ファイルの場所   Application.Dialogs(xlDialogOpen).Show "*.csv" ChDir OrgDir End Sub 一般的には、 GetOpenFilename を使い Sub Test2() Const タイトル = "ファイルを開く" Const ファイルの場所 = "C:Users" '場所 Const フィルタ1a = "CSV" '種類 Const フィルタ1b = "*.csv" '拡張子 Dim fName As String Dim orgDir As String  orgDir = CurDir  ChDir ファイルの場所    fName = Application.GetOpenFilename(フィルタ1a & "," & フィルタ1b, 1, タイトル)  If fName <> "False" Then   MsgBox fName   'Workbooks.Open fName  End If  ChDir orgDir End Sub なお、Access 2000 ~は、通常、CommonDialog (Microsoft Common Dialog Control 6.0 )を使うかと思います。

hiro_ele
質問者

お礼

ご回答ありがとうございます。 Sub Test1の方はうまく開きました。 Sub Test2のほうを試したところパスが見つかりません とエラーが出ますが、どういったことなのでしょう。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

FileDialog オブジェクトを使えるのは2002からのようですよ。 FileDialog オブジェクトの使用 http://msdn.microsoft.com/ja-jp/library/cc326127.aspx

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

以下、Excel2000のヘルプより CopyRight Microsoft GetOpenFilename メソッドの使用例 次の使用例は、ファイルを開くときに表示されるダイアログ ボックスで、ファイルの種類をテキスト ファイルに限定して表示します。ファイル名を選択すると、そのファイル名がメッセージ ボックスに表示されます。 fileToOpen = Application _ .GetOpenFilename("テキスト ファイル (*.txt), *.txt") If fileToOpen <> False Then MsgBox "選択されたファイル : " & fileToOpen End If なんでしたら、APIを使う方法もあります。 Access2000はこれのお世話にならないといけない... http://www.accessclub.jp/samplefile/samplefile_78.htm

hiro_ele
質問者

お礼

ご回答ありがとうございます。 試したところ、ファイルを選択し、メッセージボックスに選択したファイル名は出ましたが、実際にファイルが開かれることがありませんでした…。

関連するQ&A

  • 複数のCSVファイルを読み込んで複数シートを1ブックとしたい

    始めまして。 VBA初心者です。 2枚のCSVファイルをダイアログで各々指定し、保存する2枚のシートを1ブックにまとめたいのですが、うまくいきません。 現状は以下のようなマクロですが、別々のシートとなります。 よろしくお願い致します。 Sub 選択されたPDPファイルを開いて読み込む() With Application.FileDialog(msoFileDialogOpen) .Title = "ファイルを選択して[OK]ボタンをクリックしてください" .AllowMultiSelect = False '複数選択不可 .Filters.Clear .Filters.Add "1枚目", "*.csv", 1 If .Show = -1 Then .Execute 'キャンセルでなければ開く End With With Application.FileDialog(msoFileDialogOpen) .Title = "2つめのファイルを選択して[OK]ボタンをクリックしてください" .AllowMultiSelect = False '複数選択不可 .Filters.Clear .Filters.Add "2枚目", "*.csv", 1 If .Show = -1 Then .Execute 'キャンセルでなければ開く End With End Sub

  • VBAでファイル名の取得方法

    FileDialogを使用してユーザーにファイル名を指定してもらい、結果からフルパスを取得する事はできたのですが、パスではなくファイル名を取得するにはどのようにすれば良いのでしょうか? Dim lngCount As Long ' ファイル ダイアログを開きます。 With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = True .Show '選択された各ファイルのパスを表示します。 For lngCount = 1 To .SelectedItems.Count lblPath_1.Caption = .SelectedItems(lngCount) Next lngCount End With

  • ファイル名にドットを使ったファイルのインポート(ACCESSマクロ)

    Accessのマクロを作成しています。 ファイルを開くダイアログから複数ファイルを選択してCSVファイルをインポートするマクロを書きました。(最後に抜粋を記載します) インポートの行はこうなっています。 DoCmd.TransferText acImportDelim, , "traffic", varFname, True ファイル名に拡張子直前以外にドットを含むファイル名だと以下のエラーとなります。 実行時エラー '3011' オブジェクト'ドットを含むファイル名'が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。 余分なドットさえ含まなければ、50ファイル、7MBのインポートも問題ありません。 わけあってファイル名は変更できません。 ファイル名にドットを含む場合のインポートの書き方を教えてください。 宜しくお願い致します。 ===以下、抜粋=== '[ファイルを開く]ダイアログボックスを作成 Set dlgOpen = Application.FileDialog(msoFileDialogOpen) '[ファイルを開く]ダイアログボックスの初期設定 dlgOpen.AllowMultiSelect = True dlgOpen.Filters.Clear dlgOpen.Filters.Add "CSV", "*.csv" dlgOpen.InitialFileName = CurrentProject.Path '[ファイルを開く]ダイアログボックスを表示 ret = dlgOpen.Show '[キャンセル]ボタンを選択したときは、プロシージャを終了 If ret = 0 Then Exit Function End If 'カレントデータベースに接続 Set db = CurrentDb 'lineテーブルからレコードを取得 Set rs = db.OpenRecordset("line", dbOpenDynaset) '単数または複数選択されたファイル分だけ処理する For Each varFname In dlgOpen.SelectedItems 'CSVファイルをインポートする DoCmd.TransferText acImportDelim, , "traffic", varFname, True

  • Access csvファイルの取り込み

    Access2021 2箇所の保存先の違う所からcsvファイルの取り込みについて伺います。 csv取り込みボタンは、2つ用意しています。 1つ目のボタンに、コード記述して動作確認は正常に動作して他のボタンも正常に動作。 2つ目にのボタンに、csvの格納パス名のみ変更後コード記述して動作確認したら全てのボタンが反応しなくなりました。 動作としては、削除クエリでテーブルのデータを削除してから、指定したフォルダからcsvファイルを選択して取り込ます。 同じテーブルを使用して、格納先の違うcsvファイルを使用する操作になります。 コードは、以下の通りです。 ①ボタン1 Private Sub コマンド61_Click() '削除クエリ実行 DoCmd.SetWarnings False DoCmd.OpenQuery "テーブルデータ削除" DoCmd.SetWarnings True Dim msg As String msg = getFilePicker If msg = "" Then Exit Sub On Error GoTo err_sample DoCmd.TransferText acImportDelim, , "インポート先テーブル名", msg, True MsgBox "インポートが終了しました。", vbInformation + vbOKOnly, "処理完了" Exit Sub err_sample: Select Case Err.Number Case 3011 MsgBox "ファイルが見つかりません。処理を終了します。" Case Else MsgBox Err.Number & ":" & Err.Description End Select End Sub Function getFilePicker(Optional dTitle As String = "ファイル選択") '2003以降 Const msoFileDialogFilePicker As Integer = 3 Dim fDlg As Object Set fDlg = Application.FileDialog(msoFileDialogFilePicker) fDlg.Title = dTitle fDlg.InitialFileName = "csvインポートデータのフォルダパス名①" fDlg.AllowMultiSelect = False fDlg.Filters.Clear fDlg.Filters.Add "すべてのファイル", "*.*" fDlg.Filters.Add "CSV ファイル (*.csv)", "*.csv" fDlg.FilterIndex = 1 If fDlg.Show Then getFilePicker = fDlg.SelectedItems(1) Else getFilePicker = "" Me.Refresh End Function ②ボタン2 Private Sub コマンド62_Click() '削除クエリ実行 DoCmd.SetWarnings False DoCmd.OpenQuery "テーブルデータ削除" DoCmd.SetWarnings True Dim msg As String msg = getFilePicker If msg = "" Then Exit Sub On Error GoTo err_sample DoCmd.TransferText acImportDelim, , "インポート先テーブル名", msg, True MsgBox "インポートが終了しました。", vbInformation + vbOKOnly, "処理完了" Exit Sub err_sample: Select Case Err.Number Case 3011 MsgBox "ファイルが見つかりません。処理を終了します。" Case Else MsgBox Err.Number & ":" & Err.Description End Select End Sub Function getFilePicker(Optional dTitle As String = "ファイル選択") '2003以降 Const msoFileDialogFilePicker As Integer = 3 Dim fDlg As Object Set fDlg = Application.FileDialog(msoFileDialogFilePicker) fDlg.Title = dTitle fDlg.InitialFileName = "csvインポートデータのフォルダパス名②" fDlg.AllowMultiSelect = False fDlg.Filters.Clear fDlg.Filters.Add "すべてのファイル", "*.*" fDlg.Filters.Add "CSV ファイル (*.csv)", "*.csv" fDlg.FilterIndex = 1 If fDlg.Show Then getFilePicker = fDlg.SelectedItems(1) Else getFilePicker = "" Me.Refresh End Function ご教授の程、宜しくお願い致します。

  • VBAでユーザーフォーム上に参照したファイルを開きたいのですが…

    EXCEL2003 SP3での質問です。 ユーザーフォームをVBAで作成中です。 主な機能は、対象月をコンボBOXで選択させた上で、 データ元とインプット先のファイルをテキストBOXに参照し、 実行ボタンクリックでデータ元からインプット先の該当月シートに データをコピーするといった感じです。 (データ元の該当シート内データを全てコピー&ペースト) 取り込み以降の処理はVBAを使用せずに作成しようと考えています。 質問は、取込みたいファイルの参照後の「ファイルを開いてデータをコピーする」処理がうまくいかず、 どのようにしたらよいか教えて頂けますでしょうか。 現在、以下のように記述していますが、 CommandButton3_Click()の部分の処理が分からずファイルが開けません。ご教授ください。 Private Sub CommandButton1_Click() With Application.FileDialog(msoFileDialogFilePicker) .Filters.Clear .Filters.Add "テキスト", "*.csv;*.txt", 1 If .Show = 0 Then Exit Sub Me.TextBox1.Text = .SelectedItems(1) End With End Sub Private Sub CommandButton2_Click() With Application.FileDialog(msoFileDialogFilePicker) .Filters.Clear .Filters.Add "テキスト", "*.csv;*.txt", 1 If .Show = 0 Then Exit Sub Me.TextBox2.Text = .SelectedItems(1) End With End Sub Private Sub CommandButton3_Click() Dim file_name As String If TextBox1.Text = "" Then MsgBox "ファイルが指定されていません", vbInformation ElseIf TextBox1.Text = "" Then file_name = TextBox1.Text = "" Shell "Workbooks.OpenText TextBox1.Value " End If End Sub Private Sub CommandButton4_Click() yesno = MsgBox("保存後、ファイルを閉じます。終了していいですか?", vbYesNo + vbQuestion, "Reportの終了") If yesno = vbYes Then ActiveWorkbook.Save ActiveWorkbook.Close Else End If End Sub

  • Excel : マクロでファイルを開く方法を

    Excelにて下記の方法で特殊なファイル(.textでは無い)を開いています。  1.メニューの『開く』で『ファイルを開く』ダイアログを表示させる。  2.毎回、同じフォルダを選択し、さらに一つ下の階層のフォルダ群の中から更新日が最新のフォルダを開く。  3.特殊なファイルなのでファイルの種類を『すべてのファイル』にする。    (他のアプリケーションで作成されたファイルで、拡張子もない)  4.表示されたファイル群から任意のファイルを選択し開く。    (選択するファイルは毎回変わる)  5.『テキストファイルウィザード』が立ち上がってくるのでスペース区切りでファイルを開く しかし、この一連の作業に煩わしさを感じ、 以下のマクロにて『ファイルを開く』ダイアログを表示させ、 任意のファイルを単純に開く所まではマクロ超初心者でもできましたが、 ファイルをスペース区切りの状態で開く方法がいくら調べても分かりません。   (↑あとこれだけなんです!!) どうかマクロ上級者様方、お知恵をお貸し頂けませんでしょうか? Private Sub CommandButton1_Click()   With Application.FileDialog(msoFileDialogOpen)     .AllowMultiSelect = False     .FilterIndex = 1     .InitialFileName = "c:\フォルダ\"    If .Show = -1 Then .Execute   End With End Sub

  • range クラスのselectメソッドが・・・

    マクロ実行時に 実行エラー 1004 「Range クラスのselectメソッドが失敗しました。」 のメッセージが出てしまいます。 マクロは以下のとおりです。 ----------------------------------------------------------------------------------- Sub 振替表作成() Workbooks.Add Application.SheetsInNewWorkbook = 1 ActiveSheet.Name = "未収" MsgBox ("未収・前受振替表エクセルファイルを作成します。" & "任意の場所を指定して保存してください。 ") With Application.FileDialog(msoFileDialogSaveAs) .InitialFileName = "未収・前受振替表" If .Show = -1 Then .Execute End With MsgBox ("対象月次の1370集計表 を選択してください。") With Application.FileDialog(msoFileDialogOpen) .InitialFileName = "" .AllowMultiSelect = True If .Show = -1 Then .Execute End With Columns("A:D").Select Selection.Delete Shift:=xlToLeft ---------------------------------------------------------------------------- Columns("A:D").Select の部分でエラーになります。 Columns("A:D").Select の前に ActiveWindow.Select を入れてみたんですが駄目です。 Columns("A:D").Select の前に Selection.Select を入れてみたんですが駄目です。 Columns("A:D").Select の前に Worksheets("シート名").Activate を入れてみたんですが駄目です。 原因と解消方法がわかりません。 何がいけないんでしょうか?

  • Access VBAについて教えて下さい。

    Access VBAについて教えて下さい。 <内容> 選択ボタンを押下するとファイル選択のダイアログ画面が表示されます。 そこから複数ファイルを選択してテキストボックスに選択したファイルを取得します。 実行ボタンを押下するとテキストボックスで取得したファイルを同じテーブルにインポートします。 ※テキストボックスの名前 = FileList <VBA> Private Sub 選択_Click() With Application.FileDialog(msoFileDialogFilePicker) .Filters.Clear .Title = "ファイル選択" .Filters.Add "すべてのファイル", "*.*" .Filters.Add "テキストファイル", "*.txt" .Filters.Add "TSVファイル", "*.tsv" .Filters.Add "EXCELファイル", "*.xls" .AllowMultiSelect = True .InitialFileName = CurrentProject.Path If .Show = -1 Then Me.FileList = .SelectedItems(1) 'ユーザーが [キャンセル] をクリックした場合 Else End If End With End Sub Private Sub 実行_Click() 'テーブル削除 On Error GoTo エラー Dim mySQL As String Dim strName As String Dim strmsg As String Set Db = CurrentDb strName = "テスト" strmsg = "" & strName & "テーブルを削除します。" mySQL = "DROP TABLE " & strName '「はい」ボタンを押下した場合 If MsgBox(strmsg, vbYesNo) = vbYes Then Db.Execute mySQL MsgBox strName & "テーブルを削除しました。", vbCritical MsgBox "インポートします。", vbInformation 'インポート開始 DoCmd.TransferSpreadsheet aclmport, acSpreadsheetTypeExcel8, "テスト", FileList, True MsgBox "インポート完了", vbInformation '「いいえ」ボタンを押下した場合 End If Db.Close: Set Db = Nothing Exit Sub 'テーブルが存在しなかった場合 エラー: MsgBox strName & "テーブルが存在しません。", vbExclamation MsgBox "インポートします。", vbInformation 'インポート開始 DoCmd.TransferSpreadsheet aclmport, acSpreadsheetTypeExcel8, "テスト", FileList, True MsgBox "インポート完了", vbInformation End Sub <困っていること> ファイルを複数選択することは、出来ますがテキストボックスには1ファイルしか取得出来ません。 そのため、インポートも1ファイルのみになってしまいます。 どのようにしたらテキストボックスに複数ファイル名を取得し、インポート出来るのでしょうか?

  • Access2000の定数について教えて下さい。

    Access2000を現在仕事で使用しています。 インターネット上で、使用したいツールがあり ダウンロードし使用してみたのですが、 変数が定義されていないというエラー表示が出ます。 FileDialogを使用するときにVBEエディターツールバーのツール から参照設定画面を表示させ、「MicroSoft Office XX(バージョン) Object Library」を有効にしなくてはならないということなので、 確認し有効としましたが改善されません。 msoFileDialogPickerという定数は、 Access2000(SR-1)で使えるものでしょうか。 VBEエディターは、MicroSoftVisualBasic6.0です。 使えないなら、代替としてどういったものがありますか? 今現在のコードは、下記の状態です。 Private Function FilePickerDialog() As String With Application.FileDialog(DialogType:=msoFileDialogPicker) .InitialView = msoFileDialogViewList .ButtonName = "選択" .Title = "データベースを選択してください..." .AllowMultiSelect = False .InitialFileName = "" With .Filters .Clear .Add Description:="Access Databases", _ Extensions:="*.mda;*.mde;*.mdb" End With If .Show Then FilePickerDialog = .SelectedItems(1) End If End With End Function

  • VBAでFileDialogを利用してファイル参照したいのですが

    EXCEL2002、SP2上での質問です。 ユーザーフォームをVBAで作成中です。 主な機能は、区分をコンボボックスで選択させた上で、 取込みたいファイルを参照し、取込実行ボタンを押すという感じに 作っています。 質問は、取込みたいファイルを参照させ選択したあと、すぐに処理を 行うのではなく、一度参照した結果のフォルダー名とファイル名を 別の窓(ツールボックスのどのコントロールがベストチョイスか不明) に表示させ、取込実行ボタンでコンボボックスで選択した内容と 参照したファイルを取得するようにしたいのですが、別の窓に参照結果 を表示させる方法がわかりません。 説明が長くてわかりにくいと思いますが、参照ボタンの記述を下記に 記載しますので、参照後の処理をどのようにしたらよいか教えて 下さい。 Private Sub 参照_Click() With Application.FileDialog(msoFileDialogFilePicker) .Filters.Clear .Filters.Add "テキスト", "*.csv;*.txt", 1 If .Show = 0 Then Exit Sub →ここに参照した後の処理を追加したいです。 End With End Sub

専門家に質問してみよう