
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
>aaaaaaaaaaYYYYMMDDHHNNSS.csv
>aが10個です
修正しました。
Public Sub ブック名転記()
Dim ws As Worksheet
Dim wrow As Long
Dim lastrow As Long
Dim ret As Boolean
Set ws = ActiveSheet
lastrow = ws.Cells(Rows.Count, "C").End(xlUp).Row
ws.Range("A2").Value = ""
For wrow = 2 To lastrow
ret = CheckName(ws.Cells(wrow, "C").Value)
If ret = True Then
ws.Range("A2").Value = ws.Cells(wrow, "C").Value
Exit For
End If
Next
If ws.Range("A2").Value = "" Then
MsgBox ("aaaaaaaaaaYYYYMMDDHHNNSS.csv 形式のファイルはありません")
Exit Sub
End If
Dim book_name As String
Dim sheet_name As String
book_name = ws.Range("A2").Value
sheet_name = ws.Range("A4").Value
MsgBox (book_name)
MsgBox (sheet_name)
End Sub
Private Function CheckName(ByVal name As String) As Boolean
CheckName = False
'28文字でないならエラー
If Len(name) <> 28 Then Exit Function
'先頭10文字が aaaaaaaaaa でないならエラー
If Left(name, 10) <> "aaaaaaaaaa" Then Exit Function
'末尾の4文字が .csv(大文字可) でないならエラー
If LCase(Right(name, 4)) <> ".csv" Then Exit Function
'YYYYMMDDHHNNSSが日付・時刻として正しくないならエラー
Dim dt As String
Dim date_time As String
dt = Mid(name, 11, 14)
If IsNumeric(dt) = False Then Exit Function
date_time = Left(dt, 4) & "/" & Mid(dt, 5, 2) & "/" & Mid(dt, 7, 2) & " " & Mid(dt, 9, 2) & ":" & Mid(dt, 11, 2) & ":" & Mid(dt, 13, 2)
If IsDate(date_time) = False Then Exit Function
CheckName = True
End Function
No.4
- 回答日時:
>ちなみに
>aaaaaaaaaa20250420180001.xls
>※aは10個 変更
>の変更につき、以下コードを、変更しましたが動きませんでした
>他、変更する所があれば教えて下さい
修正しました。
Public Sub ブック名転記()は、
MsgBox ("aaaaaaaaaaYYYYMMDDHHNNSS.xlsx 形式のファイルはありません")
の行のみ修正しています。
Private Function CheckName(ByVal name As String) As Boolean
は、全面的に変更しています。
-----------------------------------------
Public Sub ブック名転記()
Dim ws As Worksheet
Dim wrow As Long
Dim lastrow As Long
Dim ret As Boolean
Set ws = ActiveSheet
lastrow = ws.Cells(Rows.Count, "C").End(xlUp).Row
ws.Range("A2").Value = ""
For wrow = 2 To lastrow
ret = CheckName(ws.Cells(wrow, "C").Value)
If ret = True Then
ws.Range("A2").Value = ws.Cells(wrow, "C").Value
Exit For
End If
Next
If ws.Range("A2").Value = "" Then
MsgBox ("aaaaaaaaaaYYYYMMDDHHNNSS.xlsx 形式のファイルはありません")
Exit Sub
End If
Dim book_name As String
Dim sheet_name As String
book_name = ws.Range("A2").Value
sheet_name = ws.Range("A4").Value
MsgBox (book_name)
MsgBox (sheet_name)
End Sub
Private Function CheckName(ByVal name As String) As Boolean
CheckName = False
'29文字でないならエラー
If Len(name) <> 29 Then Exit Function
'先頭10文字が aaaaaaaaaa でないならエラー
If Left(name, 10) <> "aaaaaaaaaa" Then Exit Function
'末尾の5文字が .xlsx(大文字可) でないならエラー
If LCase(Right(name, 5)) <> ".xlsx" Then Exit Function
'YYYYMMDDHHNNSSが日付・時刻として正しくないならエラー
Dim dt As String
Dim date_time As String
dt = Mid(name, 11, 14)
If IsNumeric(dt) = False Then Exit Function
date_time = Left(dt, 4) & "/" & Mid(dt, 5, 2) & "/" & Mid(dt, 7, 2) & " " & Mid(dt, 9, 2) & ":" & Mid(dt, 11, 2) & ":" & Mid(dt, 13, 2)
If IsDate(date_time) = False Then Exit Function
CheckName = True
End Function
大変、申し訳ございません。拡張子を間違っていました
お手すきな時、教えて下さい。宜しくお願いします
aaaaaaaaaaYYYYMMDDHHNNSS.csv
aが10個です
No.3
- 回答日時:
こんにちは
スピル機能が使えるバージョンなら、関数でも可能です。
A2セルに
=LET(a,REGEXEXTRACT(C2:C11,"^売上一覧[0-9]{4}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])[0-5][0-9][0-5][0-9]\.xls(x)?$"),INDEX(FILTER(a,NOT(ISERROR(a)),""),1))
とか。
日付、時刻のチェックを緩くしても良ければ、
=LET(a,REGEXEXTRACT(C2:C11,"^売上一覧[0-9]{14}\.xls(x)?$"),INDEX(FILTER(a,NOT(ISERROR(a)),""),1))
でも可能かと。
関数でのご指導ありがとうございます
質問なのですが、自宅パソコン→サブスクExcelにて普通にできましたが
他のパソコンで実施したら、出来ませんでした→関数の所に緑三角→エラーインジケーターがでます、バージョンは、以下です
以下バージョンでも使えるようにする
アドバイスありまたら、お願いします
バージョン
Microsoft 365 Apps for enterprise
No.2
- 回答日時:
以下のようにしてください
A2のファイル名は変数book_name に格納、
A4のシート名は変数sheet_name に格納しています。
それぞれ、メッセージボックスに表示しています。
Option Explicit
Public Sub ブック名転記()
Dim ws As Worksheet
Dim wrow As Long
Dim lastrow As Long
Dim ret As Boolean
Set ws = ActiveSheet
lastrow = ws.Cells(Rows.Count, "C").End(xlUp).Row
ws.Range("A2").Value = ""
For wrow = 2 To lastrow
ret = CheckName(ws.Cells(wrow, "C").Value)
If ret = True Then
ws.Range("A2").Value = ws.Cells(wrow, "C").Value
Exit For
End If
Next
If ws.Range("A2").Value = "" Then
MsgBox ("売上一覧YYYYMMDDHHNNSS.xlsx 形式のファイルはありません")
Exit Sub
End If
Dim book_name As String
Dim sheet_name As String
book_name = ws.Range("A2").Value
sheet_name = ws.Range("A4").Value
MsgBox (book_name)
MsgBox (sheet_name)
End Sub
Private Function CheckName(ByVal name As String) As Boolean
CheckName = False
'23文字でないならエラー
If Len(name) <> 23 Then Exit Function
'先頭4文字が 売上一覧 でないならエラー
If Left(name, 4) <> "売上一覧" Then Exit Function
'末尾の5文字が .xlsx(大文字可) でないならエラー
If LCase(Right(name, 5)) <> ".xlsx" Then Exit Function
'YYYYMMDDHHNNSSが日付・時刻として正しくないならエラー
Dim dt As String
Dim date_time As String
dt = Mid(name, 5, 14)
If IsNumeric(dt) = False Then Exit Function
date_time = Left(dt, 4) & "/" & Mid(dt, 5, 2) & "/" & Mid(dt, 7, 2) & " " & Mid(dt, 9, 2) & ":" & Mid(dt, 11, 2) & ":" & Mid(dt, 13, 2)
If IsDate(date_time) = False Then Exit Function
CheckName = True
End Function
すごい、コードの教授ありがとうございます
うまく、動きました
ちなみに
aaaaaaaaaa20250420180001.xls
※aは10個 変更
の変更につき、以下コードを、変更しましたが動きませんでした
他、変更する所があれば教えて下さい
CheckName = False
'23文字でないならエラー
If Len(name) <> 28 Then Exit Function
'先頭4文字が 売上一覧 でないならエラー
If Left(name, 10) <> "aaaaaaaaaa" Then Exit Function
'末尾の5文字が .xlsx(大文字可) でないならエラー
If LCase(Right(name, 4)) <> ".csv" Then Exit Function
No.1
- 回答日時:
補足要求です。
ファイル名は、
売上一覧YYYYMMDDHHSS.xls 形式
となっていますが、
実際の例は、
売上一覧YYYYMMDDHHNNSS.xlsx 形式です。
①正しい拡張子は、xlsなのかそれともxlsxなのかが不明です。(もしくは両方とも正しい)
②YYYYMMDDHHSSはYYYYMMDDHHNNSSの誤りと理解して良いでしょうか。(NNは分)
1→YYMMDDHHNNSS
→14ケタです→こちらの間違いです
2 xlsx yahoo.co.jp通常のExcel拡張子です
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
算術演算子「¥」の意味について
Visual Basic(VBA)
-
【マクロ】開いているブックの名前を取得した後、名前をセルに1つづつ入力するには?
Visual Basic(VBA)
-
以下のプログラムの実行結果はどうなると思いますか? その理由も教えてください。
Visual Basic(VBA)
-
-
4
VBAの「To」という語句について
Visual Basic(VBA)
-
5
【マクロ】変数を使った、文字の種類の変更にて、エラーとなる。
Visual Basic(VBA)
-
6
VB.net 文字列から日付型へ変更したい
Visual Basic(VBA)
-
7
VBA 最終行の取得がうまくいかず上書きされてしまいます。
Visual Basic(VBA)
-
8
vbaマクロについて
Visual Basic(VBA)
-
9
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
10
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
11
ダブルクリックで貼り付けた画像からリンクのみ削除し、画像を残したい。
Visual Basic(VBA)
-
12
エクセルのVBAコードについて教えてください。
Visual Basic(VBA)
-
13
(EXCEL超初心者)EXCELの関数(またはマクロ)で質問です。
Visual Basic(VBA)
-
14
【マクロ】モジュール変数の記述時、Callにて、呼び出されたプロシージャから実行するとエラーとなる?
Visual Basic(VBA)
-
15
エクセルVBA 検索結果を隣のシートの最終行に転記したい。
Visual Basic(VBA)
-
16
改行文字「vbCrLf」とは
Visual Basic(VBA)
-
17
エクセルの改行について
Visual Basic(VBA)
-
18
条件付書式設定にて、本日の日付を条件として、2行分にセルに色を付けるには?
Excel(エクセル)
-
19
9月17日でサービス終了らしいのですが、今までのようなエクセルの質問や相談はどこですればいい?
Excel(エクセル)
-
20
【マクロ】アクティブセルの時間を別ブックから検索。見つかったセルを含めた最終行まで選択したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Google ドライブに意図しないフ...
-
VBA:ユーザーフォームのマルチ...
-
WPSスプレッドシートでエラー。...
-
【マクロ】既存ファイルの名前...
-
mp3ファイルが重複して表示され...
-
BVE5で湖西線をプレイしたい
-
パソコンのファイルの種類 mp3...
-
拡張子sfvってなんですか?
-
rarからisoにするにはどうすれ...
-
DVD Decrypterの警告表示について
-
開かなくなった引き出しの開け方
-
A4ファイルを綺麗に並べる方法...
-
ChatGPT excel
-
オフィス内のA4ファイルが倒れ...
-
Excel VBA 転記について
-
iPhoneでzipファイルを開きたい...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
ISO9001
-
メールに添付ファイル(エクセ...
-
exeファイルの中身を見ることは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Google ドライブに意図しないフ...
-
cerファイル、pfxファイルの基...
-
VBA:ユーザーフォームのマルチ...
-
ChatGPT excel
-
【マクロ】売上一覧YYYYMMDDHHS...
-
拡張子sfvってなんですか?
-
A4ファイルを綺麗に並べる方法...
-
VBA 数値を文字列として貼付したい
-
「最小化」したファイルが元の...
-
AUTOCAD
-
"~$[ファイル名].xlsx"というフ...
-
メールに添付ファイル(エクセ...
-
WPSスプレッドシートでエラー。...
-
開かなくなった引き出しの開け方
-
FlukeのLANテスター flwファイ...
-
plgファイルの開き方
-
ISO9001
-
BVE5で湖西線をプレイしたい
-
windows explorerからエクセル...
-
オフィス内のA4ファイルが倒れ...
おすすめ情報