![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
下記のマクロは先日教えて頂いたマクロで、マクロを実行すると
同じ作業フォルダ内にある別ブック(拡張子が.xlsx)を開きコピー範囲を指定出来るようになっております。
稀に、(拡張子が.xlsm)の場合もあり、拡張子が(.xlsx又は.xlsm)の両方に対応できるように変更出来る方法があれば教えてください。
尚、フォルダ内には、作業ブック(マクロ設定ブック)とコピー元のExcelファイル2つしかありません。
よろしくお願いいたします。
現状のマクロ
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.3ベストアンサー
- 回答日時:
No2です。
>拡張子は(.xlsx)と(.xlsm)だけに限定でお願いいたします。
了解しました。
拡張子(.xlsm)を含めると、自分自身のファイル名(マクロを格納したファイル)も取得してしまうので、これは、除く必要があります。
又、Dir関数で拡張子を(.xlsmと.xlsx)だけに限定して指定することはできないので、(.xls?)にして取得します。(?は任意の1文字)
したがって、余分な拡張子のものも取得する可能性があるので(例えば.xlsd等)、拡張子が(.xlsmと.xlsx)だけを取得対象ファイルとしてオープンするようにします。
以下のようにしてください。
Sub 提出シートコピー範囲()
Dim folderPath As String
Dim fileName As String
Dim ws As Worksheet
folderPath = ThisWorkbook.Path & "\"
'作業フォルダ内にはマクロを設定しているコピー先のブックとコピー元の
'○〇(提出用).xlsxの 2つ のExcelファイルしかありません。
fileName = Dir(folderPath & "*.xls?")
Do While fileName <> ""
If CheckName(fileName) = True Then Exit Do
fileName = Dir()
Loop
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
Private Function CheckName(ByVal fileName As String) As Boolean
CheckName = False
If fileName = ThisWorkbook.Name Then Exit Function
CheckName = True
If LCase(Right(fileName, 5)) = ".xlsx" Then Exit Function
If LCase(Right(fileName, 5)) = ".xlsm" Then Exit Function
CheckName = False
End Function
No.2
- 回答日時:
念のため、確認ですが、今後、拡張子が、(.xls)とか(.xlsb)とかも含めたいということはないのでしょうか。
拡張子は(.xlsx)と(.xlsm)だけに限定して良いのでしょうか。特に、(.xls)は古い形式のexcelファイルですが、これを使用する方が、たまに見受けられます。
下記が、excelでサポートしているファイルの拡張子の一覧です。
https://support.microsoft.com/ja-jp/office/excel …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2024/07/01 15:23
- Visual Basic(VBA) Excelのマクロについて教えてください。 2 2024/06/14 16:38
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2024/07/01 09:07
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2024/06/18 09:20
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2024/06/13 13:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2024/04/01 17:53
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
久しぶりのプログラミング
Visual Basic(VBA)
-
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
-
4
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
5
VBA SaveChanges 上書きされない
Visual Basic(VBA)
-
6
VBAなくなるの?
Visual Basic(VBA)
-
7
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
8
VBAコードについて教えてください。
Visual Basic(VBA)
-
9
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
10
エクセルVBAコードで教えて下さい!
Visual Basic(VBA)
-
11
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
12
エクセルのVBAコードについて教えてください。
Visual Basic(VBA)
-
13
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
14
VBAコードについて教えてください。
Visual Basic(VBA)
-
15
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
16
エクセルVBA
Visual Basic(VBA)
-
17
エクセルのVBAコードについて教えてください。
Visual Basic(VBA)
-
18
エクセルのVBAコードについて教えてください。
Visual Basic(VBA)
-
19
ExcelのVBAコードについて教えてください。
Visual Basic(VBA)
-
20
Sub 要具ライフ() ActiveSheet.Cells.Find(what:=TOPゴム")."
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAが途中で止まります
-
2つ目のコンボボックスが動作...
-
Excel VBA別ブックのシートをコ...
-
VBA コードを実行すると画面が...
-
別ブックをダイアログボックス...
-
EXCEL2013 シート内容を別ブッ...
-
コードを直していただきたいで...
-
フォルダ内の全てのファイルに...
-
VBA 別ブックからコピペしたい...
-
異なるブック間でのセル範囲の...
-
VBS Bookを閉じるコード
-
マクロを利用して別ファイルに...
-
ワイルドカード「*」を使うとう...
-
vbaでvbaProjectのパスワード解...
-
エクセルのマクロを使ってメー...
-
VBA シートをコピーする際に Co...
-
【ExcelVBA】インデックスが有...
-
マクロで最終行を取得したい
-
【マクロ】違うフォルダにある...
-
VBA アプリケーション定義また...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
VBAで別ブックのシートを指定し...
-
Excelのマクロについて教えてく...
-
VBA 別ブックからコピペしたい...
-
Excelのマクロについて教えてく...
-
vbaでvbaProjectのパスワード解...
-
VBA コードを実行すると画面が...
-
【マクロ】アクティブセルにブ...
-
Excelのマクロについて教えてく...
-
VBAで別のブックにシートをコピ...
-
VBS Bookを閉じるコード
-
Excelのマクロについて教えてく...
-
【ExcelVBA】zip圧縮されたCSV...
-
【ExcelVBA】インデックスが有...
-
ACCESSVBA からExcelの他ブック...
-
vbaで他のブックに転記したい。...
-
【マクロ】違うフォルダにある...
おすすめ情報
回答ありがとうございます。
拡張子は(.xlsx)と(.xlsm)だけに限定でお願いいたします。
よろしくお願いいたします。