エクセル勉強中の者です。
急遽以下のマクロが必要となりましたので
教えて頂けませんでしょうか?

◆目的
マクロの使い方がわからない人にEXELファイルをメールするので
自動的に任意のマクロを起動させたい。
※ちなみにその相手はエクセルの設定すらいじれない方です・・・

◆自動実行させたいマクロ
こちらのEXELファイルをメールで受け取り、開いたら以下のマクロを
自動的に実行するようにしたい。

・印刷の余白が全て"0"にマクロで設定。
・印刷倍率を95%にマクロで設定。

以上です。

私自身、先日マクロの勉強を始めたばかりなので、この問題に
頭を抱えております。どうかご指導お願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>・・・End Subが必要です


余分な Sub や Function が書かれた行があると思いますが・・・

>ファイルを開いた瞬間に自動実行させる場合に追加する文法(式?)・・・
(1)まず、ツール→マクロ→Visual Basic Editor で VBE画面に移動します。
(2)VBE画面で、表示→プロジェクトエクスプローラ でプロジェクトエクスプローラを表示します。
(3)プロジェクトエクスプローラの『ThisWorkbook』をダブルクリックしてコードウインドウを出します。
(4)コードウインドウの上に(General)、(Declarations)と表示された窓があると思います。
   (General)の方の三角をクリックして『Workbook』をクリックします。
(5)コードウインドウに次のコードが自動的に書かれます。
     Private Sub Workbook_Open()

     End Sub
(6)この2行の間にBookをOpenした時に行いたいことを書きます。
(7)このWorkbook_OpenがBookを開いた時に実行されます。(他にも方法はありますが)

2行の間に、With~End With を貼り付けてみて下さい。
    • good
    • 0

どのシートをセットアップしたいか分かりませんので、Sheet1の例と全てのシートをセットアップする例です。

どちらかをThisWorkbook に貼り付けます。

ただ、シートのセットアップは保存した時、記憶されていますので、事前に設定しておけば開いた時に再度設定しなおすことはないような気がしますが・・・
また、ブックを開いた時に警告が出たり、相手のセキュリティレベルも考慮する必要があると思います。 ご参考に。(Excel2000です)


'Sheet1をセットアップの例
Private Sub Workbook_Open()
  With Worksheets("Sheet1").PageSetup
    .LeftMargin = Application.InchesToPoints(0)
    .RightMargin = Application.InchesToPoints(0)
    .TopMargin = Application.InchesToPoints(0)
    .BottomMargin = Application.InchesToPoints(0)
    .HeaderMargin = Application.InchesToPoints(0)
    .FooterMargin = Application.InchesToPoints(0)
    .Zoom = 95
  End With
End Sub

'全てのシートをセットアップの例
Private Sub Workbook_Open()
  Dim ws As Worksheet 'シート

  For Each ws In Worksheets
    With ws.PageSetup
      .LeftMargin = Application.InchesToPoints(0)
      .RightMargin = Application.InchesToPoints(0)
      .TopMargin = Application.InchesToPoints(0)
      .BottomMargin = Application.InchesToPoints(0)
      .HeaderMargin = Application.InchesToPoints(0)
      .FooterMargin = Application.InchesToPoints(0)
      .Zoom = 95 '拡大/縮小
    End With
  Next
End Sub

この回答への補足

ご丁寧な回答ありがとうございます。
そのまま利用したのですが、
「コンパイルエラー:End Subが必要です」
とのミニ警告Windowが開き実行されません。

もちろんnishi6さんの作成文にあるEnd Subの部分も
きっちり貼り付けました。
バージョンはEXEL2000です。

ちなみに他のマクロを作った場合等で、
ファイルを開いただけでマクロを実行させるには、
どういった記述を追加すれば良いのでしょうか?

私はマクロ初心者なのでExelマクロの機能である
「新しいマクロを記録する」で記憶させてからVisualBasicで手直し・・
という形でしかマクロを扱えません。

お手数ですが、ファイルを開いた瞬間に自動実行させる場合に追加する
文法(式?)を教えて頂けないでしょうか?

補足日時:2002/01/23 01:44
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcel マクロの自動実行と編集作業

