[[20200121193230]] 『Excelセルを押してフォルダ内にあるExcelファイル』(EZ) ページの最後に飛ぶ

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

 

『Excelセルを押してフォルダ内にあるExcelファイルを印刷』(EZ)

フォルダA内にある200近くあるExcelファイルを
一つのエクセルファイルのセルを押すことで印刷できないか思案中です。

印刷用エクセルファイルには「ファイルパスのコピー」から取得したファイル名を表示させ、そのセルを押すことで印刷したいと考えています。

フォルダA
>●.xlsx,◯,△,◆,,,,

印刷用エクセルファイル
セル A  B C
1  ● △
2  ◆

ex:セル●を押すことで フォルダA内の●.xlsxを開いて印刷

*この時、指定プリンタは選びたい(通常使用する印刷プリンタがPCごとに異なるため)

できますでしょうか。
わかりにくい所があるかと思いますが
ご教授頂けると幸いです。よろしくお願いいたします。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 いくつか確認したいことがあります。

 (1)
 | 印刷用エクセルファイルには「ファイルパスのコピー」から取得したファイル名を表示させ

 フルパスということですね?(つまりフォルダ名+ファイル名)

 (2)
 | フォルダA
 | >●.xlsx,◯,△,◆,,,,
 これはどういう意味でしょうか?読み方を教えてください。

 (3)
 | セル  A    B  C
 | 1    ●  △
 | 2    ◆

 この配置にはなにか規則的なものがあるんですか?

 (4)
 | セル●を押すことで  フォルダA内の●.xlsxを開いて印刷

 エクスプローラーで複数選択して「印刷」を実行してもよいと思いますが、
 ひとつひとつクリックしていくことに意味があるんですか?
 また、印刷範囲とか、シートの数とか、心配は不要なんですね。 

(γ) 2020/01/21(火) 21:39


Y様

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

日々、翌日の人用に説明書を30人近く印刷して渡さないといけません。
フォルダが12つあり、そのフォルダにさらにフォルダと、多くのファイル(エクセル、ワード)(多いもので150ファイルくらい)*があります。それを人それぞれの内容にあうものを印刷する必要があります。

普段はその人にあった説明書をフォルダから探し出してファイルを立ち上げ➡印刷をしていました。
フォルダを探す手間があるので、エクセルで一覧表を作成して必要なファイル名を押すだけで印刷までできればいいなと思っています。

1)フルぱすではないです・・
ファイルを選択してshift+右クリックで出てくるパスをコピーでそれをエクセルに貼り付け、
置換機能でファイル名の〜¥●.xlsxの●だけをエクセルで表示させています。
あまりにも多くのファイルがあるためなるべく見やすくする必要があります

2)
フォルダAのなかに 1,2,3,4,5・・・のファイルが存在するという意味です。上記*

3)規則性はありません
ただファイル名を記載しているだけです

4)印刷範囲はエクセルだとシート1枚。ワードだと1ページ目だけで問題ないです。

わかりにくくて申しわけありません。
(EZ) 2020/01/22(水) 17:00


セルを押す、ってよく判りませんが、セルをマウスクリックすると文字列編集状態になるので、普通はダブルクリックか右クリックを使いますよ。

しかしながら、複数印刷もするのであれば、例えばA列に印を付けておいてからボタンを押すと、印のある行だけ印刷する、という方が使いやすくないですか? 1つずつだと、どこまで印刷したか忘れそうだし。

