エクセルで写真のスライドショーがしたい

このQ&Aのポイント
  • 毎日100枚の写真が特定のフォルダーに保存され、一日経つと自動削除されます。
  • これらの写真をエクセルに取り込み、簡単に閲覧する方法を知りたい。
  • ユーザーフォームやフォトビューアー、スピンボタンなど様々な方法がありますが、写真が多い場合はスライドショーが望ましいです。
回答を見る
  • ベストアンサー

【エクセルマクロVBA】写真のスライドショーしたい

毎日100枚の写真が、ある特定のフォルダーに保存されます。 これらは、一日経つと、自動で削除されます(バッチファイルで) これらの写真を、エクセルに取り込んで、 簡単に閲覧できるようにしたいのです。 写真を100枚挿入するマクロは書けるのですが、 その挿入した写真をどのように集め、スライドショーにするか、という 方法について悩んでいます。 コードは自分で調べるので、 どのような仕組みにしたらいいか、知恵をお貸し頂けますでしょうか? 例えば: (1)ユーザーフォームを使う (2)フォトビューアーをエクセルで立ち上げる (3)スピンボタンを使う (4)スライドショーにしないで、ワークシートに順番に表示 ※できれば、この方法は避けたい。写真の数が多いので・・・ よろしくお願いします・・・

noname#221405
noname#221405

質問者が選んだベストアンサー

  • ベストアンサー
回答No.8

No.1お礼欄への返信です。 大体は私が試していたのと同じなのですが、 ポイントは、フォルダを定義しておいて、「フルパスを格納する」ことと、 「i を 0 に戻す」ところぐらいです。★参考まで。 Option Explicit Dim i As Long Dim aryPict() As String Private Sub UserForm_Initialize() Dim ShashinName As String Const S_DIR = "C:\Users\user1\Desktop\FolderName\" ' ★   ShashinName = Dir(S_DIR & "*.jpg") ' ★   ' ' ★   Do While ShashinName <> ""     ReDim Preserve aryPict(i)     aryPict(i) = S_DIR & ShashinName ' ★     i = i + 1 ' ★     ShashinName = Dir()   Loop   i = 0 ' ★   Me.Image1.Picture = LoadPicture(aryPict(i)) End Sub

noname#221405
質問者

お礼

ありがとうございます! 「i を 0 に戻す」ことで、一番最初の写真を見せるわけですね! これをしないと、上手くいきませんね。 週末にゆっくりと、 もっと細かいところを勉強させて頂きたいと思います。 今回はこれで閉じさせて頂きます。 ありがとうございました。

その他の回答 (7)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

#6です。 エクセルVBAでシート(下記コード例ではSheet1)を台紙と考えて、その上に写真を1枚づつ(同じ場所に)持ってきます。 次の写真に変わるまでの物理的時間を設定する方法もあるが、見ている人の自由になる方がよいと思って、ESCキーで次へ進める方法にしました。 考えている写真群は、1つの(同じ)フォルダにあるものとします。拡張子はJPGの例です。 標準モジュールに Sub test05() Worksheets("Sheet1").Activate DoEvents '--表示用テキストボックス ’Msgboxの表示位置は指定できないので、テキストボックスを使う Set txtB = ActiveSheet.Shapes.AddTextbox( _ Orientation:=msoTextOrientationHorizontal, _ Left:=10, _ Top:=10, _ Width:=250, _ Height:=20) '用意のメッセージ txtB.TextFrame.Characters.Text = "写真を出します ESCキー" '-- Set objFSO = CreateObject("Scripting.FileSystemObject") 'FileSystemObject Worksheets("Sheet1").Activate 'Sheet1に写真を出す strPath = "C:\Users\XXX\Pictures\" 'フォルダ指定。xxxは自分の場合に変えること '--画像ファイルを挿入し、変数myShapeに格納 For Each objfile In objFSO.getfolder(strPath).Files 'MsgBox objfile.Name ' MsgBox objFSO.GetextensionName(objfile) If objFSO.GetextensionName(objfile) = "JPG" Then 'MsgBox "写真=" & objfile.Name Set myshape = ActiveSheet.Shapes.AddPicture( _ Filename:=objfile, _ LinkToFile:=True, _ SaveWithDocument:=False, _ Left:=100, _ Top:=50, _ Width:=550, _ Height:=430) End If DoEvents waitTime = TimeSerial(0, 0, 10) Application.Wait waitTime no = no + 1 txtB.TextFrame.Characters.Text = "次の写真に行きます 番号 " & no & " ESCキーを押せ" Set myshape = Nothing Next objfile Worksheets("Sheet1").DrawingObjects.Delete MsgBox "終りました" End Sub VBE画面でF5キーを押して、実行が始まると、ワークシートSheet1の画面をマウスで選択して切り替え、ESCキーを何度か押して、第1写真が現れたら、その後は、その1枚の写真を見終わったら、ESCキーを押す。すると次の写真が現れると思う。 最後まで繰り返す。 ーー 苦労した点があり、もし不都合があれば、この回答を無視してください。