「Auto_Open」でマクロを自動実行しています。そうするとVBAを編集するにも一度実行してしまうことになります。VBAの書き方が拙いこともあり実行後にSAVEすると次回エラーで動きません。画面は結構複雑で毎回クリアするのも大変です。何か良い編集方法はありませんか?それともVBAを書き換えるしかありませんか?
Excel VBAは見よう見まねで基礎から学んだことがありません(VBは結構経験あり)。仕事に使っていて今困っています。とりあえず解決策を教えてください。

Aベストアンサー

Auto_Open を実行させずにBookを開いてマクロを編集したいという意味でしょうか?

1)マクロのセキュリティを「高」または「中」にしてマクロ無効で開く。

または
2)別BookのマクロからBookをOpenするとAuto_Openは実行されないので別Bookから
Sub Macro1()
  Workbooks.Open Filename:="D:\test\test.xls"
End Sub
などとして開く。

または
3)Shiftキーを押しながら開くと Editable:=True で開くのでAuto_Openは実行されない。(と思う)

Qaccessマクログループの全マクロの実行方法

お世話になります。

現在、顧客のデータベースを作成しております。DBは名前、住所等の連絡先を入力したテーブルを元に下記のクエリやマクロを作成しています。取引がない顧客等はメイン名簿テーブルから削除して、メインテーブルの構造をコピーした、削除テーブルに入れるようにしたいと考えています。

そこで下記のテーブル、クエリ、グループマクロを作成しました。グループマクロは作成したクエリ3つで構成されています。各アクションクエリは一個一個は正常に作動するのですが、グループマクロを実行しますと、1行目のクエリしか実行されません。実行方法はマクロの画面で更新ボタンを押しても、フォームに削除というボタンを作成してクリック時にグループマクロを実行させるよう設定した場合の両方で起きます。

 グループマクロに登録されているマクロを全て実行するにはどうしたらいいのでしょうか。色々調べると、グループマクロは1行目しか実行できないようですが、全て実行する簡単な方法はありませんか?できればVBAではない方法を希望します。大変お手数ですがどうぞ、よろしくお願い致します。


 ・(テーブル)メイン名簿(以下、名簿tblとします)
   ⇒フィールド:名前、郵便番号、住所、電話、メモ欄、削除の有無、削除処理日

 ・(テーブル)削除テーブル(以下、削除tblとします)
   ⇒フィールドは上記と同じ

 ・(更新クエリ)削除処理日追加
   ⇒名簿tblの「削除の有無」フィールドにyesと入力されていれば、「削除処理日」に処理日が
    入力されるようにdate関数を設定しています。(date())

 ・(追加クエリ)削除tblへ追加
   ⇒名簿tblの「削除の有無」フィールドにyesと入力されていれば、「削除tbl」へそのレコードを、
    追加する。
 
 ・(削除クエリ)名簿tblからの削除
   ⇒名簿tblの「削除の有無」フィールドにyesと入力されていれば、名簿tblからそのレコードを、
    削除する。

 ・(マクログループ)削除処理(上から順番に実行希望)
    マクロ名           アクション     クエリ名
    削除処理日追加     クエリを開く    (更新クエリ)削除処理日追加
    削除tblへコピー      クエリを開く    (追加クエリ)削除tblへ追加
  名簿tblからの削除    クエリを開く    (削除クエリ)名簿tblからの削除                     
                                  以上

お世話になります。

現在、顧客のデータベースを作成しております。DBは名前、住所等の連絡先を入力したテーブルを元に下記のクエリやマクロを作成しています。取引がない顧客等はメイン名簿テーブルから削除して、メインテーブルの構造をコピーした、削除テーブルに入れるようにしたいと考えています。

そこで下記のテーブル、クエリ、グループマクロを作成しました。グループマクロは作成したクエリ3つで構成されています。各アクションクエリは一個一個は正常に作動するのですが、グループマクロを実行しま...続きを読む

Aベストアンサー

> 全て実行する簡単な方法はありませんか?

3つのアクションクエリを「常にセットで実行」するのでしたら、マクロのデザインビューの
『マクロ名』欄は、全て空白にして下さい。

【現状】 ※クエリ名はここでは省略しています。
 <マクロ名>     <アクション>
