[[20121220153336]] 『PDFファイルのサイズ指定挿入』(挫折) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『PDFファイルのサイズ指定挿入』(挫折)

PDFファイルのサイズ指定挿入可能なのでしょうか?

過去ログをみても写真についてはのっていましたがPDFが無くて・・・

マクロは分からないので、過去ログに テキストボックス→色と線→塗りつぶし効果

を試しましたが、PDFはダメなようで。

ちなみにPDFはA4印刷で 2個〜5個挿入して印刷したいです。

設定があるならシートを2個用・3個用と分けてもいいのですが。

会社で使用します、すでにPDFファイルが数千点あるため

PDFでの挿入が希望です。   Excel2003を使用しています。

お願いします。


マクロは全く使えませんか?その場合は無視して下さい(マナ)

 予め挿入したい位置に、枠を用意しておいて、pdfを挿入するマクロです。

 1)PDFを挿入する位置にオートシェイプ(四角形)を用意してください
 2)オートシェイプの書式設定で、「オブジェクトを印刷する」のチェックをはずします。
 3)右クリックして、下記のマクロを登録します。

 4)オートシェイプをクリックしてマクロを実行します。
 5)選択したpdfファイルが挿入されます。

 これを2個用シートには、2個用意しておきます。3個用シートなら3個です。

 Sub pdfファイル挿入()
    Dim myT As Double
    Dim myL As Double
    Dim myW As Double
    Dim myH As Double
    Dim myPDF

    myPDF = Application.GetOpenFilename("pdfファイル,*.pdf")
    If myPDF = False Then Exit Sub

    With ActiveSheet.Shapes(Application.Caller)
        myT = .Top
        myL = .Left
        myW = .Width
        myH = .Height
    End With

    With ActiveSheet.OLEObjects.Add(Filename:=myPDF).ShapeRange
        .LockAspectRatio = msoTrue
        .Top = myT
        .Left = myL
        If myW / .Width > myH / .Height Then
            .Height = myH
        Else
            .Width = myW
        End If
    End With

 End Sub


回答ありがとうございます。

マクロは使った事ないですが、今から挑戦してみます。


出来ました。ありがとうございます。

ここからは贅沢な相談です。

これでも十分なので無理ならあきらめます。

PDFファイルは全て横向きです。

A4縦に3枚挿入する場合、上のほうに1枚、下に2枚並べて挿入します。

この時、少しでも大きくしたいので、下に並べるPDFを90度回転した

状態で挿入できないでしょうか。

前にも書きましたが、既にPDFファイルが数千あるため元データを

変更するのは大変で、PDFを回転して保存は不可能なようなので・・・

宜しくお願いします。


pdfは図になっちゃいますが、いいですよね(マナ)

 横用の枠には、こっちのマクロを登録してみてください。

 Sub pdf横にして挿入()
    Dim myT As Single
    Dim myL As Single
    Dim myW As Single
    Dim myH As Single
    Dim myPDF

    myPDF = Application.GetOpenFilename("pdfファイル,*.pdf")
    If myPDF = False Then Exit Sub

    With ActiveSheet.Shapes(Application.Caller)
        myT = .Top
        myL = .Left
        myW = .Width
        myH = .Height
    End With

    Application.ScreenUpdating = False

    ActiveSheet.OLEObjects.Add(Filename:=myPDF).Cut
    ActiveSheet.PasteSpecial Format:="図 (JPEG)"

    Selection.ShapeRange.Rotation = -90
    Selection.Cut
    ActiveSheet.PasteSpecial Format:="図 (JPEG)"
'
    With Selection.ShapeRange
        .LockAspectRatio = msoTrue
        .Top = myT
        .Left = myL
        If myW / .Width > myH / .Height Then
            .Height = myH
        Else
            .Width = myW
        End If
    End With

    Application.ScreenUpdating = True

 End Sub

出来ました。

贅沢な悩みまで解決してもらい助かりました。

