• ベストアンサー

エラー「メソッドまたはデータメンバが見つかりません」

「メソッドまたはデータメンバが見つかりません」というエラーが出ています。 windowsVISTAでACCESS2007を使っています。 windowsXPでACCESS2003でも同じエラーが出ます。 ソースは下記になります。 Dim OpenFileName As String  OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls")  MsgBox "ファイル名は" & OpenFileName & "です" End Sub 「.GetOpenFilename」が反転して、エラーになります。 かれこれ2時間格闘してますが、全く原因がわかりません(T-T) どうかよろしくお願いいたします。

noname#143796
noname#143796

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

  • ベストアンサー
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.3

こんにちは。 ACCESS VBAなんですよね? ACCESS VBAにGetOpenFilenameメソッドってありましたか? >「.GetOpenFilename」が反転して、エラーになります。 ということなので、多分そうだと思います。 以下のようにしてみてはどうでしょう。 Sub Test() Dim OpenFileName As String Dim xlApp As Object Set xlApp = CreateObject("Excel.Application") OpenFileName = xlApp.GetOpenFilename("Microsoft Excelブック,*.xls") MsgBox "ファイル名は" & OpenFileName & "です" Set xlApp = Nothing End Sub No.1さんのリンク先にある参照設定をしないで、エクセルのメソッドを使ってるだけなんですけどね。

noname#143796
質問者

お礼

お礼が遅くなってすみません。 AccessにGetOpenFilenameメソッドはないのですね・・・ ネットで検索してそのままコピペして使っていたので、全く気が付きませんでした。 教えていただいた方法でうまくいきました! とても勉強になりました。 ありがとうございました。

その他の回答 (3)

回答No.4

ANo.2です。 ACCESS… ごめんなさい単純ミスかと思ってました。 Application.のところがWizHook. ------------------------------------------------------- Sub Sample() Dim OpenFileName As String  OpenFileName = WizHook.GetOpenFilename("Microsoft Excelブック,*.xls")  MsgBox ("ファイル名は" & OpenFileName & "です") End Sub

noname#143796
質問者

お礼

またまたありがとうございます! 色んな方法があるのですね・・・ まだまだ勉強不足です。 とても助かりました。 ありがとうございました!

回答No.2

一行目に、関数(メソッド)がありません MsBoxに()がありません ------------------------------------------------------- Sub Sample() Dim OpenFileName As String  OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls")  MsgBox ("ファイル名は" & OpenFileName & "です") End Sub

noname#143796
質問者

お礼

ありがとうございます。 すみません、1行目はコピペのミスです(汗) msgboxの()はつけましたが、msgboxまで行く前の段階でエラーになっています(>_<)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

http://www.accessclub.jp/urawaza/86.html ここが参考になりませんか?

noname#143796
質問者

お礼

ありがとうございます。 参照設定等は問題ないのですが、 後ほどじっくり読んでみます。

