• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでフォルダの中の1個のファイルを表示したい)

VBAでフォルダの中の1個のファイルを表示する方法

このQ&Aのポイント
  • Windows10、Microsoft 365使用の超初心者が、毎月1回フォルダにファイルを入れているとエラーが発生し、それを回避する方法を知りたいです。
  • VBAを使用して、特定のフォルダ内の1つのファイルを表示する方法について教えてください。
  • ファイル「2年8月計算表完成.xls」をフォルダ「計算表」に手動で入れたところ、エラーが発生したため、毎月のエラー回避方法を教えてください。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.3

ファイルがない、複数ある場合には空振りする動作なら Sub Sample2()    Const tgDir = "計算表"    Dim tgFile As String  Dim cnt As Long  Dim buf As String  Dim wb As Workbook  Dim ws As Worksheet    cnt = 0  buf = Dir(ThisWorkbook.Path & "\" & tgDir & "\*.xls")  Do While buf <> ""   cnt = cnt + 1   tgFile = buf   'MsgBox buf   buf = Dir()  Loop    If cnt = 1 Then   Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & tgDir & "\" & tgFile)   Set ws = wb.Worksheets("集計")   ws.Select  End If End Sub 必ずエクセルブックが1つだけあることが保証されるなら Sub Sample3()    Const tgDir = "計算表"    Dim buf As String  Dim wb As Workbook  Dim ws As Worksheet    buf = Dir(ThisWorkbook.Path & "\" & tgDir & "\*.xls")  Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & tgDir & "\" & buf)  Set ws = wb.Worksheets("集計")  ws.Select End Sub 前者を推奨します。

aitaine
質問者

お礼

ありがとうございます。本当にたすかりました。

その他の回答 (2)

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

マクロブック格納フォルダーの下階層にある、 フォルダ「計算表」にエクセルブックが1つだけあったら、 ファイル名を問わずに開き、"集計"シートを選択する。 ファイルがない、または複数のエクセルブックがあったら開かない ↑のような制御でよければ、 以下のコードを試してみてください。 Sub Sample1()    Const tgDir = "計算表"    Dim tgFile As String  Dim cnt As Long  Dim buf As String  Dim wb As Workbook  Dim ws As Worksheet    cnt = 0  buf = Dir(ThisWorkbook.Path & "\" & tgDir & "\*.xls")  Do While buf <> ""   cnt = cnt + 1   tgFile = buf   'MsgBox buf   buf = Dir()  Loop    If cnt = 1 Then   Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & tgDir & "\" & tgFile)   Set ws = wb.Worksheets("集計")   ws.Select  Else   MsgBox "ファイルが無い、または複数ある"  End If End Sub

aitaine
質問者

補足

ありがとうございます。99%ぼくの思い通りの結果になりました。誠におそれいりますが「ファイルがない、または複数のエクセルブックがあったら開かない」ことは皆無なので、この処理を省いたコードにして頂けるとありがたいです。

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

>ws.Selec に関連して http://paz3.hatenablog.jp/entry/20090824/1251086123 Excelでワークシートを選択する場合にSelectではなくActivateを使った方がよい理由 に解説があります。 >しかし、非表示のWorksheetに対してはActivateのみが使用できます。非表示のWorksheetにSelectした場合には「アプリケーション定義またはオブジェクト定義のエラーです」というエラーが表示されます。 ーーーー 例えば、 Sub test01() Set wb = ActiveWorkbook Set ws = wb.Worksheets("Sheet3") On Error GoTo 0 wb.Activate ws.Select MsgBox ActiveSheet.Name MsgBox Selection.Name End Sub では、先のMsgBox行はOK、次の行はエラーになります。

aitaine
質問者

補足

マクロで2年7月計算表完成.xlsをひらきなさいという命令に対して、フォルダに2年8月計算表完成.xlsが入っているので、「オブジェクトエラー オブジェクト変数またはwithブロック変数が設定されていません。」となります。ぼくが一番教えてほしいことは、どんなファイル名であろうとフォルダ「計算表」に入っているファイルを表示したいです。それをここのコードに書ければいいのですが・・・。

関連するQ&A

専門家に質問してみよう