電子書籍の厳選無料作品が豊富!

エクセルvba
お世話になります。

【A4縦、余白を0に設定】するような
vbaコードがあります。

それをコピペして新たな別のファイルで使います。
その方法教えて下さい。
【新しいファイルに紐付け出来ない】
既にあるものをステップインしてなんとか出来た気がしますがよく理解出来ていません。
拙い質問で恐縮です。
言葉足らずな点は補足します。
よろしくお願いいたします。

A 回答 (3件)

>【A4縦、余白を0に設定】するようなvbaコードがあります。


マージンの上と左は、プリンター側の物理的余白がありますから、それを別にすれば、余白は0の設定は、可能かと思います。

それともかく、マクロでマクロを載せるのか書くか、という質問になります。
この前の人のように、ヒントとして出したのですが、途中でキレて、締め切りにしてしまいました。そういう気の短い人には、そもそも無理なマクロです。

単刀直入に言うとマクロウィルスの技法なのです。簡単なコードには違いないのですが。

このプロテクトはどこを外すかぐらいは、ご自身で調べてください。
#1さんの内容をマクロ化すると、こうなります。一応、標準モジュールの1を対象としました。

'エクスポート
Sub VBP_Export()
ThisWorkbook.VBProject.VBComponents.Item("Module1").Export _
Filename:=ThisWorkbook.Path & "\Module1t.bas"
End Sub

'インポート
Sub VBP_Import()
ActiveWorkbook.VBProject.VBComponents.Import _
Filename:=ThisWorkbook.Path & "\Module1t.bas"
End Sub

>【新しいファイルに紐付け出来ない】
紐付けとは言わないけれどもね。ふつうは、上記のようなイレギュラーなことをしないで、インスタンスをつけますね。実際は、クラスの中のコードは、ブック名とか選別した方がよいとは思います。
'-------------------
'標準モジュール
Public myClass As New Class1
Sub Auto_Open()
'ブックオープン時に設定される。
 Set myClass.myApp = Application
 
End Sub

'Class1 モジュール
Public WithEvents myApp As Application
Private Sub myApp_WorkbookBeforePrint(ByVal Wb As Workbook, Cancel As Boolean)
  Cancel = True
'以下はマージンを0にするコード・左と上しか出来ないはずです。
'With - End With は、仮のマクロ
  myApp.Left = 0
  myApp.Top = 0
  With Wb.ActiveSheet
  .PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
  End With
  Wb.ActiveSheet.Range("A1").Select
End Sub
    • good
    • 0

【新しいファイルに紐付け出来ない】・・・この意味がよくわかりませんが、


そのvbaコードを新たな別のファイルにコピペして、そのまま使えばよいかと。
もし、それでだめなら、どのようにだめなのかを具体的に説明するとか、vbaのコードを提示するとか、
しないと期待した回答は得られないかと。
    • good
    • 0

VBAのウィンドウで標準モジュールの下にある名前を右クリックし「ファイルのエクスポート」を実行して、どこかのフォルダへ落とす。



貼り付けたい方のVBAのウィンドウで「標準モジュール」を右クリックし「ファイルのインポート」を実行して、持ってくる。
    • good
    • 0

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