teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

1回答

1075閲覧

【VBA】主に3処理について、コードが合っているか確認したいです

cherishlieben

総合スコア17

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/04/06 11:03

0

0

以下を調べるツールを作成したいのですが、
コードは合っておりますでしょうか?

①指定したファイル名と同じファイル(=これ以前でファイル名はFilename2,ファイルパスはFilepath2と変数定義済)が、ファイルパス(変数Filepath2 に定義したファイルパス)内に存在するかどうか調べる。

② 指定したファイル名(変数Filename2に定義したファイル名)と同じ名前のファイルが開かれているか確認する。

③それ以降、コード内のコメントに記載の処理を実行する。

Dim FSO As Object         Set FSO = CreateObject("Scripting.FileSystemObject")         Dim Filename         Filename = FSO.GetFileName(Filepath)              'filenameと同名のエクセルブックを取得       Dim workbookWithSameName As Workbook       Set workbookWithSameName = getWorkbookByName(Filename)      '同名のエクセルブックを開いている時=Nothing「ではない」とき       If Not workbookWithSameName Is Nothing  Then  If workbookWithSameName.FullName <> Filepath Then 'workbookWithSameName.FullName  MsgBox "同名のエクセルブックを2つ以上開いているため、違うファイルパスのブックを閉じてください"  Exit Sub         End If                '同名のエクセルブックを開いている時=Nothingのとき⇒そのブックを処理対象とする        If workbookWithSameName Is Nothing Then           Set targetWorkbook = Workbooks.Open(Filepath)       Else       Set targetWorkbook = workbookWithSameName       End If         

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

そもそも、同じ名前のファイルを開くことはできません。
エクセルの制限です。

チェックするなら、開く前に判定する必要があります。

投稿2022/04/06 11:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cherishlieben

2022/04/07 01:58

ご回答ありがとうございます。 今から開こうとしているファイルと同名のファイルが既に開かれているかを上に記載のコードで確認した後に ファイルを開くコードを記載しております。 上記のコードで(特にgetWorkbookByName部分で)エラーとなっているようなのですが、 どう解決すべきかご教示いただくことはできますでしょうか?
退会済みユーザー

退会済みユーザー

2022/04/07 02:23

>MsgBox "同名のエクセルブックを2つ以上開いているため というのは釣りですか? >エラーとなっているようなのですが、 どんなエラー? >getWorkbookByName 中身の分からんものについてはコメントできません。
cherishlieben

2022/04/07 07:37

>エラーとなっているようなのですが、 どんなエラー? SubまたはFunctionが定義されてません というエラーポップアップが出て、 getWorkbookByNameに青くカーソルが当たります。 なのでgetWorkbookByNameをどこかで定義した方がよいなど、これに関連する部分で間違いがあるのかと思ったのですが、 初心者でして調べても分かりかねている状態です。 もしこのコード中で間違いがございましたら、ご教示いただけましたら幸いです。
退会済みユーザー

退会済みユーザー

2022/04/07 07:40

getWorkbookByName これは自分で作る関数です。 どこのサイトを参考にしたのですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問