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

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

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

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

Q&A

解決済

2回答

503閲覧

VBA ワークシートを違うディレクトリにコピーしようとするがエラーとなる

3109

総合スコア80

VBA

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

0グッド

1クリップ

投稿2020/02/20 06:07

編集2020/02/20 06:12

前提・実現したいこと

ワークブック内のワークシートを
「移動またはコピー」→「(新しいブック)」として「コピーを作成する」を
マクロ化しようとしています。

テストとしてデスクトップに「フォルダー」という名のフォルダーを配置。
その下に「サブフォルダー」という名のフォルダーと、
「ワークブック.xls」という名のマクロブックを配置しています。

「ワークブック.xls」には「ワークシート」という名のワークシートがあり、
上記の操作をしようとするマクロはまた別のワークブック内にあります。

発生している問題・エラーメッセージ

同ディレクトリに空のフォルダーを作成して、
その中に同じ名前のワークブックを保存しようと思っているのですが、
以下のようなエラーが出てしまいます。
イメージ説明

違う階層のフルパスを与えているのに、なぜ同一ブックと認識しているのでしょうか?
お知恵をお借りできれば幸いです。

該当のソースコード

VBA

1Sub Test_Copy() 2 3 Dim wb As Workbook 4 Set wb = Workbooks.Open("C:\Users\User_Name\Desktop\フォルダー\ワークブック.xls") 5 6 wb.Worksheets("ワークシート").Copy 7 ActiveWorkbook.SaveAs Filename:="C:\Users\User_Name\Desktop\フォルダー\サブフォルダー\ワークブック.xls" 8 9End Sub 10

参考にしたサイト

http://officetanaka.net/excel/vba/tips/tips170.htm

補足情報(FW/ツールのバージョンなど)

Excel 365

詳細説明

新しいワークブックを作成してからワークシートをコピーしていたのですが、
このやり方だと破線の改ページの設定が引き継がれず、
(新しいブック)にコピーをするとうまくいくようなので、
上記のような手続きを取ろうとしています。

ワークブック自体をコピーすることは解決方法にはなりません。
なぜなら、コピーしようとするワークブックにはマクロが入っており、
ワークシートだけをコピーしてモジュールを切り離すことで
マクロを除外しようと考えているからです。

よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

たぶん「ワークブック.xls」を開いたまま、同名のファイルを作成しようとしているからかと。
CopyのあとにCloseしたらどうでしょうか。

VBA

1 wb.Worksheets("ワークシート").Copy 2 wb.Close 3 ActiveWorkbook.SaveAs Filename:="C:\Users\User_Name\Desktop\フォルダー\サブフォルダー\ワークブック.xls"

投稿2020/02/20 06:21

ttyp03

総合スコア17000

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

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

3109

2020/02/20 06:37

動作しました。 スピード解決ありがとうございました。
guest

0

Excelは別のディレクトリにある場合でも、同じファイル名のBookを同時に扱うことができません。

c:\temp\dir1\test.xlsxc:\temp\dir2\test.xlsxを同時に開けないですよね?

マクロを除外しようと考えているからです。

xls形式にこだわらないならxlsxで保存する方法もあります。

VBA

1Application.DisplayAlerts = False 2Set wb = Workbooks.Open("C:\Users\User_Name\Desktop\フォルダー\ワークブック.xls") 3wb.SaveAs Filename:="C:\Users\User_Name\Desktop\フォルダー\サブフォルダー\ワークブック.xlsx", FileFormat:=xlWorkbookDefault 4wb.Close 5Set wb = Nothing 6Application.DisplayAlerts = True

投稿2020/02/20 06:16

編集2020/02/20 06:34
Y.H.

総合スコア7918

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

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

3109

2020/02/20 06:29

言われてみれば仰る通りです。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問