Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


178 / 13645 ツリー ←次へ | 前へ→

【81660】フォルダパスが変動しても対応したい。 のっち 21/2/14(日) 22:12 質問[未読]
【81661】Re:フォルダパスが変動しても対応したい。 γ 21/2/15(月) 9:11 発言[未読]
【81662】Re:フォルダパスが変動しても対応したい。 のっち 21/2/16(火) 5:58 お礼[未読]
【81663】Re:フォルダパスが変動しても対応したい。 γ 21/2/16(火) 7:26 発言[未読]

【81660】フォルダパスが変動しても対応したい。
質問  のっち  - 21/2/14(日) 22:12 -

引用なし
パスワード
   行いたい事はデスクトップ上にあるとあるフォルダーの中にいくつかエクセルファイルがあります。(ファイル名が違うだけで同じ様な形)。

そのフォルダー内のファイルを全部開いて同じセルに決められた文字を入れた後、
それぞれPDFで出力して元のファイルを保存して閉じる。そしてそのフォルダーを開いておく、という形です。

フォルダ名〇は変動しない、★は変動する AorBどちらかのフォルダ名がある。


Sub 指定フォルダーのExcelファイルを全て開く()

Dim myPath As String, myfile As String

If ThisWorkbook.Sheets(1).Range("B8") = "" Then
 MsgBox "数字の入力は必須です!"
 Exit Sub
End If

If Dir("〇〇〇★★★AAA)", vbDirectory) <> "" Then
 myPath = "〇〇〇★★★AAA)\"
ElseIf Dir("〇〇〇★★★BBB", vbDirectory) <> "" Then
 myPath = "〇〇〇★★★BBB)\"
Else
MsgBox "対象のファイルがありません。"
Exit Sub
End If
 
 myfile = Dir(myPath & "*.xlsx*")

 Do
  Workbooks.Open Filename:=myPath & "\" & myfile
  
 Dim i As Long
 For i = 1 To Sheets.Count
  If Sheets(i).Visible = True Then
   Sheets(i).Range("H4") = ThisWorkbook.Sheets(1).Range("B8").Text
 
  End If
  
 Next i
  myfile = Dir
 Loop Until myfile = "" 
Call pdfに出力
 
End Sub
---------------------------------------------------------------------
Sub pdfに出力()

Dim myPath As String, myfile As String

If Dir("〇〇〇★★★AAA)", vbDirectory) <> "" Then
 myPath = "〇〇〇★★★AAA)\"
ElseIf Dir("〇〇〇★★★BBB", vbDirectory) <> "" Then
 myPath = "〇〇〇★★★BBB)\"
Else
MsgBox "対象のファイルがありません。"
Exit Sub
End If
 
Do While myfile <> ""

Workbooks(myfile).Activate

Dim i As Long
 For i = 1 To Sheets.Count
  If Sheets(i).Visible = True Then
   Sheets(i).Select Replace:=False
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
  Filename:=Left(Workbooks(myfile).FullName, InStrRev(Workbooks(myfile).FullName, ".")) & "pdf"

End If
Next

Workbooks(myfile).Close SaveChanges:=True  'ブックを閉じる
myfile = Dir
 
Loop

If Dir("〇〇〇★★★AAA", vbDirectory) <> "" Then
 CreateObject("Shell.Application").Open "〇〇〇★★★AAA"
ElseIf Dir("〇〇〇★★★BBB", vbDirectory) <> "" Then
 CreateObject("Shell.Application").Open "〇〇〇★★★BBB"
End If

End Sub

〇★AorBの所をあらかじめ入れておけばちゃんと動くのですが、
★を変動できるように

Sub 指定フォルダーのExcelファイルを全て開く()

Dim myPath As String, myfile As String
Dim myPath1 As String, myPath2 As String, myPath3 As String
Dim myNum As String
 myNum = Range("E10").Text

If ThisWorkbook.Sheets(1).Range("B8") = "" Then
 MsgBox "数字の入力は必須です!"
 Exit Sub
End If

myPath = "〇〇〇"
myPath1 = myPath & myNum & "AAA\"
myPath2 = myPath & myNum & "BBB\"

If Dir(myPath1, vbDirectory) <> "" Then
 myPath3 = myPath1
ElseIf Dir(myPath2, vbDirectory) <> "" Then
 myPath3 = myPath2
Else
MsgBox "対象のファイルがありません。"
Exit Sub
End If
 
 myfile = Dir(myPath & "*.xlsx*")
   
 Do
  Workbooks.Open Filename:=myPath & "\" & myfile
  
 Dim i As Long
 For i = 1 To Sheets.Count
  If Sheets(i).Visible = True Then
   Sheets(i).Range("H4") = ThisWorkbook.Sheets(1).Range("B8").Text
   
  End If
  
 Next i
  myfile = Dir
 Loop Until myfile = "" 
Call pdfに出力
 
End Sub
---------------------------------------------------------------------
Sub pdfに出力()
Dim myPath As String, myfile As String
Dim myPath1 As String, myPath2 As String, myPath3 As String
Dim myNum As String
 myNum = Range("E10").Text

If ThisWorkbook.Sheets(1).Range("B8") = "" Then
 MsgBox "数字の入力は必須です!"
 Exit Sub
End If

myPath = "〇〇〇"
myPath1 = myPath & myNum & "AAA\"
myPath2 = myPath & myNum & "BBB\"

End If
 
myfile = Dir(myPath & "*.xlsx*")

 
Do While myfile <> ""

Workbooks(myfile).Activate

Dim i As Long
 For i = 1 To Sheets.Count
  If Sheets(i).Visible = True Then
   Sheets(i).Select Replace:=False
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
  Filename:=Left(Workbooks(myfile).FullName, InStrRev(Workbooks(myfile).FullName, ".")) & "pdf"

End If
Next

Workbooks(myfile).Close SaveChanges:=True  'ブックを閉じる
myfile = Dir
 
Loop

CreateObject("Shell.Application").Open myPath3
End If

End Sub

とすると、ファイルが開いてセルに値が入るまではうまくいきますが、
PDFに書き出したり、保存して閉じるをやってくれずに終了します。

最初のパスを直接指定している時と、変動でも出来るようにしている時と何が違うのでしょうか?

何かお気づきの点あればご示唆お願い致します。

【81661】Re:フォルダパスが変動しても対応したい。
発言  γ  - 21/2/15(月) 9:11 -

引用なし
パスワード
   まず、これはVBEからコピーペイストしたものなんですか?
これだけの量のコードを手打ちしたとは思えませんが、念のため確認します。
コピーペイストすることを推奨します。
入力ミスの検証までは勘弁して欲しいからです。

その上で申し上げますが、
デバッグ依頼ということなんでしょうか?
コンパイルエラーを含めて一切合切見て下さい、
などという質問はやめてください。

少なくともコンパイルエラーが出ないものを提示し直してください。

なお、インデントをキチンとつけたほうが、
コードの構造がもっと正確にわかるはずですよ。
そのこともお薦めしておきます。

【81662】Re:フォルダパスが変動しても対応したい。
お礼  のっち  - 21/2/16(火) 5:58 -

引用なし
パスワード
   コピーしてから一部打ち替えたものですが、
確かによく見ると、気になる点多々ありますね。

これでは指摘のしようが無い、と言われてもしかた無いかも知れません。
考え直します。

【81663】Re:フォルダパスが変動しても対応したい。
発言  γ  - 21/2/16(火) 7:26 -

引用なし
パスワード
   少なくとも実行できるレベルのもの
(無論、希望に達していないもので結構ですが)を
再提示してもらえば、コメントする用意はありますよ。

178 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free