アプリ版:「スタンプのみでお礼する」機能のリリースについて

データ追跡 テンプレートウィザードを使用時、名前をつけて保存するマクロコード

はどうかけばよいでしょうか?

http://allabout.co.jp/gm/gc/3496/
を参考にしてシステムをつくり、転記に成功しています。

しかし、部署内で使用するため、誰でもわかりやすく使えるものにしたいのです。
それにあたって、下記の機能をつけようとおもっています。
見積書テンプレート内にボタンを設置し、それをクリックして、
任意の名前をつけて任意のフォルダにおさめ、
それと同時にデータベースの転記も行いたいのです。

具体的に、AA1セルの値をファイル名にして、
C:\Documents and Settings\natsuko\デスクトップ\mitsumori\log\"
以下にファイルを保存したいと思っています。
しかし、AA1の値がついたファイルが上記フォルダに保存されるものの、
見積書の内容がデータベースに転記されません。

マクロのコードは下記のとおりです。

大変申し訳ないのですが、迫っている業務に間に合わせたいと思い、
「すぐに回答を!」を選択しております。
助けていただければ幸いです。
宜しくお願いいたします!

※使用しているエクセルは2000です。


Sub 新規保存1()

Dim fname
fname = Range("AA1") & ".xls"

ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\natsuko\デスクトップ\mitsumori\log\" & fname, _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWindow.Close
End Sub

A 回答 (1件)

マクロで保存するとアドインマクロが実行されないようですね。


いずれにしても、[データベースに保存]ダイアログを出して、
更新か追加かキャンセルか、の応答が必要になるので
WZTEMPLT.XLAのマクロを指定して直接実行させるような対処になるかと思います。
http://www.ozgrid.com/forum/showthread.php?t=43322

Sub try()
  Dim fname
  
  On Error GoTo errHandler
  Application.Run "WZTEMPLT.XLA!Commit"
  'Sheet名は適宜変更してください
  fname = Sheets("Sheet1").Range("AA1") & ".xls"
  With ThisWorkbook
    .SaveAs Filename:="C:\Documents and Settings\natsuko\デスクトップ\mitsumori\log\" & fname, _
        FileFormat:=xlNormal
    'If MsgBox("Closeします。", vbOKCancel) = vbOK Then
      .Close
    'End If
  End With
  Exit Sub
errHandler:
  MsgBox Err.Number & ":" & Err.Description
End Sub

ファイル名に使えない文字でエラーになった場合などの対応は
On ErrorステートメントでExcelに任せてます。

ただ、[データベースに保存]ダイアログで[キャンセル]した場合でも
保存とCloseの処理が進んでしまうのが難点です。

これを解消するには"WZTEMPLT.XLA"の解析が必要になると思われ、
流石にそれはMicrosoftに怒られるかと...
それにウィザード機能を抜いた"WZTEMPLT.XLA"的なものを自作したほうが早そうなので
これ以上の深追いはご勘弁を。
    • good
    • 0
この回答へのお礼

早速のご回答、ありがとうございます!
なるほど、マクロを指定して実行すれば良かったのですね。
自分では、とても考え付かなかったアイデアです。

お陰様で、無事運用できました。
ありがとうございました。

お礼日時:2010/06/29 20:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!