削除処理日追加  クエリを開く
削除tblへコピー   クエリを開く
名簿tblからの削除 クエリを開く

【修正版・1】
 <マクロ名>     <アクション>
            クエリを開く
            クエリを開く
            クエリを開く

【修正版・2】
 ※bin-chanさんからの回答にもある、クエリ実行前に都度発生する確認メッセージを
  省略する場合。
 <マクロ名> <条件> <アクション>      『メッセージの表示』引数
         (*1)   マクロの中止       ↓
              メッセージの設定   「いいえ」
              クエリを開く
              クエリを開く
              クエリを開く
 ※「(*1)」には、以下の式を入れてください:
   MsgBox("処理を実行します。", 1, "確認")=2
 ※マクロの場合は、マクロの処理が終了するのと同時に『メッセージの設定』を「はい」に
   戻さなくても自動で元の設定に戻ります(VBAと動作が違うので、VBAに乗り換える
   場合は注意が必要)。

★フォームからの呼び出し方が、「(親マクロ名).削除処理日追加」となっている場合は、
 「(親マクロ名)」の形に変更して下さい。


  ------------------------------

また、各アクションクエリを個別でも実行したい、という場合は、以下のような形にします。

【修正版・3】
 <マクロ名>   <条件> <アクション>    『マクロの実行』引数の値
           (*1)   マクロの中止      ↓
                マクロの実行  「(親マクロ名).削除処理日追加」
                マクロの実行  「(親マクロ名).削除tblへコピー」
                マクロの実行  「(親マクロ名).名簿tblからの削除」
削除処理日追加      メッセージの設定
                クエリを開く
削除tblへコピー       メッセージの設定
                クエリを開く
名簿tblからの削除     メッセージの設定
                クエリを開く


※「(*1)」は【修正版・3】と同じもの。


・・・以上です。

> 全て実行する簡単な方法はありませんか?

3つのアクションクエリを「常にセットで実行」するのでしたら、マクロのデザインビューの
『マクロ名』欄は、全て空白にして下さい。

【現状】 ※クエリ名はここでは省略しています。
 <マクロ名>     <アクション>
削除処理日追加  クエリを開く
削除tblへコピー   クエリを開く
名簿tblからの削除 クエリを開く

【修正版・1】
 <マクロ名>     <アクション>
            クエリを開く
            クエリを開く
   ...続きを読む

Qエクセル:シートのタブをクリックすると自動で実行されるマクロ

よろしくお願いします。
あるエクセルファイルの
「リスト作成」というシートを選ぶ(そのタブ(見出し)をクリック)するだけで、

◆『自動で、そのシート(リスト作成)のセルC4に【=IF($B$6=1,YEAR(TODAY())+1,YEAR(TODAY()))】という計算式を入れるマクロを作りたい』

のです。ご指導ください。お願いします。

Aベストアンサー

「リスト作成」というシートのモジュールに

Private Sub Worksheet_Activate()
Range("C4").Value = "=IF($B$6=1,YEAR(TODAY())+1,YEAR(TODAY()))"
End Sub

と記入してみてください。

Qマクロ実行時のエラー「エラー番号1004lineStaylの設定ができませんでした」の原因

マクロを実行したらエラーがでます。「エラー番号1004lineStayl(ラインスタイル)の設定ができませんでした」というメッセージが出るのですが、原因は何でしょうか?
お願いします。

Aベストアンサー

検索すると、こちら↓がヒットしましたが...

XL2000: 描画オブジェクトからの削除時の問題の行します。
http://support.microsoft.com/kb/213576/ja
『実行時エラー 1004 LineStyleプロパティを設定できません』
http://www.excel.studio-kazu.jp/kw/20081009194607.html
罫線を引くとエラーが出るが?
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9582.html

Qexelの自動計算

exel2002を使っています。
表計算でオートサムを使っている人に
前は1つのセルの数値を変えると
合計が書いてある数値などが自動的に
変化して計算してくれていたのが
できなくなったから直してくれとのこと。

私にはどうにもわかりません。
どうしたらいいですか?

Aベストアンサー

ツール→オプション→計算方法→で手動を自動にしても治りませんか?


人気Q&Aランキング

おすすめ情報