ラベル 他処理 の投稿を表示しています。 すべての投稿を表示
ラベル 他処理 の投稿を表示しています。 すべての投稿を表示

VBA 印刷を一枚に納める




オブジェクト内容など
エクセルで印刷がずれないように一枚に納める方法です。

PageSetupオブジェクトを使用します。
PageSetupはページのレイアウトもろもろが出来そうです。

一枚に納める時に使用するのはFitToPagesWideFitToPagesTallです。

サンプル
    With Worksheets("Sheet1").PageSetup
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With


FitToPagesWide = 1
で横一枚に納めて
FitToPagesTall = 1 で縦を一枚に納めています。


エクセル2010だと「ページレイアウト」の「拡大縮小印刷」欄と同様の動きになります。

拡大・縮小を100%にする場合は
Zoomの値を変更します。
With Worksheets("Sheet1").PageSetup
  .Zoom = False
  .FitToPagesWide = 1
  .FitToPagesTall = 1
End With


関連ページ
印刷範囲の設定

VBA ファイルをコピーする(FileCopy)




ステートメント構文など
FileCopy source, destination

ファイルのコピーをするステートメントです。
source にコピー対象のファイルを指定し、 destination にコピー後のファイル名やファイルパスを指定します。
source もファイルパスから指定出来ます。


サンプルコード
Sub SampleFCsd()
    Dim A, B'(
    'コピー元のファイル A
    A = "C:\test.xlsx"
    
    'コピー後のファイル B
    B = "D:\test.xlsx"
        
        'AをBにコピー
        FileCopy A, B
    
End Sub
上記ではCドライブ直下にあるtest.xlsxというファイルをDドライブ直下にコピーする作業を実行しています。


カレントディレクトリ(現行フォルダ、ファイルパス)の変更



メソッド構文
VBAでカレントディレクトリ(現行フォルダ)の変更方法です。
2018/7/25 64bit対処、CreateObjectのエラーについて追記しました。

通常、カレントフォルダはファイルを開いたり保存したりすると自動的に変更されます。
ここでは任意にカレントフォルダを変更する方法についてまとめます。
使用中のPC内のローカルのフォルダ参照をする場合は ChDir を使用すれば簡単にカレントフォルダを変更出来ますが、 ネットワークドライブ上のフォルダに変更する場合は,WIN32API ( Application Programming Interface )かWSH (Windows Script Host)を使用することになります。
ユーザーにファイルを選択させて開かせる処理やファイル保存時などに活用出来ると思います。


1.ローカルPC上での変更方法

ChDir path
path に変更したいフォルダ(ファイルパス)を指定します。

サンプルコード
Sub S1_ChDir()
    'CurrentDirectoryを変更する
    ChDir "C:\Documents and Settings"
End Sub


2.ネットワーク上への変更方法 ( WIN32API )
宣言
32bit:
Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA"
(ByVal lpPathName As String) As Long

64bit:
Private Declare PtrSafe Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA"
(ByVal lpPathName As String) As Long


実行
Call SetCurrentDirectory ( FilePath )

エクセルの32bit と 64bitで宣言部分が異なります。
~宣言部分の意味~
Declare Function~ でAPI関数であることを宣言しています。
SetCurrentDirectory は関数名(通常名)を表示しており、
Lib "kernel32" は関数があるDLL名で、 Alias "SetCurrentDirectoryA" は関数名(実際の)です。
(ByVal:値渡し(プロシージャに値を提供)、lpPathName はパス名で(ByVal lpPathName As String)はSetCurrentDirectory関数の引数です。
 As LongはSetCurrentDirectory関数の戻り値が整数型ということを意味しており、失敗すると0が返り、成功すると0以外の値が返ります。

~実行部分の意味~
SetCurrentDirectory 関数の引数FilePathを呼び出す(現行フォルダにする)
FilePathに変更したいフォルダ(ファイルパス)を指定します。

サンプルコード
Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long

Sub S2_ChDir()
'変更後パスFilePathの宣言
Dim FilePath As String
    '変更するファイルパスの指定
    FilePath = "\\NetWork\Path01"
    '変更の実行
    Call SetCurrentDirectory(FilePath)
End Sub


3.ネットワーク上への変更方法 ( WSH )

CreateObject("WScript.Shell").CurrentDirectory = FilePath

FilePathに変更したいフォルダ(ファイルパス)を指定します。

サンプルコード
Sub S3_ChDir()
  'CurrentDirectoryを変更する
  CreateObject("WScript.Shell").CurrentDirectory _
  = "\\NetWork\Path01"
End Sub


指定したパスが存在しない場合は

と、「CurrentDirectoryメソッドは失敗しました。'IwshShell3'オブジェクト」というエラーが表示されます。
正しいパスを指定してください。

警告や確認メッセージを非表示にする DisplayAlertsプロパティ



Application.DisplayAlerts = False

Applicationオブジェクトのプロパティです。
警告や確認メッセージの表示、非表示をコントロールします。

既定値は True でファイル保存時の上書き保存の確認、その他、注意や警告のメッセージウインドウを表示するようになっています。
メッセージが表示されると"OK"ボタン等をクリックしなければ中断されたままになるので、止めずに処理したい場合等に記述します。
プロージャ終了時に通常はTrueに戻ります。