[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロの入ったブックをコピー』(ss)
マクロの入ったブックをコピーして使いたいんですが、マクロまでコピーしてくれません。何か設定が必要でしょうか?教えて下さい。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
どのようにしてコピーを行ったのか、その手順を具体的に書いてくれ。 (ねむねむ) 2016/10/14(金) 15:27
標準モジュールとかクラスモジュールに書いたマクロは、シートをコピーしても引き継がれませんよ。
「ファイルのエクスポート」でテキストファイルで書き出しておき、コピー先で「ファイルのインポート」しましょう。
または、コードをシートモジュールに書いておけば、シートのコピーと共にマクロもコピーされます。
(???) 2016/10/14(金) 15:33
保存をかけて、保存したファイルを開くとマクロが消えてしまいます。
ファイル→名前を付けて保存ではなく、コマンドボタンで保存をしています。
コードを貼り付けます。
Sub SaveAsThisExcelFile()
Dim 管理番号 As String Dim SavePath As String Dim MSG As String Dim Icon As Long
Call ISY_Setting
On Error GoTo Err2
管理番号 = Mid(ISY管理番号Rng.Value, 8, 3) & Right(ISY管理番号Rng.Value, 5)
With ThisWorkbook
SavePath = .Path & "\" & ISYStationRng.Value & "(" & 管理番号 & ").xlsx"
End With
If Not Dir(SavePath) = Empty Then
MSG = "上書きでファイルを保存しますか?" Icon = vbExclamation + vbYesNo
Else
MSG = "ファイルを保存しますか?" Icon = vbInformation + vbYesNo
End If
If MsgBox(MSG & vbLf & vbLf & SavePath, Icon, Title) = vbNo Then
MsgBox "保存を中止しました。", vbInformation, Title End
End If
Sheets("シート1").Buttons.Delete
Application.DisplayAlerts = False ThisWorkbook.SaveAs SavePath, xlOpenXMLWorkbook Application.DisplayAlerts = True
MsgBox "保存が完了しました。", vbInformation, Title
Res:
On Error GoTo 0
End
Err2:
MsgBox "以下のエラーが発生しました。処理を中止します。" & vbLf & vbLf & _ Err.Description, vbCritical, Title
Resume Res
End Sub
保存するときに、xlsxと指定しているのがまずいのではないかと思っているのですが、
拡張子を指定せずに保存することは可能でしょうか。
(ss) 2016/10/14(金) 15:37
拡張子無しで当該ブックを別名保存する場合には当該ブックと同じ拡張子になると思うが。
でマクロがあるということは当該ブックの拡張子はxlsmのはずなのでxlsmで保存され、マクロも削除されないと思うが。 (ねむねむ) 2016/10/14(金) 16:12
形式を指定してもエラーが起きてしまいます。
FileFormat:=52にすると、
エラー:その名前つき引数は既に使用されています。
(ss) 2016/10/14(金) 16:55
マクロが記述されているブックの拡張子は何か?
もしXLSXのブックにマクロを作成しているのであればいったんそれをXLSMで保存してみてくれ。
(ねむねむ) 2016/10/14(金) 17:05
xlsmで保存していますがエラーが出てしまうようです・・・。
(ss) 2016/10/14(金) 18:39
とりあえず
>>FileFormat:=52にすると、 >>エラー:その名前つき引数は既に使用されています。
もし、ThisWorkbook.SaveAs SavePath, xlOpenXMLWorkbook,FileFormat:=52
と記述したなら、当然エラーです。 最初の2つ、定位置パラメータ記述方式ですが 最初のSavePathが FileName、次のxlOpenXMLWorkbookがFileFormat。 したがって、これをキーワード記述方式にすると
ThisWorkbook.SaveAs FileName:=SavePath, FileFormat:=xlOpenXMLWorkbook,FileFormat:=52
こうなってしまいますから。
(β) 2016/10/14(金) 18:48
>>拡張子を指定せずに保存することは可能でしょうか。
なぜ、指定したくないのですか? 指定すればいいのでは??
ブックを、マクロ有効ブックとして名前を付けて保存、この操作をマクロ記録すると
FileName:="hogehoge・・・・hogehoge.xlsm" になりますし、FileFormat:=xlOpenXMLWorkbookMacroEnabled になります。
なぜ、こういったコードにしないのでしょうか?
(β) 2016/10/14(金) 18:53
あと、この形(SaveAs) でもいいのかもしれませんが、この後、エクセル区画には元のブックではなく、新しく 名前を付けて保存されたマクロブックが残ることになり、以降のマクロ処理は、その新しいマクロブックのマクロとして 実行されます。
あくまで、エクセル区画のマクロブックが、そのまま最後まで存在して制御する。 そのコピーを別途の名前で保存したいのであれば SaveCopyAs も検討されてはいかがでしょう。
(β) 2016/10/14(金) 18:59
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.