サンプルなぞ書いてみます。 シートにActiveXのボタンを2つ貼っておいて、シートモジュールは以下のコードとしてみてください。 1つ目のボタンを押すと、指定したファイル以下にあるブックとdocファイルを列挙します。 A列に何でも良いから入力した後、2つ目のボタンで印刷です。 cPATHは、貴方の環境に合わせて変えてくださいね。

 Private Sub CommandButton1_Click()
    Const cPATH = "c:\tmp\" '末尾は必ず\にする
    Dim cFiles As Variant
    Dim cFile As String
    Dim cExt As String
    Dim iR As Long
    Dim i As Long

    Cells.Clear
    Range("A1:D1") = Array("chk", "app", "filename", "fullname")
    iR = 1

    cFiles = Split(CreateObject("WScript.Shell").Exec("CMD /C DIR /A:-D/B/S """ & cPATH & "*.*""").StdOut().ReadAll(), vbNewLine)
    For i = 0 To UBound(cFiles) - 1
        cFile = Mid(cFiles(i), InStrRev(cFiles(i), "\") + 1)
        cExt = LCase(Left(Mid(cFile, InStrRev(cFile, ".") + 1), 3))

        Select Case cExt
        Case "doc", "xls"
            iR = iR + 1
            Cells(iR, "B").Value = cExt
            ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(iR, "C"), Address:=cFiles(i), TextToDisplay:=cFile
            Cells(iR, "D").Value = cFiles(i)
        End Select
    Next i
 End Sub

 Private Sub CommandButton2_Click()
    Dim i As Long

    Application.Dialogs(xlDialogPrinterSetup).Show

    For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
        If Cells(i, "A") <> "" Then
            Select Case Cells(i, "B").Value
            Case "xls"
                With Workbooks.Open(Cells(i, "D").Value, False, True)
                    .Sheets(1).PrintOut
                    .Close False
                End With
            Case "doc"
                With CreateObject("Word.Application")
                    .ActivePrinter = ActivePrinter
                    With .Documents.Open(Filename:=Cells(i, "D").Value, ReadOnly:=True)
                        .PrintOut
                        .Close
                    End With
                    .Quit
                End With
            End Select
        End If
    Next i
 End Sub
(???) 2020/01/22(水) 17:54

 コード例が提示されていますので、実質的にはすでに解決しているのかもしれませんが、
 あえてコメントしてみます。(余り前進するのに役立っているのかどうか不明ですが)

 | 日々、翌日の人用に説明書を30人近く印刷して渡さないといけません。
 | フォルダが12つあり、そのフォルダにさらにフォルダと、多くのファイル(エクセル、ワード)
 | (多いもので150ファイルくらい)*があります。
 | それを人それぞれの内容にあうものを印刷する必要があります。

 最初の質問では、フォルダAとひとつだけという記述でしたが、違うんですね?
 上記の話であれば、ファイルをひとつづつ指定して、などという方法では、
 とても対応できるはずがありません。

 例えば、
                             Aさん  Bさん ....  30人近く?
 AAAフォルダ ---- A.xlsx     ○
             ---- B.xlsx            ○
 BBBフォルダ ---- C.doc      ○
             ---- D.xlsx            ○                    

 とでも言ったシートレイアウトにして、
 (しかもどこかの非表示列にパスを書き込むと便利かも)といったものを作成して、
 手作業で○を付し、各人毎に必要ファイルを順次印刷するといったことになるのでは?

 もしくは、ファイル毎の合計部数を計算して、複数の部数を指定して一括印刷させてもよいかも
 しれません。それを各人ごとに整理するのは手作業になりますが。
 いずれにしても上記のような表は必要になるんじゃないですか?
 (とてもファイル名をクリックしてなどは論外というか、控えめに言っても高度の精神集中が必要です。)

 いずれにしても、コード作成の前に、必要なシートレイアウトをしっかり考える必要が
 ありそうに思います。

 -----------
 | 1)フルぱすではないです・・

 ファイルを開くには、フルパス情報がいずれ必要になります。
 対象フォルダが複数なのであれば。
 (ちなみに、2つの書き間違いではなく、12個なんですか? 12つ とは普通言わないです。)

 | 3)規則性はありません
 | ただファイル名を記載しているだけです

 そういうコメントが一番困ります。
 好きなようにではなく、コードを作る場合にはなんらかのルールを決めないと
 ファイル名を書き込みできません。(例: A列に縦にならべますとか)
 そして、その規則、ルールを考えるのは、あなたの仕事です。

(γ) 2020/01/23(木) 05:15


コメント返信:

[ 一覧(最新更新順) ]


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