下記のマクロは先日教えて頂いたマクロで、
マクロを実行すると、ワイルドカードで指定したブックを開く事が出来ます。
ファイル名
①22069167-1_00-確認申請受付【花子】(提出用).xlsx
の場合は上手くマクロが実行されてブックを開く事が出来ますが。
②210610132-1_東二条7丁目住宅新築工事【太郎】(提出用) .xlsx
の場合は"コピー元ブックが見つかりません"を表示されてブックを開く事が出来ません。
下記のコードを変更し、①の場合も②の場合も両方ブックを開く事が出来る方法があれば教えてください。
よろしくお願いいたします。
現状のマクロ
Sub 提出シートを開く()
Dim folderPath As String
Dim fileName As String
folderPath = ThisWorkbook.Path & "\"
fileName = Dir(folderPath & "*(提出用).xlsx")
Do While fileName <> ""
Workbooks.Open (folderPath & fileName)
fileName = Dir()
Loop
End Sub
Sub 提出シートコピー範囲()
Dim ws As Worksheet
If Workbooks.Count > 1 Then
Set Wb2 = Workbooks(2) '別ブック
On Error Resume Next
Set ws = Wb2.Worksheets("提出シート")
If Err.Number <> 0 Then
MsgBox "コピー元ブックの提出シートが見つかりません"
On Error GoTo 0
Wb2.Close False
End
End If
'セルの値を取得する
ws.Range("B1:H47").Copy
Else
MsgBox "コピー元ブックが見つかりません": End
End If
End Sub
以上となります。
よろしくお願いいたします。
No.7ベストアンサー
- 回答日時:
No5です。
>出来れば、作業フォルダ内にはマクロ設定ブックと〇〇(提出用).xlsxの2つしかExcelファイルはありません。
>ターゲットブックしかないので、拡張子で判断し、(提出用)は不要になればと思っております。
そういうことでしたら、Sub 提出シートを開く()を
以下のように変えれば良いかと。(動作確認はしておりません)
Sub 提出シートを開く()
Dim folderPath As String
Dim fileName As String
folderPath = ThisWorkbook.Path & "\"
fileName = Dir(folderPath & "*.xlsx")
If fileName <> "" Then
Workbooks.Open (folderPath & fileName)
End If
End Sub
No.6
- 回答日時:
>.xlsxの2つのExcelファイルしかありません。
このロジックは使いまわすのではないかと思うのですが・・・違ったかな?
いずれにいたしましても 今回の場合(不具合の種をまきたくないので)
Call 提出シートを開く で呼ぶのをやめて
Sub 提出シートコピー範囲()内にまとめるべきです
Sub 提出シートコピー範囲()
Dim folderPath As String
Dim fileName As String
Dim ws As Worksheet
folderPath = ThisWorkbook.Path & "\"
'作業フォルダ内にはマクロを設定しているコピー先のブックとコピー元の
'○〇(提出用).xlsxの 2つ のExcelファイルしかありません。
fileName = Dir(folderPath & "*.xlsx")
If fileName <> "" Then
'別ブック ○〇(提出用).xlsx
Set Wb2 = Workbooks.Open(folderPath & fileName)
On Error Resume Next
Set ws = Wb2.Worksheets("提出シート")
If Err.Number <> 0 Then
MsgBox "コピー元ブックの提出シートが見つかりません"
On Error GoTo 0
Wb2.Close False
End
End If
'セルの値を取得する
ws.Range("B1:H47").Copy
Else
MsgBox "コピー元ブックが見つかりません": End
End If
End Sub
No.5
- 回答日時:
No2です。
>私としては、今回のケースを含めて、様々なブック名に対応できるようにしたいと思っております。
様々なブック名とは、具体的にどのようなケースでしょうか。
①任意の文字+(提出用).xlsx
②任意の文字+(提出用) .xlsx
(提出用)の後に半角のスペースが1つある場合
③任意の文字+(提出用)□□□.xlsx
(提出用)の後に半角のスペースが2つ以上ある場合(□は半角のスペースとします)
④任意の文字+(提出用) .xlsx
(提出用)の後に全角のスペースが1つある場合
⑤任意の文字+(提出用) .xlsx
(提出用)の後に全角のスペースが2つ以上ある場合
⑥任意の文字+(提出用) .xlsx
(提出用)の後に全角と半角が混在しスペースが2つ以上ある場合
⑦任意の文字+(提出用)XYZ.xlsx
(提出用)のあとに任意の文字(例ではXYZ)があるケース
⑧任意の文字+(提出用).xlsx
(提出用)の括弧である()が全角の場合
⑨任意の文字+(提出用).xls
拡張子がxlsx以外のブックの場合(xlsm)も含む
①②を正常ケースとして処理したいということは理解できましたが、
③から⑨のケースも正常ケースとして処理されたいのでしょうか?
No.4
- 回答日時:
#3です
名前の付いたExcelが送られて来て 半角スペースが入っている事が避けられないので(*(提出用) .xlsxファイル名で不具合は発生しない)
VBA処理時に 拡張子前の半角スペースを許容したい(今回の文字列)場合は ワイルドカードを指定するのは危険なので 条件を増やすやり方でどうでしょう
例
Sub 提出シートを開く()
Dim folderPath As String
Dim fileName As String
folderPath = ThisWorkbook.Path & "\"
fileName = Dir(folderPath & "*(提出用).xlsx")
If fileName = "" Then fileName = Dir(folderPath & "*(提出用) .xlsx")
Do While fileName <> ""
Workbooks.Open (folderPath & fileName)
fileName = Dir()
Loop
End Sub
混在する場合は*(提出用).xlsxのみが処理されます
十分に条件を絞れており Workbooks(2)しか使わないなら
Do While を使わず If文で処理した方が良いと思います
Workbooks.Open (folderPath & fileName) した方が良いと思います
そもそも(絶対と考えてはいけないけれど)
folderPathには自ブックと絶対にターゲットブックしかないという事であれば Do While と 拡張子で判断できるので(提出用)は不要になります
だいぶ余計な事かも知れませんが・・
#2様へのお礼には 語弊があるように思います
内容は#3で回答した内容と同様に
問題を危惧して ご質問の通り進めて良いかを問いかけていると思いますよ
No.3
- 回答日時:
こんにちは
原因は
うまくいかないブックには .xlsxの前に半角スペースがあるからですが
これをVBA側で対応する方法は色々とあります
しかしながら
貴方の処理を期待するブックが複数存在する場合
Do While fileName <> ""
VBA側で条件を広げることは思わぬ不具合を発生させる可能性を考えてください
限定文字 (提出用).xlsx に不要な文字が入らない対策をするべきだと思います
ブック抽出条件を広げるなら
#1様の方法や 単純に
fileName = Dir(folderPath & "*(提出用)*.xlsx")
とすればよいですが(知恵でBA)
繰り返し問題を発生させないために
出来ればよいではなく 本質を捉えて 判断してください
No.2
- 回答日時:
210610132-1_東二条7丁目住宅新築工事【太郎】(提出用) .xlsx
このファイル名は、(提出用)の後に半角の空白が1つあります。
半角の空白を□で表示すると
210610132-1_東二条7丁目住宅新築工事【太郎】(提出用)□.xlsx
のようになっています。
従って、fileName = Dir(folderPath & "*(提出用).xlsx")の行にマッチせず、
このファイルがオープンされません。ファイル名を
210610132-1_東二条7丁目住宅新築工事【太郎】(提出用)□.xlsx
から
210610132-1_東二条7丁目住宅新築工事【太郎】(提出用).xlsx
に変更すれば(半角の空白を削除すれば)、期待した動作になるはずです。
それとも、ファイル名はこのままの状態で、このファイルを開くようにしたいということでしょうか。
No.1
- 回答日時:
Sub 提出シートを開く()
Dim folderPath As String
Dim fileName As String
folderPath = ThisWorkbook.Path & "\"
fileName = Dir(folderPath & "*(提出用).xlsx")
Do While fileName <> ""
Workbooks.Open (folderPath & fileName)
fileName = Dir()
Loop
End Sub
を
Sub 提出シートを開く()
Dim folderPath As String
Dim fileName As String
folderPath = ThisWorkbook.Path & "\"
fileName = Dir(folderPath & "*.*")
Do While fileName <> ""
if instr(fileName,"(提出用).xlsx")>0 then
Workbooks.Open (folderPath & fileName)
end if
fileName = Dir()
Loop
End Sub
では
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロについて教えてください。 2 2024/06/14 16:38
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2024/06/18 09:20
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2024/06/13 13:39
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) Excelのマクロについて教えてください。 2 2024/06/13 10:35
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
【お題】 ・買ったばかりの自転車を分解してひと言
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
エクセルVBA
Visual Basic(VBA)
-
エクセルで 自動的に◯や数字を表示させることできます? 例えばなんですが 日付 山田 1 ◯ みたい
Excel(エクセル)
-
エクセルのVBAコードについて教えてください。
Visual Basic(VBA)
-
-
4
VBAコードのインデント表示
Visual Basic(VBA)
-
5
Excelの数式の効率化について
Excel(エクセル)
-
6
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
7
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
8
VBAコードについて教えてください。
Visual Basic(VBA)
-
9
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
10
Excel(M365) Vlookup/セル反転(VBA)について
Visual Basic(VBA)
-
11
エクセルのVBAコードについて教えてください。
Visual Basic(VBA)
-
12
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
13
Excel セルにおけるフォント設定の取得
Excel(エクセル)
-
14
Excelで、10000,20000,30000と表示されているのですが、時々10000,20000
Excel(エクセル)
-
15
ExcelのVBAコードについて教えてください。
Visual Basic(VBA)
-
16
FormulaR1C1の 相対参照式のコピー
Excel(エクセル)
-
17
Excel表の文字の幅を狭くしたい
Excel(エクセル)
-
18
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
19
Word VBA MSGBOX 内で降順表示
Visual Basic(VBA)
-
20
エクセルのマクロについて教えてください。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・ハマっている「お菓子」を教えて!
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
別ブックをダイアログボックス...
-
エクセルVBAが途中で止まります
-
VBA 別ブックからコピペしたい...
-
【ExcelVBA】インデックスが有...
-
ACCESSVBA からExcelの他ブック...
-
ワイルドカード「*」を使うとう...
-
VBA コードを実行すると画面が...
-
【マクロ】違うフォルダにある...
-
VBAで別のブックにシートをコピ...
-
【ExcelVBA】zip圧縮されたCSV...
-
フォルダ内の全てのファイルに...
-
新しく開いたブックをアクティ...
-
VBA シート名が一致した場合の...
-
Excelのマクロについて
-
Excelのマクロコードについて教...
-
【VBA】全シートの計算式を全て...
-
エクセルVBAで書式と値の貼付け...
-
VBAで別ブックのシートを指定し...
-
Excel-VBAでのファイルの開き方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
別ブックをダイアログボックス...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
VBA 別ブックからコピペしたい...
-
【ExcelVBA】インデックスが有...
-
VBA コードを実行すると画面が...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBAで別のブックにシートをコピ...
-
VBA 実行時エラー 2147024893
-
VBA シート名が一致した場合の...
-
ユーザーフォームの切り替えに...
-
【マクロ】違うフォルダにある...
-
【Excel VBA】書き込み先ブック...
-
VBS Bookを閉じるコード
-
Excelマクロ 該当する値の行番...
-
VBAで複数のブックを開かずに処...
-
Excel2007VBAファイルの表示に...
-
VBA アプリケーション定義また...
おすすめ情報
№2さん
大変失礼いたしました。
№3さんのご指摘で、誤ったお礼をしておりました、
私としては、今回のケースを含めて、様々なブック名に対応できるようにしたいと思っております。
よろしくお願いいたします。
色々と考えて頂きまして、ありがとうございます。
作業フォルダ内にはマクロを設定しているコピー先のブックとコピー元の
○〇(提出用).xlsxの2つのExcelファイルしかありません。
提案していただけた
folderPathには自ブックと絶対にターゲットブックしかないという事であれば Do While と 拡張子で判断できるので(提出用)は不要になります
を使用した、コードを教えていただけますか。
申し訳ありません。
よろしくお願いいたします。
ご連絡ありがとうございます。
現状では(提出用)をワイルドカードにて判断しておりますが、
出来れば、作業フォルダ内にはマクロ設定ブックと〇〇(提出用).xlsxの2つしかExcelファイルはありません。
ターゲットブックしかないので、拡張子で判断し、(提出用)は不要になればと思っております。
よろしくお願いいたします。