プロが教えるわが家の防犯対策術!

VBA初心者です。
教えてください。

指定のフォルダにある「管理シート・・・.xlsm」という”管理シート”以降のファイル名は
日々変わるエクセルファイルを開きたいです。

Workbooks.Open "\\Share\管理\管理シート * .xlsm"

上記で書くと指定ファイルが見つかりませんのエラーとなります。

ワイルドカードが使用できないのは分かったのですが
DIR関数の使い方とWorkbooks.Openへのつなぎ方がいまいちわかりません。

ご教授いただけますでしょうか。
よろしくお願いいたします。

A 回答 (3件)

こんなものはいかがですか?


-----------------------------------------------------------------------------------------
Sub Sample()
Dim ファイル名 As Variant
CreateObject("WScript.Shell").CurrentDirectory = "\\Share\管理"
ファイル名 = Application.GetOpenFilename("管理ファイル,管理シート*.xlsm")
If ファイル名 <> False Then
Workbooks.Open ファイル名
Else
MsgBox "キャンセルされました"
End If
End Sub
-----------------------------------------------------------------------------------------
「管理シート○○○.xlsm」を選択して開くものです。
    • good
    • 0
この回答へのお礼

ありがとうございます!こんな書き方があるのですね!!勉強になりました!

お礼日時:2017/11/02 09:22

こんにちは。



>日々変わるエクセルファイルを開きたいです。
しかし、日々、管理シート*.xlsm 「*」(ワイルドカード)の部分が変わるようでしたら、確かに、#2さんのオープンダイアログが確実かもしれませんが、それをプログラムで判定する(本日に一番近いファイルとか)ということを考えてしまいます。

'//
Sub TestWBOpen()
 Dim FName As String
 Dim MyPath As String
 Dim flg As Boolean
 MyPath = "\\Share\管理\" '末尾は\を入れること
 FName = Dir(MyPath & "管理シート*.xlsm", vbNormal)
 Do While FName <> ""
  If FName <> "." And FName <> ".." Then
   Workbooks.Open MyPath & FName
   flg = True
   Exit Sub  '今は最初に見つけたものを開く/続けて開かない
  End If
  FName = Dir
 Loop
 If flg = False Then
  MsgBox "ファイルが見つかりませんでした。", vbExclamation
 End If
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます!勉強になりました!

お礼日時:2017/11/02 09:20

以下のサンプルが所定のフォルダ内の全ブック(*.xlsm)を処理する例です。


このマクロを格納したブックは、"\\Share\管理\管理シート"内に格納しないでください。(2重にオープンされてしまいます)

------------------------------------------------------
Public Sub 一括処理()
Const book_folder As String = "\\Share\管理\管理シート"
Dim bookname As String
bookname = Dir(book_folder & "\*.xlsm", vbNormal)
'全てのブックを処理する
Do While bookname <> ""
'1ブックのオープン
Workbooks.Open Filename:=book_folder & "\" & bookname
'そのブックの処理・・・・
'そのブックのクローズ
ActiveWorkbook.Close
'次のブックの取得
bookname = Dir()
Loop
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます!!日本語も書いていただけて初心者にはわかりやすかったです!!^^

お礼日時:2017/11/02 09:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!