ありがとうございます。


マナさん 何度もありがとうございます。

もう1つ質問させてください。

現在、上の2つのマクロを利用させてもらっています。

オートシェイプをクリックすると「ファイルを開く」画面が出てきて

挿入するPDFファイルを選択するのですが、

この時「ファイルを開く」の画面は、たぶん最後に利用した場所が

出てくると思うのですが、場所を指定することは可能なのでしょうか?

(ファイルの保存先が大きく分けて2つあります。

 例えば 3つのPDFを挿入する場合、1つはフォルダA 残り2つはフォルダB、とフォルダは固定です。

 毎回、フォルダを移動する事は可能なのですが、会社で他の人も利用させてもらっているため

 年配の方は場所が分からんといってきます。)

 ディスクトップにショートカットを2つ作成するのも1つの方法なのですが、
 部署や営業所が違ったりして説明が難しそうなので。

 一応、過去の質問で、マクロ フォルダを開く 等で検索してみたのですが、分かりませんでした。


「場所が分からん」という気持ちはよくわかります(マナ)

 あるいは「場所を選ぶのが面倒」って感じるかも知れません。
 最初に開くフォルダを指定することは可能なのですが、どういった運用がよいかは迷っています。

 1)フォルダAかフォルダBどっちを選ぶかは、挿入する場所で決まっていますか。もしそうなら、今は縦用と横用を別のマクロにしていますが、そこは一つにして、ファルダA用、ファルダB用マクロにします。
 2)フォルダの場所は、部署や営業所ごとに違いますか。ネットワーク上の共有フォルダですか。


たぶん↓の「任意のフォルダを開く」を応用することになります(マナ)
  
http://officetanaka.net/excel/vba/file/file02.htm
  

返答ありがとうございます。

フォルダはネットワーク上の共有フォルダです。

挿入する場所とフォルダは決まっているので一度指定できたら、変わる事はありません。

今、参考に乗せてもらった所のネットワークドライブにChDriveするを見ています。

APIを使うやり方

Declare Function SetCurrentDirectory Lib "kernel32" Alias _

                            "SetCurrentDirectoryA" (ByVal CurrentDir As String) As Long

Sub Sample1()

    SetCurrentDirectory "\\NotePC\E\Work\"
    MsgBox CurDir
End Sub

"\\NotePC\E\Work\" ←ここのアドレスを変更すればいいと思うのですが

前に回答をいただいたマクロのどこに入れればいいのでしょうか?
別のマクロを設定するのでしょうか?

Sub Sample1()はSub pdf横にして挿入()と変更でいいのでしょうか?

質問ばかりでスイマセン。


こんな運用では、どうですか(マナ)
  
 1)各オートシェイプに、最初に開くフォルダを登録しておく。
 右クリックから登録できるようにする。初回に登録すれば、2回目からはこの操作は不要です。
 後で、フォルダを変更したくなれば再登録もできます。
 この操作は、ひな形ファイルの作成者として、挫折さんが実行してください。
  
 2)オートシェイプを左クリックで、1)で登録されたフォルダが開き、PDFファイルを選択すると、挿入される。
 この操作は、これまでと一緒です。
  
 挫折さんが1)を実施しておけば、他の方は2)のみで済みます。
  
  
 絶対に変更がないなら、コードの中に、フォルダの場所を書いてしまってもよいのですが
 その場合ですと、コードの意味がわかっていないと修正できないことになります。
  
 正直なところ、どうしたほうがよいか迷っています。
  
 いずれにしても、今は時間がないので、コードは今晩になります。
  


