はじめまして!現在、初めてVBAのコピペ自動ツールを作成しています!
具体的には、複数あるシートの中身をコピーし同シートのテンプレートにペーストしていく、というものを作っています。
動かしてみると「ファイル名または番号が不正です」と変数booknameにパスを代入する箇所「 bookname = Dir(ThisWorkbook.Path & "\操作対象フォルダ\*")」でエラーが出てしまい原因が分かりません…
どこをどうすれば良いのか、どうかご教示いただけないでしょうか。
Sub avod_totals()
Application.ScreenUpdating = False
Dim i As Integer
Dim Row1 As Long
Dim targetSheet As Worksheet
Dim bookname As String
bookname = Dir(ThisWorkbook.Path & "\操作対象フォルダ\*")
Workbooks.Open ThisWorkbook.Path & "\操作対象フォルダ\" & bookname
If bookname = "" Then
MsgBox ""
Exit Sub
End If
For i = 2 To Worksheets.Count
With Worksheets(i)
Row1 = .Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
.Activate
.Range("a10", Range("h10").End(xlDown).End(xlToRight)) _
.Copy Sheets(1).Cells(Row1, 1)
End With
Next i
With Worksheets(1)
.Activate
.Columns("H").Value = .Columns("H").Value
.Range("F:G").Delete
.Range("F9").Value = Replace(Range("F9"), "8", "6")
End With
Application.DisplayAlerts = False
For Each targetSheet In Worksheets
If targetSheet.Name <> "テンプレート" Then
targetSheet.Delete
End If
Next
Application.DisplayAlerts = True
MsgBox "完了"
End Sub
No.6ベストアンサー
- 回答日時:
>ワンドライブ上にあるから動作しないとかありますかね?
ありますね。
ExcelファイルがOneDriveと同期している?ThisWorkbook.PathはURLですか、、
>会社の上長とも相談しちゃんと動くようになったら改めてご報告させてください
はい。
最後までお付き合いいただきありがとうございました!
ワンドライブ環境下ではないフォルダに移したら、正常に動作しました( ノД`)!!
知らないことが多すぎて、これからもアホなこと質問するかもしれませんが見捨てないでください!
皆さま本当にありがとうございました!!
No.5
- 回答日時:
こんにちは、#4です。
問題は解決されたでしょうか?一点、アドバイスをしていなかった事を思い出しました。
Workbooks.Openメソッドを使用する場合、基本必須では無いかと思いますので、加筆します。
bookname = Dir(ThisWorkbook.Path & "\操作対象フォルダ\*")
について、ファイル名を抽出しているのだと思いますが、拡張子を指定してみてください。
ファイルを抽出できた時にWorkbooks.Openで必ず開く事の出来るWorkbookを指定する為です。
例
bookname = Dir(ThisWorkbook.Path & "\操作対象フォルダ\*.xls*")
If bookname = "" Thenの順番は、#4で示している通りです。
何度もご親切にありがとうございます(*^^*)
ご指摘いただいた通り試してみました!だけど、結果は変数booknameに代入する箇所でファイル名が不正ですとなってしまいます…。
MsgboxでThisWorkbook.Path、ActiveWorkbook.Pathも表示してみましたがちゃんと取得出来ているようで同じパスでした。
ワンドライブ上にあるから動作しないとかありますかね?
時間はかかるかもしれませんが、会社の上長とも相談しちゃんと動くようになったら改めてご報告させてください!
本当にありがとうございました。
No.4
- 回答日時:
横から失礼します。
>新しいExcelから実行
この時、新しいExcelは保存してから、実行してますでしょうか?
新規作成時、保存していないと、パスを取得できないと思いますので、
あと、ThisWorkbook.Path を ActiveWorkbook.Path にした場合は、どうでしょう?
また、エラー箇所が限定的な場所なので、
Debug.Print ActiveWorkbook.Path; "<>"; ThisWorkbook.Path
などで、イミディエイトウィンドウに同じか確認してみてください。(普通同じ)
また、booknameに空白が返されるのは、存在しない為ですので、
bookname = Dir(ThisWorkbook.Path & "\操作対象フォルダ\*")
Workbooks.Open ThisWorkbook.Path & "\操作対象フォルダ\" & bookname
If bookname = "" Then
MsgBox ""
Exit Sub
End If
は、不具合が生じます。
bookname = Dir(ThisWorkbook.Path & "\操作対象フォルダ\*")
If bookname <> "" Then
Workbooks.Open ThisWorkbook.Path & "\操作対象フォルダ\" & bookname
Else
MsgBox "ブックが見つかりませんでした。"
Exit Sub
End If
のような流れになると思います。
No.3
- 回答日時:
No2です
>するとエラーの内容が変わり、booknameになにも格納されていないようです。
最初のご質問文の際のエラーはちょっと置いておいて、まずは、単純な3行のコードの方で考えてみます。
「エラーの内容が変わり」とありますが、3行のコードでもエラーが発生しているのでしょうか?
それとも、変数booknameの内容が空白なだけで、エラーは発生していないということでしょうか?
前者だと、ちょっと原因の想像がつきませんが、ちなみにエラー発生はどの行で、メッセージは何と出ていますか?(メッセージも大きなヒントになりますので)
後者だとすれば、コードとしてはちゃんと動作しているものと推測されます。
値が空白ということは、該当するものが見つからない(=存在しない)ということと考えられますので、フォルダ構成やパスを再確認してみてください。
立て続けにご回答いただきありがとうございます!!
今日改めて何回か動かしてみたのですが、bookname = Dir(ThisWorkbook.Path & "\操作対象フォルダ\*")の箇所で「実行時エラー52 ファイル名または番号が不正です」とでるようになってしまいました。
このエラーが出る前は、おっしゃる通り変数booknameの内容が空白でした。
もうお手上げ状態です(´・・`)
色々と一緒に考えてくれてありがとうございました。
No.2
- 回答日時:
こんにちは
ご質問のエラーに関係しそうなのは2行分しかないので、試みに
Dim bookname As String
bookname = Dir(ThisWorkbook.Path & "\操作対象フォルダ\*")
MsgBox bookname
の3行で実行してみましたが、予想通り問題は無いようです。
「操作対象フォルダ」というフォルダが存在しない場合でも、「フォルダが存在しても内容が空」という場合でもエラーにはなりませんね。
ファイルオープンと条件判断の順序、及びファイル種類の限定に関しては、No1様のご指摘の通りと思いますが、これらはご質問のエラーとは直接の関係はないものと思います。
(その実行前にエラーが出ていますので。Openでエラーが出ているなら別ですが)
その他で原因になりそうなのは、「ThisWorkbook.Path」が取れないことですが、エクセルのVBAとして実行なさっているのですよね?
もしもそうでない場合は、ThisWorkbookが取得できないのでエラーになると推測しますが、一方で、その場合は別のメッセージになりそうな気がします。(←確認していません)
回答になっていなくて申し訳ありませんが、一度PCを再起動した上で、新しいエクセルブックに同じコード記して実行してもやはり同じエラーが発生しますでしょうか?
あるいは、単純化のために上記の3行コードで試してみるとか。
ご回答ありがとうございます!
ご指摘の通り再起動後、新しいExcelから実行、3行コードで実行の2通りやってみました。
するとエラーの内容が変わり、booknameになにも格納されていないようです。
デスクトップに操作対象フォルダがありちゃんとExcelデータも格納してあるのに、なぜなのでしょうか(´;ω;`)
あとエラーの内容が変わったのも気になります。
もしご存じでしたらご教示くださいませ。
ありがとうございました。
No.1
- 回答日時:
bookname = Dir(ThisWorkbook.Path & "\操作対象フォルダ\*")
これだとフォルダを探している事になるのでは?
拡張子を付けて
bookname = Dir(ThisWorkbook.Path & "\操作対象フォルダ\*.xls?")
とか?
Workbooks.Open ThisWorkbook.Path & "\操作対象フォルダ\" & bookname
If bookname = "" Then
MsgBox ""
Exit Sub
End If
ここは逆では?
If bookname = "" Then
MsgBox ""
Exit Sub
End If
Workbooks.Open ThisWorkbook.Path & "\操作対象フォルダ\" & bookname
わー!!早速ありがとうございます~!嬉しいです!
ご指摘の通り修正したのですが、同じ個所で同じ内容のエラーが出てしまいます…。
本当に謎です(´;ω;`)
また何か違う方法ご存じでしたらご教示くださいませ。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
タイムマシーンがあったら、過去と未来どちらに行く?
20XX年、ついにタイムマシーンが開発されました。 あなたは過去に行く? それとも未来? タイムマシーンにのって、どこに行って、何をしたいか教えてください!
-
昨日まで動いていたエクセルのマクロが急に動かなくなりました
Excel(エクセル)
-
VB6 Dir関数で52エラー発生
Visual Basic(VBA)
-
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
-
4
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
ExcelVBAのDirでスペース含むファイル名
Visual Basic(VBA)
-
7
ファイル名を変更するマクロを作成したが「ファイル名または番号が不正です」と表示されます
Excel(エクセル)
-
8
【VBA】ファイルパスに半角スペースが入ると、VBAが動かない
Excel(エクセル)
-
9
ExcelでVBAを使用した際に、『パス名が無効です』とエラーになります。
Excel(エクセル)
-
10
実行時エラー52
Excel(エクセル)
-
11
VBAでの結合セルのコピー&ペースト
Excel(エクセル)
-
12
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
13
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
14
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
15
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
16
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
17
ビットマップ(bmp)形式で背景を透過にできる?
画像編集・動画編集・音楽編集
-
18
アクセスVBAのMe!と[ ]
Access(アクセス)
-
19
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
20
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
VBAでfunctionを利用しようとし...
-
String""から型'Double'への変...
-
ACCESSで値を代入できないとは?
-
On ErrorでエラーNoが0
-
VBA データ(特定値)のある最...
-
「実行時エラー '3167' レコー...
-
実行時エラー 438 の解決策をお...
-
VB.net 重複チェックがしたいです
-
文字列内で括弧を使うには
-
ExecuteNonQueryメソッドの戻り値
-
マクロで"#N/A"のエラー行を削...
-
pythonのopenpyxlについて
-
ASPでこんなエラーが出たんです...
-
オブジェクト型の変数にフォー...
-
ADO 「認証に失敗しました」
-
【VBA】ワークブックを開く時に...
-
フランスの生年月日(jj/mm/aaaa)
-
ApplicationとWorksheetFunctio...
-
Filter関数を用いた結果、何も...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
VBAでfunctionを利用しようとし...
-
String""から型'Double'への変...
-
【VBA】ワークブックを開く時に...
-
マクロで"#N/A"のエラー行を削...
-
VBA データ(特定値)のある最...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
On ErrorでエラーNoが0
-
「実行時エラー '3167' レコー...
-
【Access】Excelインポート時に...
-
インポート時のエラー「データ...
-
Excel vbaについての質問
-
ACCESSで値を代入できないとは?
-
実行時エラー 438 の解決策をお...
-
【VBAエラー】Nextに対するFor...
-
Filter関数を用いた結果、何も...
-
ApplicationとWorksheetFunctio...
-
エクセルVBAで埋め込みグラフ(C...
-
VBでSQL文のUPDATE構文を使った...
おすすめ情報