[[20150120175628]] 『自動実行のマクロ、欠陥マクロになってしまったの』(KUN) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『自動実行のマクロ、欠陥マクロになってしまったので対処法を教えてください。』(KUN)

 根本的に問題の有るマクロになってしまいました。
 回避方法を教えてください。

 やりたい事は、
 1)タスクスケジューラーでEXCELを起動。
 2)AutoOpenでマクロを実行。
 3)日付名で別ファイルに保存

 毎日に結果を蓄積できる!はずだったのですが、
 致命的な大欠陥が、見つかりました。

 原因は、
 「昨日の結果を確認しようと、日付のエクセルを開くと・・・
  2)のマクロが動き始め、最新の結果になってしまい
 その日の結果が絶対に見れないコトに気づきました。
 
 こんなダメ マクロの、対処方法を教えてください。
 宜しくお願い致します。

↓ダメなマクロです。

 Sub Auto_Open()  
  Application.DisplayAlerts = False
  Application.Run "Macro1"
 End Sub

 Sub Macro1()
 Range("A2").Select
    ActiveCell.FormulaR1C1 = "自動マクロ実行テスト中・・・保存"
   ActiveWorkbook.SaveAs Filename:= _
        "C:\Documents and Settings\test\デスクトップ\結果\" & Format(Range("a1").Value, "yymmdd") & ".xls", FileFormat:=xlNormal, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
End Sub

< 使用 Excel:Excel2007、使用 OS:WindowsXP >


 マクロ無しのファイルとして保存するようにしてはどうでしょうか。

 単一シートであれば、シートをコピーして保存しても良いですし、
 xlsx フォーマットでマクロを落として保存するようにしてもできるかと思います。

(Mook) 2015/01/20(火) 18:36


 こんばんは

 SaveAs をかける前に、同名のブックの存在をチェックして、もし、存在すれば、メッセージを出して上書きするかどうかを
 聞いて処理分岐させればいいと思いますが、このブック自体は、だれがいつ閉じるんですか?

 それと、Application.DisplayAlerts = False は名のために記述しているんですか?

(β) 2015/01/20(火) 19:51


 横から失礼します。

 履歴を取りたいのなら

 >ActiveWorkbook.SaveAs 

 ↓の方がよくないですか?

 ActiveWorkbook.SaveCopyAs
(カリーニン) 2015/01/20(火) 21:10

 Mookさん
 ありがとうございます。
 マクロ無しで保存できるなんて知りませんでした。
 早速、試して(勉強して)みます。

 βさん
 ありがとうございます。
 >このブック自体は、だれがいつ閉じるんですか?
 そうなんです、自動でクローズするマクロを試したのですが
 今回、質問した内容と同じ原因で結果がまったく見れない・・・なんてコトになり
 諦めました。
 それと、Application.DisplayAlerts = False は、色々試したマクロの
 残骸が残ってしまいました。
「マクロを有効にする・無効にする」を表示しない方法を探していました。
 ご教授ありがとうございます。

 カリーニンさん
 ありがとうございます。
 まだまだ勉強不足で、ご教授頂いたマクロの違いがわかりません。
 勉強します。

 皆様 本当にありがとうございました。
 これからも勉強して行きますので、宜しくお願い致します。

(KUN) 2015/01/21(水) 09:44


 >ご教授頂いたマクロの違いがわかりません。

 簡単なサンプルを作ってみました。
 テスト用ブックを作成して一旦保存し、コードを標準モジュール
 に貼り付けて試してみてください。

Sub testA()

 Dim wbmei As String
 Dim newwbmei As String
 Dim fol As String
  fol = ThisWorkbook.Path
  newwbmei = Format(Now, "yymmdd_hhmmss") & "_" & ThisWorkbook.Name
  MsgBox ThisWorkbook.Name
  ThisWorkbook.SaveCopyAs fol & "\" & newwbmei
  MsgBox ThisWorkbook.Name
End Sub

Sub testB()

 Dim wbmei As String
 Dim newwbmei As String
 Dim fol As String
  fol = ThisWorkbook.Path
  newwbmei = Format(Now, "yymmdd_hhmmss") & "_" & ThisWorkbook.Name
  MsgBox ThisWorkbook.Name
  ThisWorkbook.SaveAs fol & "\" & newwbmei
  MsgBox ThisWorkbook.Name
End Sub
(カリーニン) 2015/01/21(水) 22:57

コメント返信:

[ 一覧(最新更新順) ]


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