[[20240713113354]] 『今開いているファイル以外を開く』(Thomas) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『今開いているファイル以外を開く』(Thomas)

全てのファイルを開くVBAについてご質問させて頂きたく、
他のフォルダーにあるファイルから全てのファイルを開くコードはかけたのですが、今開いている自ファイル以外を開きたいコードがうまくいきません。
If Not Filename.Name Is ThisWorkbook.Name Thenを追加すればうまくいくと思ったのですが、Debugされてしまいます。
ネットで調べたのですが解決できず、恐れ入りますがどなたかどこをどうすればよいかアドバイスを頂きたくお願い致します。

<他のフォルダーにあるファイルから開くことに成功したコード>
Sub test()
Dim Folderpath As stirng
Dim Filename As String
Folderpath = "C:\Users\AAA\Desktop\BBB\"
Filename = Dir(Folderpath & "*.xlsx")
Do Until Filename = ""
Workbooks.Open Folderpath & Filename
Filename = Dir()
Loop
End Sub

<自ファイル以外を開こうとしてうまくいかないコード>
Sub test()
Dim Folderpath As stirng
Dim Filename As String
Folderpath = "C:\Users\AAA\Desktop\BBB\"
Filename = Dir(Folderpath & "*.xlsx")
If Not Filename.Name Is ThisWorkbook.Name Then
Do Until Filename = ""
Workbooks.Open Folderpath & Filename
Filename = Dir()
Loop
End If
End Sub

< 使用 Excel:Excel2013、使用 OS:Windows8 >


>If Not Filename.Name Is ThisWorkbook.Name Then
Filenameは文字列ですから、.Nameなんていうプロパティを持ちません。
Isというのは文字列同士の比較には使わないのでは?
If Filename <> ThisWorkbook.Name Then
とかじゃないですか?
(要確認) 2024/07/13(土) 12:26:51

アドバイス有難うございます。
ご指摘頂きました内容に変更したところ、Debugにならず開きそうなのですが、ただ自ファイルを開こうとしてしまいます。自ファイル以外のすべてのファイルを開きたいのですが、どこを修正すればよろしいでしょうか? 追加ですみませんがどなたかアドバイスを頂けます様お願い致します。
(Thomas) 2024/07/13(土) 12:44:55

こうじゃないですか?

 Sub test()
     Dim Folderpath As String
     Dim Filename As String

     Folderpath = "C:\Users\AAA\Desktop\BBB\"
     Filename = Dir(Folderpath & "*.xlsx")
     Do Until Filename = ""
         If Filename <> ThisWorkbook.Name Then
             Workbooks.Open Folderpath & Filename
         End If
         Filename = Dir()
     Loop
 End Sub
 きちんとインデントをつけないので、コードの構造がわかりにくいのです。
(要確認) 2024/07/13(土) 13:14:42

先程頂いた内容で試したらうまくいきました。皆さまアドバイス頂きまして有難うございました。
(Thomas) 2024/07/13(土) 13:29:12

自ブックが格納されているフォルダ内のブックを開く場合は、
自ブック以外に自ブックの一時ファイルも除外するようにした方がいいです。

参考まで。

https://note.com/itsupportstation/n/nd5ded195aa8e
(OK) 2024/07/14(日) 01:08:48


 >今開いている自ファイル

 これがThisworkbookのことなら、拡張子はxlsmではないのですか?
 また、Folderpath は、Thisworkbook.Path とは別のフォルダですか?
(マナ) 2024/07/14(日) 10:22:03

Thisworkbookであればxlsmという事を今知りました。勉強不足ですみません。
またFolderpathはThisworkbook.pathのことです。
(Thomas) 2024/07/17(水) 10:56:43

 > Filename = Dir(Folderpath & "*.xlsx")
                                   ~~~~~
 そうならば最初の全てのファイルを開くコードのままでも
 Thisworkbook(拡張子xlsm)が開くとは思えないのですが?
(マナ) 2024/07/17(水) 14:59:21

 マナさんへ
 Dir関数の拡張子には注意が必要ですね。
 以下参照
 http://officetanaka.net/excel/vba/tips/tips69.htm
(tkit) 2024/07/17(水) 15:05:38

 tkitさん、コメントありがとうございます。

 リンク先は知っていましたし、動作確認もした記憶があります。
そのうえで、今回は、4文字指定(*.xlsx)なので
xlsmファイルを開くことはないと考えていました。
ご指摘を受け不安になりましたので、改めて確認もしました。
環境によって挙動が違うのでしょうか?
(マナ) 2024/07/17(水) 15:49:49

 こちらでも確認しました。
 拡張子を"xls","xlsx","xlsm"で試してみました。
 私が提示した拡張子3文字で、4文字目がワイルドカードになる現象は
 再現せず、それぞれの拡張子のファイルが取得できました。
 現在の環境は、Win10 Excel2016/32bitです。
 検証した頃はWin8 Excel2010/32bitで再現していました。

 Win10 Excel2010/32bitで確認しましたが、再現しませんでした。

 検証不足ですいませんでした。
 Win8の環境は無く、確認出来ませんが
 OS?アップデート?ですかね?

(tkit) 2024/07/17(水) 16:14:07


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.