noname#221405
質問者

お礼

まずユーザーフォームでチャレンジして、 その後見てみます。ありがとうございます・・・

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

エクセルを使わず、「パワーポイント」を使えば、どうでしょう。 問題は、このソフトを入れているかだが。 小生の場合、パソコンを買い替えたとき、ワードエクセルで最低あればと思っていたが、パワポもついてきた。質問者のパソコンにも入ってないですか。購入しても1万5千円ぐらいのようだ(ダウンロード版)。 エクセル互換(や無料)ソフトにも、プレゼンテーションソフトとして、パワポ相当のソフトは無いですか。 パワポVBAも、最近はWEBの記事も充実してきて、したいことに近いものが探せると思う。 質問者がお若い方なら(また仕事を持っている人らしいから)、パワポを勉強しておくことも、今後役立つと思う。

noname#221405
質問者

お礼

今回はエクセルでやる必要があります。 違う視点の提供ありがとうございます

回答No.5

No.1です。一応スライドショーの設計、触れておきます。 例えば、 UserFormをクリックするとスライドショーの開始/終了を トグルで切り替えるようなやり方としては、 コードモジュール(UserForm1)  モジュールの宣言部(Declarations)に    Private flg As Boolean ' ... スライドショーのOn/Off  Private Sub UserForm_Click()   flg = Not flg   If flg Then SlideFore  Private Sub SlideFore()    DateAdd関数でNowのn秒後を日付型変数に格納    Do(ループ) flgがTrueの間、、    Nowが変数に格納した時刻以上であれば、    CommandButton1_Click を実行。    DateAdd関数でNowのn秒後を変数に格納    間にDoEventsを挟んでおく    ... Loop とか。やり方は色々あります。 UserForm_Clickよりもボタンがよければボタンでもいいです。 以上です。

  • kkkkkm
  • ベストアンサー率65% (1605/2442)
回答No.4

(3)スピンボタンを使う もしくは通常のボタンを2個作って進む戻るにする で、ファイル名は最初に一覧を配列変数に保存しておき、ボタンが押されるたびにワークシートに画像を表示 もう一個ボタンを作りそのボタンを押すと一定時間(どこかのセルで時間設定ができるといいと思います)ごとに次々と画像を表示する(いわゆるスライドショーですね) ストップボタンもあったほうがいいですね。

noname#221405
質問者

お礼

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

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.3

こんにちは、No2です。 ループする際はTimerで一定時間経過する毎に切り替えるようにする という事で。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは 挿入した写真が重なっていなければ、各写真をループして左上のセルを プロパティで調べて、そのセルに Application.GoTo そのセル, True してもいいかも。 試した事ないですけど・・・

noname#221405
質問者

お礼

ありがとうございます

回答No.1

