アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルマクロについて教えて頂きたい事があります。
現在は、デスクトップ上に”検査表゛のフォルダーがありフォルダーの中には゛A棚-りんご.xls゛A棚-みかん.xls゛B棚-ガム.xls゛B棚-アメ.xls゛C棚-ラーメン.xls゛C棚-うどん.xls゛など沢山あります。
下記のマクロから追加で、
デスクトップ上に゛検査表゛のフォルダーがあり、
さらに゛ A棚゛のフォルダー、B棚のフォルダー、C棚のフォルダーなどを追加はできるのでしょうか?
よろしくおねがいします

Sub Sample()
Dim フォルダー名 As String
Dim ファイル名 As String
Dim 行 As Long
Dim 終 As Long
Dim ブック As Workbook
Dim 注文書シート As Worksheet Set 注文書シート = ThisWorkbook.Worksheets("シート名") '※実際のシート名を入れてください
フォルダー名 = ThisWorkbook.Path &"\検査表\"終 = 注文書シート.Cells(注文書シート.Rows.Count, 4).End(xlUp).Row
For 行 = 2 To 終
If 注文書シート.Cells(行, 5).Value = ""Then
ファイル名 = フォルダー名 &注文書シート.Cells(行, 4).Value &".xlsx"If Dir(ファイル名) = ""Then
注文書シート.Cells(行, 5).Value = "対象無"Else
Set ブック = Workbooks.Open(Filename:=ファイル名)
If 注文書シート.Cells(行, 6) >0 Then
ブック.Worksheets("Sheet1").PrintOut Copies:=注文書シート.Cells(行, 6)
End If
ブック.Worksheets("Sheet2").PrintOut
ブック.Close
注文書シート.Cells(行, 5).Value = Now
End If
End If
Next
Set ブック = Nothing
End Sub

A 回答 (3件)

#2です。


>C棚-ラーメン.xls゛C棚-うどん.xls゛など沢山あります。
条件が分からないので、VBAを弄らずに
>ファイル名 = フォルダー名 &注文書シート.Cells(行, 4).Value &".xlsx" なので
D列2行目以降のファイル名の頭に該当フォルダパスを入れれば取り敢えず出来るかと思います。

D列 A棚\りんご
C棚\ラーメン
みたいな感じで、、
    • good
    • 0

こんばんは、



>デスクトップ上に゛検査表゛のフォルダーがあり、さらに゛ A棚゛のフォルダー、B棚のフォルダー、C棚のフォルダーなどを追加はできるのでしょうか?
既に回答にある通り、追加は可能と思いますよ。デスクトップ上と言うのは回答にある通りですね。

コード全体を見るとフォルダパスの取得方法を見直して作り直すのが良さそうですが、
゛ A棚゛のフォルダーなどが、゛検査表゛フォルダの中にあるのであれば、
フォルダパスを取得している
フォルダー名 = ThisWorkbook.Path &"\検査表\"の後に加えれば良いのではないでしょうか。

フォルダー名 = ThisWorkbook.Path &"\検査表\A棚¥"
ループや配列などA棚などのフォルダパスの取得方法を考えれば良さそうですね。


このままで改造するなら、注文書シートのどこかの列(例 I列)に \検査表\  \検査表\A棚¥  \検査表\B棚\  \検査表\C棚\ ・・・と行方向に入れて
for i=1 to 注文書シート.Cells(注文書シート.Rows.Count, "I").End(xlUp).Row
 フォルダー名 = ThisWorkbook.Path & cells(i,"I").value (I列の場合)
 終 = 注文書シート.Cells(注文書シート.Rows.Count, 4).End(xlUp).Row
 For 行 = 2 To 終
 ・
 ・
 ・
 Next
Next i
Set ブック = Nothing


余談として
親フォルダ、サブフォルダ内の複数ファイルを操作するのであれば、私的にはFSOを使ってループ、再帰処理させ
ファイルパスを配列に取得、条件により処理を分け実行すると思います。
    • good
    • 0
この回答へのお礼

返信が遅れてすみません。アプリをみていませんでした。後で試してみます。返信ありがとうございます

お礼日時:2020/07/03 17:49

こんにちは



>フォルダーなどを追加はできるのでしょうか?
できる/できない でいうならできると思いますよ。

とは言え、仕様があやふやなので何をどうしたいのかよくわかりません。
そのあたりをはっきりさせれば、作成した方が修正してくださるかも知れません。

ご提示のコードで言えば、改行がおかしいですし、
>現在は、デスクトップ上に”検査表゛のフォルダーがあり
という点でも、「デスクトップ」に固定されているわけではなく、マクロがあるエクセルの保存位置に依存するディレクトリ構成を想定したものになっています。
(多分、現在はデスクトップにそのエクセルも存在するのだろうと推測しますけれど)
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
簡単なやり方ですね。凄く助かりました

お礼日時:2020/07/03 17:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!