まずはこれを試してみて下さい(マナ)

 ★の行は修正が必要です。ここでどのフォルダを開くかを決めています。

 Sub フォルダAのPDF挿入()
    Dim myT As Single
    Dim myL As Single
    Dim myW As Single
    Dim myH As Single
    Dim myPDF As String

    myPDF = "\\NotePC\E\Work\"  '★実際のフォルダAのパスに修正

    With ActiveSheet.Shapes(Application.Caller)
        myT = .Top
        myL = .Left
        myW = .Width
        myH = .Height
    End With

    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "ファイルを選択して下さい"
        .Filters.Clear
        .Filters.Add "PDFファイル", "*.pdf"
        .InitialFileName = myPDF
        .Show
        If .SelectedItems.Count > 0 Then
            myPDF = .SelectedItems.Item(1)
        Else
            MsgBox "ファイルを選んで下さい"
            End
        End If
    End With

    Application.ScreenUpdating = False

    ActiveSheet.OLEObjects.Add(Filename:=myPDF).Cut
    ActiveSheet.PasteSpecial Format:="図 (JPEG)"

    With Selection
        If (myW - myH) * (.Width - .Height) < 0 Then
            .ShapeRange.Rotation = -90
            .Cut
            ActiveSheet.PasteSpecial Format:="図 (JPEG)"
        End If
   End With

   With Selection.ShapeRange
        .LockAspectRatio = msoTrue
        .Top = myT
        .Left = myL
        If myW / .Width > myH / .Height Then
            .Height = myH
        Else
            .Width = myW
        End If
    End With

    Application.ScreenUpdating = True

 End Sub

マナさん何度もありがとうございます。

ハイパーリンクの使い方を初めて知りました。

こちらの方法で問題ないと思います。

ちなみに、マクロを教えてもらいましたが、コンパイルエラー・構文エラーが

でてきてしまいました。

色が反転するのは最初の Sub フォルダAのPDF挿入()

フォルダ名が問題あるのかと思い、漢字、カナ半角、半角英数など名前を変えてみたのですが

エラーは無くなりませんでした。名前の問題ではないのですね。

今後のために、このエラーが出てきた理由が分かると嬉しいです。

フォルダ名は練習として「フォルダA」とし、アドレスも

"\\NotePC\E\Work\"の NotePC\E\Work 部分を消して、「フォルダA」の出てくる1つ前のアドレスを

(フォルダの上に出てくるアドレス)コピーして貼り付けています。

明日で仕事納めです。

問題も解決し、来年より効率よく仕事が出来ます。

マナさんをはじめ、このサイトで助けてくれる方たち今年一年ありがとうございました。

来年も多く質問させてもらう事になると思いますが、宜しくお願いします。

よいお年をお過ごしください


ハイパーリンクじゃなかったのかな?

フォルダが開いて喜んでいたら、普通に開いただけで、エクセルに挿入されなかった・・・orz

オートシェイプ 右クリック ハイパーリンク で登録しましたが

マナさんの言う登録と違うのでしょうか?

年末の挨拶をした後で恥ずかしいのですが教えてください。


かってにバタバタしています。

「ファイルを開く」画面のツール マイプレースで解決できました。

今度こそ・・・

よいお年をお過ごしください


こちらの方針が曖昧なまま回答したため、混乱させてしまったようで、申し訳ありません(マナ)

 上の提案は、ハイパーリンクではなく、

 > 1)各オートシェイプに、最初に開くフォルダを登録しておく。

 は、この操作自体もマクロで実施することを考えていました。
 ただし、この操作でも、1回だけフォルダAを探さないといけませんので「場所が分からん」となります。
 それで、他の方ではなく、挫折さんに実施してもらうのが良いかなと考えたわけです。

 Sub フォルダAのPDF挿入()のコンパイルエラーの件は、ちょっとわかりませんが、
 マクロをコピペした画面で、
 「ツール」ー「参照設定」を選び「Microsoft Office 11.0 Object Library 」
 にチェックが入ってなければチェックしてみてください。

 ともあれ、マイプレースで、解決したのであればよかったです。
 ただ、デスクトップにショートカットと基本的に同じで、部署や営業所が違うと説明が大変ではありませんか。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.