
以下コードのうち、
newWb.SaveAs Range("E3") & "\" & Format(Now, "yyyymmdd") & "_見込み有.xlsx"
Dim folderPath As String
folderPath = Range("E5")
の箇所でエラー1004が発生します。
該当のフォルダパスは以下の通りExcelに記載しており、フォルダも存在するのですが、解決策が分かる方はいらっしゃいますでしょうか?
◆実行Excelシート
E3セル
C:\Users\kitto\Downloads\hokuho_フラグ有
E5セル
C:\Users\kitto\Downloads\hokuo_履歴一覧
◆コード
Function GetKeywords() As String()
Dim wb As Workbook
Set wb = ThisWorkbook
Dim ws As Worksheet
Set ws = wb.Worksheets(1)
Dim rng As Range
Set rng = ws.Range("C3:C" & ws.Cells(ws.Rows.Count, "C").End(xlUp).Row)
Dim keywords() As String
ReDim keywords(1 To rng.Rows.Count)
Dim i As Long
For i = 1 To rng.Rows.Count
keywords(i) = CStr(rng.Cells(i).Value)
Next i
GetKeywords = keywords
End Function
Sub TestGetKeywords()
Dim keywords() As String
keywords = GetKeywords()
End Sub
Sub SearchAndCopy()
Dim wb As Workbook
Dim newWb As Workbook
Set newWb = Workbooks.Add
Dim macroRunDate As String
macroRunDate = Format(Now, "yyyymmdd")
newWb.SaveAs Range("E3") & "\" & Format(Now, "yyyymmdd") & "_見込み有.xlsx"
Dim folderPath As String
folderPath = Range("E5")
Dim file As String
file = Dir(folderPath & "\*.xlsx")
Dim keywords() As String
keywords = GetKeywords()
Dim copiedSheets As New Collection
Do While file <> ""
Set wb = Workbooks.Open(folderPath & "\" & file)
Dim ws As Worksheet
For Each ws In wb.Worksheets
Dim rng As Range
Set rng = ws.UsedRange
For Each cell In rng
Dim keyword As Variant
For Each keyword In keywords
If InStr(cell.Value, keyword) > 0 And Not SheetIsCopied(ws.Name, copiedSheets) Then
ws.Copy After:=newWb.Sheets(newWb.Sheets.Count)
copiedSheets.Add ws.Name
Exit For
End If
Next keyword
Next cell
Next ws
wb.Close
file = Dir()
Loop
newWb.Close
End Sub

No.3ベストアンサー
- 回答日時:
ソースを見て解りました。
Set newWb = Workbooks.Addって、新規ブックを設定しています。
その後で
newWb.SaveAs Range("E3") &・・・・
folderPath = Range("E5")
とやっています。
つまり、Range("E3")、 Range("E5")は新しいブックのシートのE3セル、
E5せるになるからです。
今作業しているブック・シートのE3やE5である事を明示する必要があります。
ASで別名指定しますが、直接指定しても構いません
Workbooks("ブック名").Worksheets("シート名").Range(""E3") ・・・
とか
Workbooks("ブック名").Worksheets("シート名").Range(""E5") ・・・
です。
開いて作業しているブック名、シート名を当てはめてください。
No.2
- 回答日時:
こんにちは
いろいろありそうですが・・・
>以下コードのうち、
>newWb.SaveAs Range("E3") & "\" & Format(Now, "yyyymmdd") & "_見込み有.xlsx"
>Dim folderPath As String
>folderPath = Range("E5")
>の箇所でエラー1004が発生します。
3行分挙げられていますが、全部でエラーが発生しているわけでもないでしょう。
多分、最初の1行でエラーが発生しているのではないかと想像しました。
エラーの直接の原因は「存在しないパスを指定している」ものと想像します。
Save する直前で(=エラーの直前に)
Debug.Print Range("E3") & "\" & Format(Now, "yyyymmdd")
とでもしてみれば、すぐにわかるものと思います。
(デフォルト解釈を勘違いなさっているのではと想像します)
Downloadsフォルダに保存するってのも、なんだか一般的ではないような気もしますけれど・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excel UserForm の表示位置
-
C# DataGridViewで複数選択した...
-
特定の色のついたセルを削除
-
【VBA】【ユーザーフォーム_Lis...
-
エクセルVBA 配列からセルに「...
-
DataGridViewのフォーカス遷移...
-
セルの半透明着色処理
-
複数指定セルの可視セルのみを...
-
【Excel VBA】マクロで書き込ん...
-
Excel VBA IF文がうまく動作し...
-
【ExcelVBA】値を変更しながら...
-
Excelで空白セル直前のセルデー...
-
VBA:日付を配列に入れ別セルに...
-
Excel 範囲指定スクショについ...
-
エクセルのカーソルを非表示に...
-
入力規則のリスト選択
-
CellEnterイベント仕様について
-
DataGridViewでグリッド内に線...
-
【VBA】写真の貼り付けコードが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
特定の色のついたセルを削除
-
Excelで空白セル直前のセルデー...
-
Excel UserForm の表示位置
-
エクセルVBA 配列からセルに「...
-
VBA:日付を配列に入れ別セルに...
-
エクセル、マクロで番号を読込...
-
【Excel VBA】一番右端セルまで...
-
【VBA】写真の貼り付けコードが...
-
【ExcelVBA】値を変更しながら...
-
【VBA】【ユーザーフォーム_Lis...
-
DataGridViewのフォーカス遷移...
-
EXCEL VBA 文中の書式ごと複写...
-
データグリッドビューの結合セ...
-
複数指定セルの可視セルのみを...
-
QRコード作成マクロについて
-
C# DataGridViewで複数選択した...
-
Excel 範囲指定スクショについ...
-
エクセル VBA ボタンをクリック...
-
DataGridViewでグリッド内に線...
おすすめ情報