こんにちは。 > コードは自分で調べるので、 > どのような仕組みにしたらいいか ... ユーザーフォームの例で。 デザイン  UserForm1   > Image1 ... 写真表示用   > CommandButton1 ... スライド 戻る   > CommandButton2 ... スライド 送る コードモジュール(UserForm1)  モジュールの宣言部(Declarations)に    Private aryPict() As String ' ... 写真のフルパスを配列で    Private i As Long ' ... 現在表示中の写真の配列内インデックス  Private Sub UserForm_Initialize()    "ある特定のフォルダー"を変数または定数に    Dir()関数とDo Loopで、カウンタで数を数えながら、    配列aryPict()をRedim Preserveしながら、    写真へのフルパスを格納していく。    終わったら、(i = 0 という条件で)    Me.Image1.Picture = LoadPicture(aryPict(i))  Private Sub CommandButton1_Click() ' スライド 戻る   i = i - 1   If i < 0 Then i = UBound(aryPict)   Me.Image1.Picture = LoadPicture(aryPict(i))  Private Sub CommandButton1_Click() ' スライド 送る   i = i + 1   If i > UBound(aryPict) Then i = 0   Me.Image1.Picture = LoadPicture(aryPict(i)) ※ 一応、LoadPictureした後は、Me.Repaint、した方が無難かと。 大体、こんな感じです。 因みにスピンボタンを使うメリットを私は感じませんので、 Image1を中央に配し、両脇に一つずつCommandButtonをおくようなデザインです。 もし、ボタンが写真に少し被っても良ければ  UserForm1 ... 写真表示用   > Label1 (背景透明化)... スライド 戻る   > Label2 (背景透明化)... スライド 送る みたいなのもスマートで恰好いいかも、です。 また、単方向のスライドで良かったら、ボタンなしにして、 Image1やUserForm1をクリックしたら送る、という仕様もアリです。 解らない処あれば、遠慮なく、、、。

noname#221405
質問者

お礼

ご回答ありがとうございます。 コードは自分で調べると言ったのですが、 ちょっと難しかったので(><)、質問させて下さい・・・ 下記のコード(フォームの部分だけ)では上手く行きません。 ファイルが見つかりません、というエラーになります。 どこが間違っているか、もしよければ教えて下さい。。。 Option Explicit Dim i As Long Dim ShashinName As String Dim arypict() As String Private Sub UserForm_Initialize() ShashinName = Dir("C:\Users\user1\Desktop\FolderName\*.jpg") ReDim arypict(0) Do While ShashinName <> "" i = UBound(arypict) + 1 ReDim Preserve arypict(i) arypict(i) = ShashinName ShashinName = Dir() Loop Me.Image1.Picture = LoadPicture(arypict(i)) End Sub