関連するQ&A

  • GetOpenFilenameメソッド アクセス

    エクセルには GetOpenFilenameメソッドが用意されてるから Debug.Print Application.GetOpenFilename("Microsoft Excelブック,*.xls") のようにしてファイル名を取得できますが アクセスで同じような事がしたい場合、どのメソッドを使えば良いでしょうか? アクセスにGetOpenFilenameメソッドはないようです。

  • VBAでのファイルの開き方について

    いつもお世話になっております。(エクセル2010を使用) エクセルVBAを学習中の者です。 ダイアログボックスを表示してファイルを開く・・・というコードを記述しているのですが、分からない点があるためご指導をお願いします。 Sub Sample1() Dim openFileName As String openFileName = Application.GetOpenFilename filefilter:="Microsoft Excelブック,*.xls?" Workbooks.Open Filename:=openFileName End Sub を実行するとコンパイルエラーの構文エラーが表示されます。 Sub Sample2() Dim openFileName As String openFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") Workbooks.Open Filename:=openFileName End Sub を実行すると正常に動作します。 私の現在の知識ではSample1も正常に動作するはずなんですが・・・ (※コードはVBEをコピペしています) 両者の違いはなんでしょうか?(※スペルの間違いは無いとは思いますが・・・) どうぞよろしくお願いいたします。

  • ダイアログボックスのpathの指定で下位フォルダを指定したい

    Excel2003 でマクロ作成中の超初心者です。以下のコードで21年度のフォルダが開けます。が、21年度\個人別 という下位のフォルダを指定したいのです。pathを\C・・・から指定すればできそうですが、このマクロを他のPCで実行した場合pathがみつかりませんの エラーが出ると思います。どう指定したらよろしいでしょうか。 Private Sub CommandButton7_Click() Dim OpenFileName As String On Error Resume Next ChDir "21年度" OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If OpenFileName <> "False" Then Workbooks.Open OpenFileName End If End Sub

  • マクロでエクセル・ワード文書をひらく

    Windows2000 Excel2000でマクロ作成中の超初心者です。 コマンドボタンでExcelとWord文書を開いて、その文書を利用しています。次の3点について、ご教示をお願いします。 1)この文書を開いたとき、両方ともマイドキュメントのフォルダに固定したい 2)ワード文書を開くと、タスクトレーにあらわれるため、いちいち最大化ボタンをおさなければならない。これを最初から最大化表示したい 3)他のPCでも使えるコードにしたい ちなみに使っているコードは次の2個です。 Sub ワードをひらく() Dim FileName As String Dim s As String On Error GoTo JumpError FileName = Application.GetOpenFilename("Word文書,*.doc", 1, "Word文書を開く", , False) Shell """C:\Program Files\Microsoft Office\Office\WINWORD.EXE""" & " """ & FileName & """" JumpError: End Sub ----------------------------------- Sub エクセルをひらく() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls") If OpenFileName <> "False" Then Workbooks.Open OpenFileName End If End Sub

  • ユーザーフォームがシートの裏に隠れてしまう

    ブックを開いた時に、表示されるユーザーフォームが作業シートの裏に隠れて、作業が思うようにできません。なんとかシートの前面に表示させたいです。EXCEL365solo,WINDOWS10使用の超初心者です。ご指導よろしくお願いします。 Private Sub CommandButton96_Click() Dim OpenFileName As String Unload Me ChDir Application.ThisWorkbook.Path & "\2年集計" OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xlsm") G給与入力.Show vbModeless If OpenFileName <> "False" Then Workbooks.Open OpenFileName Else MsgBox "キャンセルされました" End If End Sub

  • VBAでの「メソッドまたはデータメンバが見つかりま

    word2016で以下のプログラムを流したいのですが、「メソッドまたはデータメンバが見つかりません」のエラーが出ます。 Dim CB As Variant, i As Long CB = Application.ClipboardFormats If CB(1) = True Then MsgBox ”クリップボードになにも値がありません。”,48 Exit Sub End If どうすれば直るでしょうか?よろしくお願いします。

  • EXCEL VBA複数ブックからの貼り付け

    複数のブックにあるデータを一つのシートに繋げるマクロを作っています。 元となるブックのフォーマットは全て一緒の為下記の様なコードを書きました。 Dim OpenFileName As Variant, tmp As String, i As Long '複数のブック巣を選択 OpenFileName = Application.GetOpenFilename(FileFilter:="Microsoft Excelブック,*.xls", _ MultiSelect:=True) '名前の取得 If IsArray(OpenFileName) Then For i = 1 To UBound(OpenFileName) tmp = tmp & OpenFileName(i) & vbCrLf Next i MsgBox "選択したファイルは " & vbCrLf & tmp & " ", vbInformation Else MsgBox "キャンセルされました。", vbInformation End If '選択したブックを開く For i = 1 To UBound(OpenFileName) Workbooks.Open OpenFileName(i) Next i '最初のファイルをコピーをし、DataSheetに貼り付ける Workbooks(OpenFileName(1)).Worksheets("元帳").Cells.Copy _ Destination:=Workbooks("在庫表BETA.xls").Worksheets("DataSheet").Range("A1") '2個以降のファイルを下に貼り付ける For i = 2 To UBound(OpenFileName) Workbooks(OpenFileName(i)).Worksheets("元帳").Range("A9:V54").Copy _ Destination:=Workbooks("在庫表BETA.xls").Worksheets("DataSheet").Range("A65536").End(xlUp) Next i '最初のファイルをコピーをし、DataSheetに貼り付ける Workbooks(OpenFileName(1)).Worksheets("元帳").Cells.Copy _ Destination:=Workbooks("在庫表BETA.xls").Worksheets("DataSheet").Range("A1") 上の部分で『インデックスが有効範囲にありません。(Error 9)』の エラーが発生してしまい、困っております。 また、該当箇所をコメントアウトしても『2個目以降のファイルを貼り付ける』の箇所でも同様のエラーが発生してしまいます。 無知な私ですが、宜しくお願い致します。

  • Excel2007VBAファイルの表示について

    ●質問の主旨 開いたダイアロボックス内のファイルについてエクセルファイル(.xlsxのみ)を 対象としたいと考えています。 下記コードをどのように書き換えればよいでしょうか? ご存知の方ご教示願います。私はVBA初心者です ●質問の補足 作成した下記のコードでは 「実行時エラー1004:GetOpenFilenameメソッドに失敗しました」 と表示されます。 参考書2冊読んで全くその通りに引用していて、なぜエラー表示に なるのかよく分かりません。 またTarget = Application.GetOpenFilename("Excelブック,*,xlsx")を Target = Application.GetOpenFilename()にするとダイアロボックスは 表示され、その中にあるエクセルファイルは表示されます。 ●コード Sub Sample3() Dim Target As String Target = Application.GetOpenFilename("Excelブック,*,xlsx") If Target <> "False" Then Workbooks.Open Target Else MsgBox "キャンセルされました" End If End Sub

  • VBAで、ExcelシートにCSVファイルのデータを取り込みたいのです

    VBAで、ExcelシートにCSVファイルのデータを取り込みたいのですが、 1行目しか取り込めません。 取り込む項目数は32個です。 以下のコードでは、Excelシートの1行目のみ取り込みができますが、 1行目32列目のセルには、2行目のA列に表示されるべきデータも表示されます。 2行目以下は取り込みできていません。 Sub CSV取込() Dim OpenFileName As String Dim MyString As String Dim MyVar As Variant Dim i As Long, j As Long OpenFileName = Application.GetOpenFilename("CSVファイル,*.csv") If OpenFileName = "False" Then MsgBox "キャンセルされました。" Else Open OpenFileName For Input Access Read As #1 i = 1 While Not EOF(1) Line Input #1, MyString MyVar = Split(MyString, ",") If MyVar(0) <> "" Then For j = 0 To 31 ThisWorkbook.ActiveSheet.Cells(i + 10, j + 1) = MyVar(j) Next j i = i + 1 End If Wend Close #1 End If End Sub おそらく、改行が判別できないためかと思いますが、 どこが間違っているのかがわかりません。 アドバイスをよろしくお願いします。

  • 他のExcelブックのモジュールに構造体を渡すには

    Book1.xlsのaモジュールから構造体を引数としてBook2.xlsのbモジュールを呼び出したいのですが、Book1.xlsのVBEのツールメニューの参照設定でBook2.xlsを参照しましたが、Book1.xlsのaモジュールを実行するとCall b(t)のtの箇所で「ByRef 引数の型が一致しません」というコンパイルエラーになります。 他のブックのモジュールに構造体を渡すにはどのようにすればよいのでしょうか。 よろしくお願いしたます。(OS:WindowsXP Excel2003) ---Book1.xls--- Option Explicit Public Type TT  name As String End Type Sub a()  Dim t As TT  t.name = "ABC"  Call b(t) End Sub ---Book2.xls--- Option Explicit Public Type TT  name As String End Type Sub b(t As TT)  MsgBox t.name End Sub ---------------

専門家に質問してみよう