エクセルマクロについて教えて頂きたい事があります。
現在は、デスクトップ上に”検査表゛のフォルダーがありフォルダーの中には゛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
No.3ベストアンサー
- 回答日時:
#2です。
>C棚-ラーメン.xls゛C棚-うどん.xls゛など沢山あります。
条件が分からないので、VBAを弄らずに
>ファイル名 = フォルダー名 &注文書シート.Cells(行, 4).Value &".xlsx" なので
D列2行目以降のファイル名の頭に該当フォルダパスを入れれば取り敢えず出来るかと思います。
D列 A棚\りんご
C棚\ラーメン
みたいな感じで、、
No.2
- 回答日時:
こんばんは、
>デスクトップ上に゛検査表゛のフォルダーがあり、さらに゛ 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を使ってループ、再帰処理させ
ファイルパスを配列に取得、条件により処理を分け実行すると思います。
No.1
- 回答日時:
こんにちは
>フォルダーなどを追加はできるのでしょうか?
できる/できない でいうならできると思いますよ。
とは言え、仕様があやふやなので何をどうしたいのかよくわかりません。
そのあたりをはっきりさせれば、作成した方が修正してくださるかも知れません。
ご提示のコードで言えば、改行がおかしいですし、
>現在は、デスクトップ上に”検査表゛のフォルダーがあり
という点でも、「デスクトップ」に固定されているわけではなく、マクロがあるエクセルの保存位置に依存するディレクトリ構成を想定したものになっています。
(多分、現在はデスクトップにそのエクセルも存在するのだろうと推測しますけれど)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) 【マクロ】【VBA】同じフォルダ内にあるエクセルのデータを転記したい【ブック1からブック2へ】 9 2023/08/10 07:51
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
特定の文字を含むシートだけマ...
-
VBA 入力月で該当シートを選択...
-
VBA 存在しないシートを選...
-
Excel VBA 複数行を数の分だけ...
-
別のシートを参照して計算する方法
-
ユーザーフォームに入力したデ...
-
実行時エラー1004「Select メソ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
実行時エラー'1004': WorkSheet...
-
Excel チェックボックスにチェ...
-
セルのコピーで「オブジェクト...
-
エクセルVBAでダブルクリックを...
-
複数シートに色付きセル(条件つ...
-
重複するidをデータごとにまと...
-
一括印刷マクロ シート名を数字...
-
VBA 最終行まで数式をコピーする
-
Excel マクロについての相談
-
エクセルのシート名変更で重複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報