• ベストアンサー

エクセルのマクロ

rivoisuの回答

  • ベストアンサー
  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.6

マクロのファイルは234とは別のファイルにしています。(これは私の好み) Updatecheck で123と234 の最終更新日(DateLastModified)を比較して更新するかどうかを決めています。 FileSystemObjectを利用しています。(FileSystemObjectについてはVBAの資料よりVBSの資料のほうが詳しいようです。 ほとんどそのまま利用できますのでVBSの資料を参考にしたほうが早く理解できると思います) このコードをworkbook のコードのPrivate Sub Workbook_Open()から呼びます。 でこのBookをタスクスケジューラーに登録します。(「アクセサリー」「システムツール」にあります。 対象ファイルが複数あるようなのでその辺はシートにファイル名一覧を入れてfor nextを使うなど自分で工夫してね。 Sub Updatecheck()   Dim FSysObj As Object   Dim inppath As String   Dim outpath As String   Dim inpfile As Object   Dim outfile As Object   inppath = "D:\ddd\123.xls"   outpath = "D:\ddd\234.xls"   Set FSysObj = CreateObject("Scripting.FileSystemObject")   Set inpfile = FSysObj.GetFile(inppath)   Set outfile = FSysObj.GetFile(outpath)   If inpfile.DateLastModified < outfile.DateLastModified Then       DOupdate_proc   End If   Application.DisplayAlerts = False   Application.Quit End Sub Sub DOupdate_proc()   Dim inppath As String   Dim outpath As String   inppath = "D:\ddd\123.xls"   outpath = "D:\ddd\234.xls"   Workbooks.Open inppath   Workbooks.Open outpath     更新処理    End Sub

doradora64
質問者

補足

度々すいません。 別のファイルを"サンプル"として VBAの This Workbookに Private Sub Workbook_Open() Application.Run "サンプル.xls!Updatecheck" Application.Run "サンプル.xls!DOupdate_proc"  End Sub とし、標準モジュールに Sub Updatecheck()   Dim FSysObj As Object   Dim inppath As String   Dim outpath As String   Dim inpfile As Object   Dim outfile As Object   inppath = "D:\ddd\123.xls"   outpath = "D:\ddd\234.xls"   Set FSysObj = CreateObject("Scripting.FileSystemObject")   Set inpfile = FSysObj.GetFile(inppath)   Set outfile = FSysObj.GetFile(outpath)   If inpfile.DateLastModified < outfile.DateLastModified Then       DOupdate_proc   End If   Application.DisplayAlerts = False   Application.Quit End Sub Sub DOupdate_proc()   Dim inppath As String   Dim outpath As String   inppath = "D:\ddd\123.xls"   outpath = "D:\ddd\234.xls"   Workbooks.Open inppath   Workbooks.Open outpath     Application.Run "サンプル.xls!ここに実行したいマクロ名"    End Sub とし、ワークブックを開くと、マクロ"Updatecheck"と"DOupdate_proc" が実行される様にしたのですが、これではうまくいきませんでした。 私の理解が間違っていた様です。 又、本題とそれてしまいますが、アクセスで同じ様な事(決まった時間に、エクセルのファイルからデータをインポートし、現在あるテーブルの最後のレコードの下に追加をする)はできませんか?教えて頂だけると非常に助かります。 よろしくお願いします。

関連するQ&A

  • エクセルマクロでご教示ください

    エクセルで作られたデータファイルに対し、ある操作を施して上書き保存するというマクロを作りました。 そのマクロを走らせるとファイル名を聞いてきまして、そこでファイル名を入力してやれば、ある操作を施したあと 自動的に上書き保存までしてくれるのですが、対象ファイルが複数個あると、ひとつ実行したあとまたひとつ ファイル名を入れて、またそれが終ったら次のファイル名を・・・というように、ひとつひとつ実行しなければならない というのが現状です。 これを次のように改良したいのですが、どうすればいいのでしょうか? 1.マクロを立ち上げる。 2.処理する複数のファイルが入っている「フォルダ」を選ぶ。  (一覧表示のウィンドウが出てきて、その中で「フォルダ」を選ぶ) 3.そのフォルダの中に入っているエクセルファイル全てに対し、既に作成済みのマクロを順次実行する。 というものです。 よろしくお願いします。

  • 開いている別のファイルにExcelのマクロで上書きしたい

    開いている別のファイルにExcelのマクロで上書きしたい いつも申し訳ありませんが またExcelのマクロについて質問させてください。 名前 = ActiveWorkbook.Name Set ファイル = Application.FileDialog(msoFileDialogSaveAs) Application.FileDialog(msoFileDialogSaveAs).InitialFileName = "コピー" & 名前 If ファイル.Show = -1 Then Worksheets.Copy ActiveWorkbook.SaveAs "コピー" & 名前 End If Set ファイル = Nothing これにより、現在開いているファイルを マクロを付けない状態で 名前の前に「コピー」と付けた別のファイルとして保存しています。 ただ問題は 同じ「コピー」が付いたファイルがすでに開かれている場合 保存しようとしても 実行時エラー '1004': このブックを、ほかの開いているブックまたはアドインと同じ名前では 保存できません。別の名前を指定するか、または保存する前に開いている ブックまたはアドインを閉じてくさい。 というエラーが表示されてしまうのです。 Excel2002でもExcel2003でも同じでした。 これを 仮に「コピー」の付いているファイルが すでに開かれているとしても これに上書きする形で保存できるようにするためには どうすればよいのでしょうか。 ご回答をよろしくお願いいたします。

  • エクセルマクロでファイルを保存するとき

    エクセル(2000)のマクロで、csvファイルを集計して、そのファイルをエクセル形式で保存しようとしています。 このとき、「カレンダー用データファイル」という名前で保存するように指定していますが、もし、同名のファイルが開いていたりすると エラーが出てしまいます。 マクロの中で、「カレンダー用データファイル」という名前のファイルが、現在開いていないか調べることが出来るのではと、いろいろ探してみたのですが、どうしても判りません。 どなたか 教えていただけませんか? また、同様のことを何度も繰り返すので上書き保存をしたいのですが、いちいち「同名のファイルがありますが上書きしますか?」というアラートを出さなくて住む方法もありましたら教えていただきたいです。

  • エクセルにマクロが!

    エクセル(Excel2000)で、マクロを使っていないのにマクロが使われてしまいます。 例えば、 まず普通にスタート→プログラムと表示していき、エクセルを立ち上げる。 次にどこのセルでもいいから適当に文字を入力する。(例えば、A1にaと入力する) そして、ファイル→名前を付けて保存で保存する。 こうしてできたエクセルのファイルを普通に立ち上げると、「このファイルはマクロが使われています」と、マクロを有効にするか、無効にするかを確認する画面が出てきてしまいます。 どうしてでしょうか。直す方法はあるのですか。よろしくお願いします。

  • EXCELマクロ 保存禁止させるには?

    EXCELのファイルを閲覧のみにしたいので、 [上書き保存]、[名前をつけて保存]等を禁止にするため、 以下のようにマクロを作成しようとしました。 EXCELマクロ、Workbook_BeforeSaveで、Cancel=Trueのコードを追加。 しかし、このマクロを入れるとこのブック自体が保存できないんです。 どうすればよいでしょう?

  • エクセルのマクロのついて

    初歩的な質問です(と思います)。 よろしくお願い致します。 エクセルの保存をマクロで実行したいのですが その際、保存名をエクセルの"A"というタブにあるA1セル に記載されている"B"という名前で保存したい。 この場合の命令文を教えてください。

  • エクセルで「名前を付けて保存する」マクロ

    エクセルのマクロに関して教えて下さい。 作成したエクセルの原稿を指定したフォルダに 「名前を付けて保存する」マクロを作成できればと思っています。 同じ名前で上書きなら問題ないのですが その都度違った名前で保存したい時に困っています。 名前の時だけ手動で入力するか 原稿の中に書いてある名前をコピーする方法でも良いです。 よろしくお願いします。

  • excelのマクロについて教えてくださいm(_ _)m

    はじめまして excelでマクロをつかって、 ファイルを『上書き保存』をするときに複数の別のフォルダにも同時に保存したいのです。 誰かご存知でしたら教えてください^^; ちなみにOffice excel 2003を使ってます^^

  • Excelで保存ができなくなる。そしてマクロが消失

    Excel~Microsoft365 での現象です。 ・xlsmファイルに簡単なマクロ(印刷するといったシンプル)を組んで使用しています。 ①使用していると、上書き保存ができなくなり、  「○○の保存中にエラーが検出されました。いくつかの機能を削除修復することにより、ファイルを保存できる場合があります。新しいファイルで修復を実行するには、[続行]をクリックしてください。ファイルの保存を中止するには、[キャンセル]をクリックしてください。」  と出ます。これが出ると、上書き保存も名前をつけて保存もまったくできなくなります。 ② ①の現象がでると、「マクロの表示」でマクロが表示されなくなります。   VABの画面では普通に表示されるファイルもあれば、固まったかのように表示されないファイルもあります。 これが複数のPCで起こり始めているので困っています。

  • エクセルのマクロで別ファイル(エクセル)のマクロを実行させるには?

    エクセルにおいてマクロを組んでいます. 1.実行させたいマクロAが組んであるファイル(Aファイルとします)が多数あります。またマクロAはモジュール内(Module1)に作っております。 2.1のマクロAを別のエクセルファイル(Bファイルとします)のマクロBで実行させたい. 上記のようなことを行いたいのですが可能でしょうか?さらに言えば、マクロBによってマクロAのプロシージャを指定して実行させることは出来るでしょうか? 現在は、マクロBによってマクロAを組んであるAファイルを開き、Aファイルのマクロの中にファイルを開いたときにマクロAを実行させる(イベントドリブン)ようにしています. 直接、マクロBでAファイルのマクロAを動かせるようになればマクロAにイベントドリブンなコードを組む手間がなくなるので、なんとかそのような事が出来ないでしょうか? どうか、詳しい方ご教授ください。 よろしくお願いいたします。。。