[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『格納先についてご相談』(つつ)
マクロについて質問です。番号によってフォルダを振り分けたいです。
番号がAAW0001であれば、
「\\A\B\C\w番号\0-1000\0-100\」ここに格納したい。
100毎は下記で問題ないですが1000毎がうまくいかず。
フォルダは既に作成してます。
ご教示お願いいたします。
x = "\\A\B\C\"
k = Mid(番号, 3, 1)
n = Mid(番号, 4, 4)
If n <= 100 Then
Spass = x & k & "番号\0-100\" & 番号
ElseIf n <= 200 Then
Spass = x & k & "番号\101-200\" & 番号
ElseIf n <= 300 Then
Spass = x & k & "番号\201-300\" & 番号
ElseIf n <= 400 Then
Spass = x & k & "番号\301-400\" & 番号
ElseIf n <= 500 Then
Spass = x & k & "番号\401-500\" & 番号
ElseIf n <= 600 Then
Spass = x & k & "番号\501-600\" & 番号
ElseIf n <= 700 Then
Spass = x & k & "番号\601-700\" & 番号
ElseIf n <= 800 Then
Spass = x & k & "番号\701-800\" & 番号
ElseIf n <= 900 Then
Spass = x & k & "番号\801-900\" & 番号
ElseIf n <= 999 Then
Spass = x & k & "番号\901-999\" & 番号
End If
以上よろしくお願いいたします。
< 使用 Excel:Microsoft365、使用 OS:Windows10 >
問いとコードが一致してない気がするけど、 0001なら \\A\B\C\w番号\0-1000\0-100\ 1001なら \\A\B\C\w番号\1001-2000\0-100\ でいいのかしら?
個人的に桁がそろってないと気持ち悪いので \\A\B\C\w番号\0001-1000\001-100\ のようなフォルダのほうがいい気がするんだけど・・・ (稲葉) 2023/03/14(火) 17:20:48
桁揃えと繰り上がりを0にするのか1にするのか揃えたほうがコーディング簡単だけど 指定されたフォルダ構成であれば、以下の形でどうでしょうか? Sub test() Dim spass As String Dim n As String Dim 番号 As String Dim fp親 As String Dim fp子 As String 番号 = "AAW9111" spass = "\\A\B\C\" & Mid(番号, 3, 1) & "番号\"
n = Mid(番号, 4, 4) '1000番台フォルダ Select Case Left(n, 1) Case "0" fp親 = "0-1000\" Case "9" fp親 = "9001-9999\" Case Else fp親 = Left(n, 1) & "001-" & Left(n, 1) + 1 & "000\" End Select
'100番台フォルダ Select Case Mid(n, 2, 1) Case "0" fp子 = "0-100\" Case "9" fp子 = "901-999\" Case Else fp子 = Mid(n, 2, 1) & "01-" & Mid(n, 2, 1) + 1 & "00\" End Select spass = spass & fp親 & fp子 Stop End Sub (稲葉) 2023/03/14(火) 17:40:29
問いとコードが一致してない気がするけど、 0001なら \\A\B\C\w番号\0-1000\0-100\ 1001なら \\A\B\C\w番号\1001-2000\0-100\ でいいのかしら? ⇒大変失礼しました。相違ないです。
個人的に桁がそろってないと気持ち悪いので \\A\B\C\w番号\0001-1000\001-100\ のようなフォルダのほうがいい気がするんだけど・・・ ⇒おっしゃる通り0001のほうがまとまりいいですね。 (つつ) 2023/03/14(火) 17:59:47
\\A\B\C\w番号\0000-0999\000-099\ \\A\B\C\w番号\0000-0999\100-199\ こういう繰り上がりなら、SelectCase入れないで fp親 = Left(n, 1) & "000-" & Left(n, 1) & "999\" fp子 = Mid(n, 2, 1) & "00-" & Mid(n, 2, 1) & "99\" これだけで済みそうです (稲葉) 2023/03/14(火) 18:05:37
\\A\B\C\w番号\0000-0999\000-099\ \\A\B\C\w番号\0000-0999\100-199\ こういう形で問題ないので、再度作成していただけないでしょうか?
Public Sub 帳票保存処理()
Dim k, Spass, x As String, i, j, n As Integer Dim F(13) As String
F(0) = file1: F(1) = file2: F(2) = file3
For i = 1 To 5 Step 1 F(i + 2) = 購入先ブック(i) Next i
F(8) = file5: F(9) = file6: F(10) = file7: F(11) = file8: F(12) = file9: F(12) = file10
x = "\\A\B\C\D\E\"
k = Mid(製番, 3, 1) n = Mid(製番, 4, 4)
If n <= 100 Then Spass = x & k & "製番\0-100\" & 製番 ElseIf n <= 200 Then Spass = x & k & "製番\101-200\" & 製番 ElseIf n <= 300 Then Spass = x & k & "製番\201-300\" & 製番 ElseIf n <= 400 Then Spass = x & k & "製番\301-400\" & 製番 ElseIf n <= 500 Then Spass = x & k & "製番\401-500\" & 製番 ElseIf n <= 600 Then Spass = x & k & "製番\501-600\" & 製番 ElseIf n <= 700 Then Spass = x & k & "製番\601-700\" & 製番 ElseIf n <= 800 Then Spass = x & k & "製番\701-800\" & 製番 ElseIf n <= 900 Then Spass = x & k & "製番\801-900\" & 製番 ElseIf n <= 999 Then Spass = x & k & "製番\901-999\" & 製番 End If
On Error Resume Next MkDir Spass If Err.Number = 75 Then On Error GoTo 0 End If
Spass = Spass & "\" & Left(rist(0), Len(rist(0)) - 4)
On Error Resume Next MkDir Spass If Err.Number = 75 Then On Error GoTo 0 End If
For i = 0 To 12 Step 1 On Error Resume Next Windows(F(i)).Activate
If Err.Number <> 0 Then On Error GoTo 0 GoTo jump End If
ChDir Spass On Error Resume Next ActiveWorkbook.SaveAs Filename:= _ Spass & "\" & F(i), FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False jump: Next i
MsgBox "保存を実行された場合は、" & Spass & " に保存されています。", vbInformation
Windows(file0).Close savechanges:=False
End End Sub
(つつ) 2023/03/14(火) 18:13:57
少しやり直したけど、こんな具合でいかがでしょう? Public Sub 帳票保存処理() Dim k As String, Spass As String, i As Long, j As Long Dim F(13) As String F(0) = file1: F(1) = file2: F(2) = file3 For i = 1 To 5 Step 1 F(i + 2) = 購入先ブック(i) Next i F(8) = file5: F(9) = file6: F(10) = file7: F(11) = file8: F(12) = file9: F(12) = file10
'[フォルダパス生成] Const x As String = "\\A\B\C\" Dim n As String, fp親 As String, fp子 As String
'//型番?抜き出し k = Mid(製番, 3, 1) & "番号\"
'//整理番号?抜き出し n = Mid(製番, 4, 4)
'//1000番台フォルダ 0000-0999\ fp親 = Replace("<桁>000-<桁>999\", "<桁>", Left(n, 1))
'//100番台フォルダ 000-099\ fp子 = Replace("<桁>00-<桁>99\", "<桁>", Mid(n, 2, 1))
'//フォルダパス \\A\B\C\w番号\0000-0999\000-009\ Spass = x & k & fp親 & fp子 Stop
On Error Resume Next MkDir Spass If Err.Number = 75 Then (稲葉) 2023/03/14(火) 18:28:38
出来た気がします!!
ありがとうございました!!
いろいろ試してみます!!!
(つつ) 2023/03/15(水) 09:11:43
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.