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

このQ&Aのポイント
  • エクセルファイルを選択するダイアロボックスを表示するVBAコードを書きたい
  • GetOpenFilenameメソッドで実行時エラー1004が発生している
  • GetOpenFilenameメソッドに引数を指定しないとダイアロボックスは表示される
回答を見る
  • ベストアンサー

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

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

  • ベストアンサー
noname#158634
noname#158634
回答No.1

Target = Application.GetOpenFilename("Excelブック,*,xlsx") タイプミス。

dradra33
質問者

お礼

tk-is-pg_1206様 ご回答ありがとうございます。 とても単純なミスでした。 一人で練習しているから、 見えて当然のところも見えてませんでした…。

その他の回答 (2)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

カンマではなくピリオドです。 ("Excelブック,*,xlsx")→("Excelブック,*.xlsx")

dradra33
質問者

お礼

mu2011様 ご回答ありがとうございます。 .(ピリオド)にしたら、エクセルのみの ダイアログをちゃんと開けられました

noname#187541
noname#187541
回答No.2

こんにちは。 Target = Application.GetOpenFilename("Excelブック,*,xlsx")              ↓ Target = Application.GetOpenFilename("Excelブック,*.xlsx") *次は,ではなく.です。

dradra33
質問者

お礼

M-SOFT様 ご回答ありがとうございます。 .(ピリオド)にしたら、エクセルのみの ダイアログをちゃんと開けられました。

