みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCELのVBAで元のブック名へ戻す方法

得意先サブマスタ作成.xlsmというブック名でマクロを作成しています。
その中でCSVファイルを読み込んでエクセルへ変えて保存をしています。

With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Users\*******\Desktop\得意先変換マスタ.csv", Destination:=Range("$A$1"))
'.CommandType = 0
.Name = "得意先変換マスタ"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 932
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="C:\Users\honb014\Desktop\得意先変換マスタ.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Application.DisplayAlerts = True

このコードで行っているのですが、実行すると当然ですがアクティヴなブック名は得意先
変換マスタ.xlsxになっています。
これを元の得意先サブマスタ作成.xlsmに戻す方法はありますか?
マクロでこの後に続く箇所で上記の得意先変換マスタ.xlsxを使用する際にエラーが出て
しまい、このような質問をさせていただきました。
宜しくお願い致します。

投稿日時 - 2016-07-25 16:46:05

QNo.9206359

困ってます

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

No4の追加です。

シートコピーはシートをコピーして貼り付けではなくて、シートの移動またはコピーの機能を使います。

Sheets(得意先サブマスタ作成のシート名).Copy After:=Workbooks(得意先変換マスタ.xlsx).Sheets(Workbooks(得意先変換マスタ.xlsx).Sheets.Count)

ふと思ったのですが

> マクロでこの後に続く箇所で上記の得意先変換マスタ.xlsxを使用する際にエラーが出て
しまい

こちらのエラーがどのようなものか不明なのでふれませんでしたが、こちらの部分を修正変更したほうが流れとしていいのかもしれませんね。

投稿日時 - 2016-07-25 20:36:25

お礼

結局得意先サブマスタ作成.xlsmに新しいシートを作成し、そこにCSVを読み込んでエクセルとして格納した後にそのシートを削除するという手順を取る事で目的を果たす事ができました。
回答の4と5でシートの事に触れていたのが参考になりました。別シートで処理をするという発想が全くありませんでした。
追加の回答をいただき本当にありがとうございました。大変参考になりました。

投稿日時 - 2016-07-26 13:21:02

ANo.5

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.4

No3の追加です。

もし、得意先サブマスタ作成.xlsmにある他のシートも得意先変換マスタ.xlsxに必要なのでしたら,質問のコードの最後に再度、得意先サブマスタ作成.xlsmファイル名で保存するという手もあります。

ActiveWorkbook.SaveAs Filename:="C:\Users\**********\Desktop\得意先サブマスタ作成.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled

その後、得意先変換マスタ.xlsxを開くということも必要です。

また、必要なシートが少なければNo3の方法の後に必要なシートをコピーするという手段もありますが、上記の方が単純だと思います。シートコピーした場合、得意先サブマスタ作成.xlsmを閉じる前に得意先変換マスタ.xlsxを保存しておかないとエラーになる事があります。

投稿日時 - 2016-07-25 19:25:15

ANo.3

> 流れ自体がこれでよいのか、別のやり方を考えた方がよいのか、迷っている次第です。

後に続く箇所でエラーになるという処理がどうのようなものなのかわかりませんが、得意先変換マスタ.xlsxファイルを新規に作成して、それにCSVを読み込むようにすれば、得意先サブマスタ作成.xlsmと得意先変換マスタ.xlsxの二つのブックが開いていることになりますから、アクティブなブックを切り替えて操作ができるようにはなりますよ。

Workbooks.Add
ActiveWorkbook.SaveAs Filename:="C:\Users\*******\Desktop\得意先変換マスタ.xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
以下は質問に記載されているコードそのままでいけるのではないでしょうか。

投稿日時 - 2016-07-25 18:55:31

ANo.2

> 実行してみたのですが、ブックのタイトル名は変わりませんでした。

質問に記載しているコードの最後に
ThisWorkbook.Activate
を追記したのですよね。その後ろに

Debug.Print ActiveWorkbook.Name
でイミディエイトウィンドウにアクティブなブック名が表示されますが、それが変わっていませんか?
MsgBox ActiveWorkbook.Name
でメッセージボックスで確認してもいいです。

あと、得意先サブマスタ作成.xlsmとは別のブックにCSVを読み込んで保存してるのだと思いましたが、得意先サブマスタ作成.xlsmにCSVを読み込んで得意先変換マスタ.xlsxとして保存してるのでしょうか?

後者だとしたら保存時にファイル名を得意先サブマスタ作成.xlsmにするしかありませんが、それだとtakazouさんの当初の思惑と違うような気がしますが・・・

投稿日時 - 2016-07-25 17:54:43

補足

アドバイスいただき、ありがとうございます。
メッセージボックスで確認しましたが、得意先変換マスタ.xlsxと表示されました。

手順としては得意先サブマスタ作成.xlsm自体にCSVを読み込んで得意先変換マスタ.xlsxとして保存しています。
その後別のエクセルから得意先変換マスタ.xlsxをadoで読み込み情報を取得して得意先サブマスタ.xlsxとして保存するという流れです。

おっしゃられるように後者になりますので、それだとしたら得意先サブマスタ作成.xlsmにするしかないのでしょうか。
流れ自体がこれでよいのか、別のやり方を考えた方がよいのか、迷っている次第です。

投稿日時 - 2016-07-25 18:27:46

ANo.1

ThisWorkbook.Activate
でマクロを実行しているブック(得意先サブマスタ作成.xlsm)がアクティブになります。

投稿日時 - 2016-07-25 17:04:05

補足

早速回答いただき、ありがとうございます。
実行してみたのですが、ブックのタイトル名は変わりませんでした。
何かおかしなことをしているのでしょうか?

投稿日時 - 2016-07-25 17:23:59

あなたにオススメの質問