関連するQ&A

  • エクセルのマクロでスライドショーをやりたい

    エクセルマクロでスライドショーのようなことをやりたい 参考書だけでマクロに挑戦している超初心者です。 セルに写真の名前が並んで入れてあります。 ユーザーフォームにイメージとコマンドボタンを配置 ボタンを押すとスライドショーが始まるようにしたい。 次のように作ってみたが、セルは移動するが 写真は途中変わらず、最後の写真だけ表示される。 ところがもう一度ボタンを押すときちんと一枚づつ表示する。  参考書には、「変数iは1回目は定義されていないが 2回目は記憶している」というようなことが書かれていますが このことと関係しているのでしょうか? Private Sub CommandButton1_Click() Dim i As Integer Dim ImgName As String For i = 1 To 5 Application.Wait (Now + TimeValue"0:0:01")) ImgName = ActiveWorkbook.Path & "\" & ActiveCell.Value Image1.Picture = LoadPicture(ImgName) ActiveCell.Offset(1, 0).Activate Next i Exit Sub End Sub 実はフォーム上には、その他のものもあるのですが 質問用にこれだけを作り実行してみたところきちんと 1枚づつ表示されました。 ほかの要素が入っていると、1回目のみ、途中が表示されないという 現象が現れるようです。 質問の仕方が悪くて申し訳ありません。よろしくお願いします。

  • スライドショー

    結婚式の余興で流すスライドショーや、思い出のスライドショー(結婚式ではない)を作ろうと考えています。スライドショー作りに関しては、本当の初心者です。 どんなものに仕上げたいかというと、 写真はもちろん、動画を挿入したり、Itunesの音楽を挿入したいと考えています。写真もズームになるような操作ができたらなと思います。 上のような、作業ができ、さらに初心者の私にでも作れるような、スライドショーのソフトを教えて下さい。

  • スライドショーの写真の順番が勝手に変わる

    XPを使用してマイピクチャにいれた写真に、「1.jpg」「2.jpg」という風に順番に名前をつけ、順番に並べているのですが、スライドショーにするとその順番ででてきません。 フォルダ内では順番に並んでいるのですが、スライドショーにすると「1.jpg」の次に「13.jpg」の写真がきたりして。 どのように設定を変えたら、フォルダ内の順番どおりにスライドショーができるのでしょうか?

  • スライドショーを作りたいのですが

    結婚式の生い立ちスライドショーを作ろうと考えています。 以前、windows ムービーメーカーでスライドショーを作ったことがあるのですが、写真が重たすぎるのか、写真が切り替わるときにところどころ音楽が途切れてしまっていました。 そこで、今回はできればもっとスムーズなスライドを作りたいと思っています。 windowsムービーメーカーとフォトストーリーとpowerpointでは、どれがスライドショーを作るのに向いているでしょうか? スライドには、音楽をつけて、切り替え効果や文章も入れる予定です。 よろしくおねがいします。

  • スライドショー作成

    みなさんよろしくお願いします。 以前から何度も書き込みしているものですが・・・ windows フォトストーリー3というソフトで写真のスライドショーを作成。 (BGM付き、またスライドショーの最初に写真ではなくフォトショップで作成した見出しをjpgにして挿入) これでできたWMVファイルをVSO DivxToDVDでオーサリングするとエラーが発生し、デスクトップにできたフォルダ内にVOBファイルのみが生成される。 みなさんにいただいたアドバイスを参考にいろいろとやったのですがやはりできません。 そこでこのような作業をするのにもっとよいソフト(スライドショー作成ソフト、オーサリングソフトなど)がありましたら教えてください。

  • スライドショー

    ヤフーのフォトを開くとお持ちの写真をスライドショーの仕上げるサービスが載っていますが 個人でもそれ用のソフトを使って出来るものでしょうか。もし良ければソフトを御紹介頂ければ助かります。 それでは宜しくお願いします。

  • windows98で使えるスライドショーができるソフトを探しています。

    デジカメに付属していたviewerでスライドショーが見れません。スライドショーで写真を見れる操作が簡単なソフトを探しています。ご存知の方、教えてください。

  • 富士通ノートパソコンでのスライドショー作成について

    @映像館で作成したフォトストーリーにBGMをつけた場合曲がちょうどで終わりません。 二回繰り返して途中で終了するくらいの長さですが、スライドショーと同時にきれいに曲を終わらせる方法はありますか? スライドショーが終わったとき曲がブチっと切れます。 曲の終わりを音のレベルをすぅ~~っと消えるようにできますか? スライドショーの作成ソフトは富士通パソコン内の物は@映像館だけですか? Windowsフォトギャラリーというのも写真からスライドショーが始まりますがこちらを使用された方いますか? どの方法が簡単で曲の挿入や終りがきれいに設定できますか? よろしくお願いします

  • Androidスマホの写真スライドショーアプリにつ

    写真を一つ一つ選択するのではなく、 フォルダーの中にある写真を一括でスライドショーにするAndroidアプリはありますでしょうか。 Googleフォトでできるとのことですが、操作方法がよく分からないので、Googleフォト以外でお願いいたします。

  • Windows10の写真スライドショーができない

    Windows10に写真を取り込んで、写真スライドショーが出来なくなりました。 また、写真にIMG_0000.JPGファイルをクリック拡大して、次の写真へ行くに、矢印が自動で出ていましたが、出なくなりました。 スライドショーは数十枚ある写真の同じ写真ばかりを繰り返してスライドします。 何か、設定に問題があるのかと思いますが、解決方法を教えてください。 宜しくお願いいたします。

専門家に質問してみよう