関連するQ&A

  • 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をコピペしています) 両者の違いはなんでしょうか?(※スペルの間違いは無いとは思いますが・・・) どうぞよろしくお願いいたします。

  • excel 2007 VBA コードの記述

    Excel 2007 を使用しています。 TEST.xlsm というブック内に テスト01 というシートを作成し、そのタブを右クリックして コードの表示 を選択。 表示されたVBAコード入力シートに下記のコードを記述して使用してます。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Range("E3:E33,G3:G33,AH3:AH33,AJ3:AJ33,BK3:BK33,BM3:BM33")) Is Nothing Or Selection.Count <> 1 Then Exit Sub Application.EnableEvents = False If Target <> "" Then If IsNumeric(Target) Then Target = Target - 23 End If End If Application.EnableEvents = True End Sub 'この行まで この条件に新たに下記のコードを追加したいと思い ネット検索しながらあれこれ試行錯誤してますが まだまだVBA初心者のため上手く機能してくれません。 ※上のコードだけなら思った通りに機能します。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Range("Y3:Y33,BB3:BB33,CE3:CE33")) Is Nothing Or Selection.Count <> 1 Then Exit Sub Application.EnableEvents = False If Target <> "" Then If IsNumeric(Target) Then Target = Target - 30 End If End If Application.EnableEvents = True End Sub 'この行まで どなたかこれら二種のコードを一つにまとめた記述方法を 教えて頂けますでしょうか?

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

    ●質問の主旨 Cドライブのフォルダにあるファイルを下記コードで開こうとしましたが、 開くことができませんでした。 1.なぜ下記コードでは開くことができないのでしょうか? 2.開くためにはコードを書き換える必要があるのでしょうか? 3.書き換えるとすればどのように書き換えれば良いでしょうか? ご存知の方ご教示願います。私はVBA初心者です。 ●質問の捕捉 コードはあるVBAの参考書をまるまる引用したものです。 その説明として、 「該当ファイルの存在を予めチェックし、存在すれば開き、 存在しないときはメッセージを表示する」 とあります。 もちろん"C\data\test.xlsm"という場所、ファイルは予め用意しています。 ●コード Sub 存在するときだけ開く() myfile = "C\data\test.xlsm" If Dir(myfile) <> "" Then Workbooks.Open myfile Else MsgBox "ファイルが存在しません" End If End Sub

  • エクセルVBA ファイル名操作

    エクセルマクロのコードにおきまして 「フォルダの選択」ダイアログから エクセルファイル 123.xlsxを例えば 開くときに それをa.xlsxという名前に変えて 以下のそれに続くVBAコードにおいて a.xlsxを操作したいのですが、 a = Application.GetOpenFilename() Workbooks.Open a これを実行すると求めるダイアログが表示されて 使いたい123.xlsxを開くをクリックしますが これでは123.xlsxがa.xlsxにはなりません このa.xlsxのファイル名で別途ファイル作成する方法を 御教示いただけると助かります よろしくお願いします win10 office365 コードは以下 部分ですが こういう流れで作成したい所存です Sub あいう() a = Application.GetOpenFilename() Workbooks.Open a 'b.xlsxファイルを新規作成 Workbooks.Add ActiveWorkbook.SaveAs Filename:="C:\Users\USER\Desktop\あいう\b.xlsx", FileFormat:=xlXMLSpreadsheet 'a.xlsxファイルの1行目のA1~AG1のセルの値をコピー Workbooks("a.xlsx").Worksheets("Sheet1").Range("A1:AG1").Copy 'b.xlsxファイルのA3~AG3のセルに貼り付け Workbooks("b.xlsx").Worksheets("Sheet1").Range("A3:AG3").PasteSpecial xlPasteValues 以下省略 よろしくお願いします

  • 窓からファイルを開くときフォームも表示したい

    Excel365solo,windows10を使っています。VBA超初心者です。 現在以下のコードで作業しています。 マクロ記述ブックAに、ユーザーフォームBをつくりコマンドボタンCを設置しました。 Private Sub 基礎データCボタン_Click() Unload Me Workbooks.Open Filename:=ThisWorkbook.Path & "\2年度\計算5月.xlsm"  ’このブックが開いた時に、自動で開いた複数のコマンドボタンDで処理 End Sub これを窓から選んでブックを選ぶ方式にしたいです。 Private Sub testボタン_Click() Dim OpenFileName As String ChDir Application.ThisWorkbook.Path & "\2年度" OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xlsm") If OpenFileName <> "False" Then Workbooks.Open OpenFileName Else MsgBox "キャンセルされました" End If End Sub でも、ブック\2年度\計算5月.xlsmは開きますが、ブックが開いた時「複数のコマンドボタンD」が表示されず困っています。これを表示させるようにしたいです。ご教示よろしくお願いします

  • 【Excelマクロ】MsgBoxにファイル名表示

    メール送信用Excelファイルを作成するため、下記のマクロを組み込んであります。 ------------------------- Sub メール送信用Excelファイル作成() '確認画面を非表示 Application.DisplayAlerts = False 'xlsxで保存 ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & "残高明細_" & Format(Now(), "yyyymmdd"), FileFormat:=xlWorkbookDefault MsgBox ("保存完了") End Sub ------------------------- 最後のメッセージボックス欄に、作成されたファイル名を表示させるマクロをご教示ください。 下記のような表記を希望します。 「残高明細_20220526.xlsx」 保存完了 よろしくお願い致します。

  • Excel VBA 違うxlsファイルの指定したシートを開く処理

    Excel VBAで違うExcelファイルの指定したシートを開きたいのですが、 うまくいきません。現在のコードは、 *フォーム* Private Sub CB1_Click() Dim A As Integer A = MsgBox("データ展開する?", 4, "データ展開?") If A = 6 Then INPORT.FILE_OPEN1 End If End Sub *INPORTモジュール* Sub FILE_OPEN1()  FILE_OPEN8 End Sub Sub FILE_OPEN8() Dim fnames As String fnames = fnames1 Workbooks.Open Filename:=fnames ***ここでしょうか?.Sheet("")と指定しても出来ません*** End Sub Function fnames1() As Variant fnames1 = Application.GetOpenFilename( _ Title:="ファイルを開く", _ FILEFILTER:="エクセルファイル (*.xls), *.xls") If fnames1 = False Then MsgBox ("ファイルを開けませんでした。" & Chr$(13) & _ "もう一度やり直して下さい。") End End If End Function また、指定する事が出来たら、選択したシートを現在のブックにコピーもしたいのですが、どの様にすればよいでしょうか? よろしくお願いします。

  • エクセルのマクロでファイルを開く

    エクセルの「ファイルを開く」ダイアログボックスを使用してファイルを開き、その開いたファイルに対してとあるマクロを実行させたいと思っています。 エクセルの「ファイルを開く」ダイアログボックスでパス取得までは理解出来たのですが、その先の処理が分かりません。 「ファイルを開く」と言うのは、「現在アクティブになっているシートにデータを貼り付けて」の処理でも構いません。 Dim Ret As Variant Ret = Application.GetOpenFilename("Excel ブック (*.xls), *.xls, テキストファイル(*.txt),*.txt") If Ret = False Then MsgBox "キャンセルが選択されました。" Exit Sub Else       'ここにRetで取得しているパスのファイルを開いて、sub_WAITのマクロを実行させたいです。 sub_WAIT.Show End If End Sub

  • Excel VBAについて

    Excelのシートにコマンドボタンを配置して、そのコマンドボタンをクリックすると「ファイルを開く」のダイアログボックスを表示したいと思っています。 そのとき、デフォルトでファイルの場所は「D:\Test」にしたいのですが、どうしたらよいのでしょうか。 ユーザは、ファイルの場所を探さずに、コマンドボタンをクリックしたら開きたいファイル名を指定するだけでいいようにしたいのですが。 下記では、ファイルを開くダイアログは表示されるのですが、ファイルの場所を毎回探さなくてはいけません。 どなたかご教授下さい。 Private Sub Cmd_ファイル選択_Click() Dim FileName As Variant FileName=Application.GetOpenFileName("Microsoft Excelブック,*.xls") Workbooks.Open OpenFileName End Sub

  • Excel2011のVBAについて教えてください。

    初めて質問します。 Excel2011forMACでVBAを使いBOOKを指定してクローズさせたいのですが、 エラー1004が起こりファイルを閉じることができません。 作成したVBAは以前にWindowsXP、Excel2000で作成したものを修正したものだったためなのではないかと思い、 改めてExcel2011forMACで下記ように、コマンドボタンをクリックすると"test.xlsx"を閉じるだけのテストを行いましたが同じエラーが発生します。 Private Sub CommandButton1_Click() Windows("test.xlsx").Close  End Sub 実行すると『実行時エラー'1004' _ オブジェクト'Close'のメソッド'Window'が失敗しました。』となります。 ちなみに、WindowsをWorkbooksにしても同様のエラーが発生しました。 Workbooksではファイルを指定しなければエラーは発生しないのですが、できれば1つのファイルを開いた状態にしておきたいと思っています。 このエラーの解消方法を教えていただけませんか。 それとも、MACでは個別にファイルを閉じることはできないのでしょうか。 Excel2011を使っているMAC OS Xのバージョンは10.6.7です。 VBAについては、初心者レベルで常にヘルプとマクロの記録を頼りになんとか作成しています。さらに、MACでVBAを使ったのが初めてで、この事象が一般的に知られていることなのかわかりません。いろいろ調べて同じような事例が見つけられなかったので質問させていただきます。 よろしくお願いします。

専門家に質問してみよう