[[20070405115251]] 『自動入力保存』(いか) ページの最後に飛ぶ

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

 

『自動入力保存』(いか)
 タスクで,指定したエクセルファイルを開くようにしたんですが,
 その後,指定したセルに当日の「月」「日」「曜日」を入力し上書き保存して閉じる
 というようなことを自動で行いたいのですが,宜しくお願いします。

 例
 「A」ファイルが自動で開く→開くと同時にセル「R1C1」に月,「R1C2」に日,「R1C3」に
 曜日を自動入力→上書き保存して閉じる
 これをすべて自動で行います。

 あらかじめセルの表示形式のユーザー定義で次のような設定を行います。
R1C1 m
R1C2  d
R1C3  aaa
 
その上で次の操作を行います。
ツール>マクロ>新しいマクロの記録
保存する場所を「作業中のブック」としてOK。
R1C1:R1C3を選択、
=TODAY() を入力し Ctrl を押しながらEnter
Ctrl を押しながら Cキー(コピー)
Alt を押しながら E S V としてAltキーを放して Enter
(形式を選択して貼り付けで「値」の貼り付け)
Ctrl を押しながら S (上書保存)
ツール>マクロ>記録終了
 
Altを押しながらF11で標準モジュールのModule1などとなっているものをダブルクリック
すると、おおむね次のようなマクロが出来ているのが確認できます。
 
'////////////////////////////////////////////
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2007/4/5  ユーザー名 : みやほりん
'

'

    Range("A1:C1").Select
    Selection.FormulaR1C1 = "=TODAY()"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWorkbook.Save
End Sub
 
'////////////////////////////////////////////
 
Sub Macro1() を Sub Auto_Open() と書き換え。
 
    ActiveWorkbook.Save
 
の次の行に下記の一行を追加。
 
    ActiveWorkbook.Close
 
Alt を押しながら Qキー でエクセルに戻り、
R1C1:R1C3をクリアしてブックを上書保存して閉じます。
次にこのブックをマクロを有効にして開きます。
すぐに閉じてしまいます。
さらにこのブックをマクロを無効にして開きますと、「月」「日」「曜日」が表示され
ているのが確認できます。(実際に入力されているのは当日の日付)
でも、マクロ有効で開くと、日付入力だけして閉じちゃいますが、
それでよいのでしょうかね。
(みやほりん)(-_∂)b


 (みやほりん)さん,ありがとうございます。
 とても参考になりました。
 もうひとつ質問があるのですが,
 このブックをメール添付で送るとマクロも送られるのですが,
 マクロを送らないことって出来るのでしょうか?
 可能でしたら宜しくお願いします。(いか)

 もうひと工夫、必要です。
1.VBEでモジュールを解放してから送付する、
2.マクロを実行するファイルとデータを入力するファイルを分ける。
 タスクでマクロファイルを呼び出してそのマクロファイルから実際のファイルを呼び
 出し、データ書き込みを行う二段構え。
3.下記のようなVBScriptファイルを作り、タスクでこのVBSファイルを実行。
 C:\Sample.xlsのSheet1に実行する例。
 
'///////////////////////////////////////////
 Dim xlApp
 Dim Wb
 Set xlApp = CreateObject("Excel.Application")
 xlApp.Visible = True
 xlApp.DisplayAlerts = False
 Set Wb = xlApp.Workbooks.Open("C:\Sample.xls")
 Wb.Worksheets("Sheet1").Range("A1:C1").FormulaR1C1 = "=TODAY()"
 Wb.Worksheets("Sheet1").Range("A1:C1").Value =  Wb.Worksheets("Sheet1").Range("A1:C1").Value
 Wb.Save
 Wb.Close
 xlapp.Quit
 Set Wb = Nothing
 Set xlApp = Nothing
'///////////////////////////////////////////
 
(みやほりん)(-_∂)b

 (みやほりん)さん,ありがとうございました。
 VBScriptファイルというものを初めて知りましたが
 なんとか希望通りのことができました。
 また解らないことがあれば宜しくお願いします。(いか)

コメント返信:

[ 一覧(最新更新順) ]


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