Office365を使用しています。
B列に縦方向に料理名が並んでいたとします。
今回具体的にはB13からB37まで入ってます
12行目は横方向に材料名が並んでいます。
具体的にはC12からL12まで入ってます
このマトリクス表は
B列の料理に必要な材料に1が、不要な材料は0のフラグを付けています。
具体的には、B13の行にはJ13とK13に1が、
B14の行ではC,I,J,K,Lに1が付いてます。
この一覧表をPDF化したファイルと材料毎のPDFが1つのフォルダにまとまっている事前準備の下、
以下の処理が出来ないでしょうか?
料理名のフォルダを作成して、そのフォルダの中に必要な材料名のPDFをコピー格納。
具体的にはB13のフォルダの中には、JとKのPDFを格納、
B14のフォルダの中には、C,I,J,K,LのPDFを格納していきたいです。
つまり材料名のPDFは何回も使用されます。
最終的には25個のフォルダが生成されることになります。
(増減の可能性があるので必ず25個ではありません。材料数も然り)
サンプルプログラムがあると非常に助かります。
よろしくお願いいたします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
>作業用ブックの全シートを
同じ内容かも知れませんが・・・私的に思う作業手順
作業ブックを作り、(ツール的位置づけブック)このブックにVBAを書く
1シートに当該ご質問にある定義となる一覧表を作る
一覧表を基に 以下VBAで
①料理名シートを作る(シート名を料理名にする”紐づけがしやすくする為”)
②必要なデータ(材料など)を料理名シート(1シート)に纏める(この時印刷範囲(ページなど)設定を行う)ページ設定がPDFのページ順になります)
③②を繰り返し一覧表の料理全てに対して同様な処理を行う
④作業用ブックの一覧表シートを除くシートをPDFで出力する
出力されたPDFファイルはシートで設定した複数ページのPDFになります
ページ設定で必要ページのみを出力する事も出来ますね
各データがブックにあるのならループ処理で出来ると思います
呼び出しブックやシート名が一覧表に紐づくワードならば比較的簡単かと・・もし違うようであれば先に紐づくキーワードを一覧表に加えるなどすれば一覧表を基にループ処理できそうですね
各データと一覧表の紐づけが確りできれば、1料理で出力したり、材料の増減などの対応も都度で出来ると思います(新規シートの必要性はないかも)
要チェック
設定必須の印刷範囲、余白、改ページなどは実際に出力されるPDFファイルと
異なる(プレビュー)可能性があるので 調整が必要かと思います
>ソースを書けそうにないので細分化ごとに質問してくしかないですね。
そうですね
流石に本スレッドはご質問から離れたものになっていますので
閉じられるべきですね
仰る内容に同意です。(詳細が多少違うかもしれません)
具体的には
・縦方向の料理名一覧(作成するフォルダ名)
・横方向の材料名一覧(チョイスするファイル名とシート名)
を定義となる一覧表シートをマクロブック内に置き、
・料理名毎にフラグのついた材料を1シートにまとめるのではなく、
材料毎にsheet1、sheet2・・・と追加していく。
・一覧表シート以外のシートを、作成したフォルダにPDF保存
以上を料理全てに対して繰り返す。
という流れと思ってます。
材料群を1シートにまとめないのは、材料毎に1ページにまとまるようにレイアウト設定されているからそのまま利用したいからです。
余計な情報もなく印刷範囲設定も不要な状態になっているので、
Ctrl+P のみで都合良く出力できるようになってます。
とはいえ、要チェック事項は結果を見て検討したいと思います。
閉じる前にお礼を兼ねて書かせて頂きました。
貴重なアドバイスをありがとうございました。
No.4
- 回答日時:
VBAの場合
PDFファイルを扱うには 条件や制限があるように思います
なのでPDFファイルを統合するより
シートに1ページ2ページ・・・と印刷エリアを設定して必要データを配置
シートをPDF出力すればよいので出力時に統合してしまう方が容易です
とは言っても少し先に行っているようですので何回も繰り返し処理を行わないのなら、結合にはWebツールやフリーソフトなどを使うのが簡単だと思います
作成するフォルダの数だけPDF結合の手作業が必要なので、何とかしなければいけないことに気づきました。
おっしゃる通り、PDF化は一番最後だなと感じました。
自分の頭の整理も兼ねて書き出すと、
一覧表の元はエクセルブックで複数あるシートの中の1つです。シート名は「一覧表」じゃありません。
各材料もそれぞれ別ブックで、しかも複数あるシートのうちの1シートです。材料名がシート名となってます。
フローとしては、
一覧表シートが入ってるブックから、一覧表シートだけを作業用の新規ブックにコピー(関数を値にしておく必要も?)
↓
左列からの順で材料シートが入ってるブックから材料シートだけを作業用ブックならコピー(関数を値にしておく必要も?)
フラグ1がある限り繰り返す
↓
作業用ブックの全シートをPDFで保存(保存先は生成フォルダの中)
そうすれば希望の順のページ構成になったPDF1ファイルを各フォルダに収められそうです。
ソースを書けそうにないので細分化ごとに質問してくしかないですね。
No.3
- 回答日時:
>全てのフォルダに「一覧表.pdf」が入るようにしたいのですが、
パスもファイル名も明確ならfold_pathが生きている
Next
Next
の間にFileCopyステートメントを加えても良さそう
>「一覧表」という列を追加して
表組を拡大しループ回数を増やすデメリットはあるものの
改修や変更をシート表組の変更で対応できるので良いかも知れませんね
DatList = Range("B12:L37")をフレキシブルに変更しないといけないけれど
ありがとうございます!
この先でやりたい事があるのですが、
※今回の質問の域を超えている場合は、別スレッドで改めます。
一応書かせて頂きます。
フェーズ1として(勝手に処理を細分化させて頂いてます)、
フォルダに振り分けましたが、
本当は、各フォルダのPDFはページ結合して1ファイルのPDFにしたいのが本来のゴールなのです。
順番も決まっていて、
一覧表.pdf + C列の材料.pdf + D列の材料.pdf + E列の材料.pdf + ・・・
と左の列からの順番になるように、
1ファイルに全ページが連結された状態で フォルダ名.pdf という名前で保存したいんです。
その為には勝手な解釈ですが、
・振り分けるときに先頭に数字を入れてナンバリングが必要かな
・フォルダ内のPDFを結合するVBAがあるのかな
という工程を想定しましたが可能でしょうか?
PDF結合については下記サイトを見つけたのでこれから試そうと思いますが、
アドバイスあれば嬉しいです。
https://www.sejuku.net/blog/99158
失礼いたしました。
No.2
- 回答日時:
こんにちは
フォルダパスが不明ですね
前回答者の方法です 数行の処理なので解決されているかもですね
フォルダパスは不明なのでデスクトップとして
纏っているフォルダをデスクトップのPDFフォルダとして
ざっくり書いて見ました デバッグはしていないのでエラーやロジックミスがありましたら直してください
>増減の可能性がある
これに付いても38行目以降、M列より右列がどの様になっているか不明などで未対応です
Sub sample()
Dim wsh As Object, targetPath As String
Set wsh = CreateObject("WScript.Shell")
targetPath = wsh.SpecialFolders("Desktop")
Set wsh = Nothing
Dim PDFフォルダパス As String
PDFフォルダパス = targetPath & "\" & "PDFフォルダ"
Dim fold_path As String
Dim DatList As Variant
DatList = Range("B12:L37")
Dim i As Long, j As Long
Dim fName As String
For i = 2 To UBound(DatList, 1)
fold_path = targetPath & "\" & DatList(i, 1)
If Dir(fold_path, vbDirectory) = "" Then
MkDir fold_path
End If
For j = 2 To UBound(DatList, 2)
If DatList(i, j) = 1 Then
fName = DatList(1, j) & ".pdf"
FileCopy PDFフォルダパス & "\" & fName, fold_path & "\" & fName
End If
Next
Next
End Sub
ありがとうございます。
ソースを示してくれて非常に助かります。
正常動作しました。
私が手を加えたのは、
デスクトップ¥PDFフォルダ をデフォルトフォルダにしようと思い、
targetPath = wsh.SpecialFolders("Desktop") & "\" & "PDFフォルダ"
としました。
デスクトップ¥PDFフォルダ¥pdf フォルダに各材料pdf が入っていて、
マクロを実行すると、PDFフォルダ内に各材料pdfがコピーされるのを確認しました。一番の山を越えられた気がして助かりました。
pdfフォルダには、「一覧表.pdf」も入っていて、
全てのフォルダに「一覧表.pdf」が入るようにしたいのですが、
「一覧表」という列を追加して、全ての行に1を付けるのが簡単でしょうか?
No.1
- 回答日時:
こんにちは
基本的なセルの値の参照・取得や繰り返し(=ループ)に関してはご存じのこととします。
対象各行(=13~37行)について以下を繰り返せばよいことはお分かりになるかと。
1)料理名のフォルダを作成
2)材料の範囲(=C:L列)について以下をループ
2-1)セル値が1なら材料名のPDFファイルをコピー
2-2)セル値が0なら次の列へ(=なにもしない)
1)のフォルダの作成には MkDirステートメントを利用すればできます
MkDir 親フォルダのパス & "\" & フォルダ名
のような感じです。
https://learn.microsoft.com/ja-jp/office/vba/lan …
2-1)のファイルコピーには FileCopyステートメントで可能です。
FileCopy コピー元ファイルパス, コピー先ファイルパス
の形式です。
https://learn.microsoft.com/ja-jp/office/vba/lan …
>サンプルプログラムがあると非常に助かります。
リンク先にそれぞれのステートメントの使用サンプルがのっていますのでどうぞ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/01 12:54
- PDF いきなりPDFで文書の切り取り 3 2022/10/29 13:25
- Excel(エクセル) 【マクロ】ファイル名の日付によって、保管するフォルダを、自動選択したい 4 2023/08/16 11:24
- Excel(エクセル) 【VBA】フォルダAにある2つのファイルの内1つを、フォルダBへ。もう1つを、フォルダBへ移動したい 6 2022/07/26 08:51
- 食べ物・食材 中華料理(四川料理)の具材。これ、何という名前ですか? 3 2023/03/03 21:17
- PDF PDFに精通した方に質問。JPEGファイル群を一つのPDFファイルにするときの容量変化について 6 2023/07/23 19:06
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/26 17:13
- PDF PDFを自動添付したメールを送信してくれるツールを探しています。 2 2023/02/07 15:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
ファイル名と同名のフォルダを...
-
Excel VBA 同じ名前のフォルダ...
-
同一フォルダ内の別ブックから...
-
VBA フォルダ名に特定の文字を...
-
【マクロ】ファイル名の日付に...
-
ディレクトリ名変更してコピー...
-
VBA 最新のフォルダ取得
-
Downloaded Program Filesはど...
-
デスクトップの画像をhtmlに表...
-
Access VBA で フォルダ権限...
-
保存先のフォルダ名を指定した...
-
VBA フォルダの複数選択ができない
-
Hitachi Embedded Workshop (HE...
-
エクセルのマクロについて教え...
-
エクセルで、マクロを使わずに...
-
VS2005で"定義へ移動"ができません
-
多量のファイルをフォルダに自...
-
ファイル名を取得し、ログファ...
-
Dreamweaverでイメージを挿入す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
パス名に2バイト文字(マルチバ...
-
ファイル名と同名のフォルダを...
-
VBA 最新のフォルダ取得
-
Excelのハイパーリンクについて...
-
デスクトップの画像をhtmlに表...
-
ディレクトリ名変更してコピー...
-
VBA フォルダ名に特定の文字を...
-
バッチファイルで指定フォルダ...
-
フォルダ内のPDFファイル名を変...
-
Access VBA で フォルダ権限...
-
excelマクロ 冒頭3文字が一致す...
-
【マクロ】ファイル名の日付に...
-
フォルダにリンクを貼りたい
-
会社のネットワーク上のファイ...
-
多量のファイルをフォルダに自...
-
C ファイル出力で、フォルダが...
-
保存先のフォルダ名を指定した...
-
vbsで選択ダイアログを表示した...
-
Excel VBA 同じ名前のフォルダ...
おすすめ情報