5月 20

こんにちは。

今日はExcelVBAのお話です。

皆さん、例えば会社の先輩に
「このフォルダの中のPDFファイル、全部印刷かけておいて」
なんていわれることないですか??

・・・そうそうないですよね(笑)

今回実は私自身が
「フォルダ内のPDFファイルを一括で印刷する」 という作業が
どうしても必要になってしまったのです(^-^;)

あるフォルダの中にたくさんのPDFファイルが存在します。
これを印刷する為には、そのファイルを一つずつ開いて
印刷を掛けて・・・の繰り返しになります。

ファイルが5個や10個くらいなら、多少面倒でも
やれないことはないですよね。

でもそのファイルの数が30個や、はたまた100個だったら・・・

一日終わってしまいます・・・。

そこで、この開いて印刷するという「繰り返し」部分を
VBAでどうにかならないかということで
色々調べた上で、実行できたものが下記となります。

何を言っているのかわからない部分も多いと思いますが
わかる必要は特にありません(笑)

もし同じ状況になったら、ここにあるコードを
コピーペーストしてお使いください♪

今回は、マシンのデスクトップに【問題集】というフォルダがあり
そのフォルダ内のPDFファイルを印刷するという前提で作成されていますので
ご自身で利用するときには、フォルダの場所を変えてあげれば使えます♪

—————————–

Sub フォルダ内PDFファイル一括印刷()

Dim strPath As String
Dim strFileName As String
Dim pdffiles() As String
Dim intcount As Integer

‘変数strPathに、フォルダのパスを格納
strPath = “C:\Documents and Settings\isa\デスクトップ\問題集\”

‘変数strFileNameに、フォルダ内のファイル名を格納
strFileName = Dir(strPath)

‘フォルダ内のファイルがなくなるまでLoop
Do Until Len(strFileName) = 0
   
    ‘ファイル名の右から3文字が”pdf”かどうか判別   
 If Right(strFileName, 3) = “pdf” Then
       
        ‘pdffilesにその時のファイル名を取得し配列として格納
        ReDim Preserve pdffiles(intcount)
        pdffiles(intcount) = strFileName
       
        ‘pdffiles(0)・pdffiles(1)というようにファイルの数だけ
       ‘配列のインデックス番号が増えて管理できるようにするため+1する
        intcount = intcount + 1
       
    End If
   
    ‘一度Dir関数で取得されたファイルは取得されないようにする処理
    strFileName = Dir()

Loop

‘——————————————
‘ここまでの処理でpdffilesという配列には
‘ファイルの数だけ配列が出来上がっている状態
‘——————————————

‘——————————————
‘ここから下はpdffilesという配列に入っている
‘ファイルを順番に印刷をかける処理
‘——————————————

Dim AcroExchApp As Object
Dim AcroExchPDDoc As Object
Dim AcroExchAvDoc As Object
Dim buf As Long

Set AcroExchApp = CreateObject(”AcroExch.APP”)
Set AcroExchPDDoc = CreateObject(”AcroExch.PDDoc”)
Set AcroExchAvDoc = CreateObject(”AcroExch.AVDoc”)

buf = AcroExchApp.Show

Dim i As Integer

    For i = 0 To UBound(pdffiles)
        buf = AcroExchAvDoc.Open(strPath & pdffiles(i), “”)
        Set AcroExchPDDoc = AcroExchAvDoc.GetPDDoc()

        ‘開いたPDFファイルのページ数をnumPageに格納
        Dim numPage As Long
            numPage = AcroExchPDDoc.GetNumPages
           
            ‘PrintPagesで印刷をかける
            ‘プリンタはデフォルトのプリンタで、印刷のダイアログボックスは
            ‘表示されない
            ‘以下のステートメントは開いたPDFファイルの
            ‘最初のページから最後のページまでを印刷をかけるもの
            ‘また戻り値は「-1」ならうまく機能している
            ‘「-1」以外はPDFファイルが開いていないときに返される戻り値

            buf = AcroExchAvDoc.PrintPages(0, numPage - 1, 2, 0, 0)
       
            ‘一行上のステートメントで「-1」以外の戻り値の場合は
            ‘ファイルが開かれていないときにおきるので
            ‘変数bufが「-1」以外だったら印刷失敗というメッセージを出すようにしている

            If buf <> -1 Then
                MsgBox (”印刷に失敗しました。ファイルが開かれていない可能性があります”)
            Exit Sub
       
        End If
       
        buf = AcroExchAvDoc.Close(False)
    Next

buf = AcroExchApp.Exit

Set AcroExchApp = Nothing
Set AcroExchPDDoc = Nothing
Set AcroExchAvDoc = Nothing

End Sub
—————————————————-

以上です。

長くなってしまってすみません・・・。

一応動作環境は
WindowsXP ServicePack3
Excel2003
Adobe Acrobat7.0 Professional

です。

※Adobe Acrobat7.0 Professionalがない環境では
うまく動作しない可能性があります。
あらかじめご了承下さい。
※また、この記事からコピーをしてVBEのコードとして貼り付けを行うと
コメントにしている部分(緑色の文字色になっているところ)が
うまく貼り付けできない現象が確認されています。
お手数ですが、お試しになる際には、コピーペーストをした後に
ご自身でコメントアウト処理をお願いいたします。

今回はこんなこともExcelVBAではできるんだ!

ということがお分かりいただければ幸いです★

それでは、また♪

パソコンスクールISA船橋校 並木

5月 20

こんにちは。

今日はIllustratorでモザイク柄を作ってみたいと思います。

まずは完成例♪
モザイク柄完成例

今回のモザイク柄、どこで使うの?
という疑問もあると思います。

頻繁につかうものではないと思いますが
デザイン的に利用することで非常に面白い効果もでるので
プラスアルファ的な知識として覚えておいて良いと思います♪

では、その手順です。

1.まず四角形を描きます。
今回は50mm×50mmの四角形にしました。
また描いた四角形に好みのグラデーションをかけておきます。
モザイク柄手順1

2.描いた四角形を選択し、【オブジェクト】メニュー>【ラスタライズ】を選択します。
表示されるダイアログボックスはデフォルトのままで問題ありません。
モザイク柄手順2

3.描いた四角形を選択した状態で
【フィルタ】>【クリエイト】>【モザイク】を選択します。
モザイク柄手順3

4.設定画面は下図のように今回はしています。
作成するモザイク柄の図形は、最初に作成した四角形のサイズと
同じにしますので、幅・高さともに50mmにしています。
モザイク柄手順4

5.完成です♪
モザイク柄完成例

【Before After】
下図が最初の状態と、モザイク柄を作成した状態をわかりやすく
縦に並べたものです。
モザイク柄BeforeAfter

いかがでしょうか?

結構色々なことができるわけですね♪

ご自身が何か制作するときのデザインのヒントとして
このモザイク柄も覚えておくと良いかもしれませんね。

パソコンスクールISA 船橋校 並木