Set fso = CreateObject("Scripting.FileSystemObject") Set fr = fso.GetFolder(ThisWorkbook.Path)
On Error Resume Next
For Each fl In fr.Files If fl.Name <> ThisWorkbook.Name Then fl.Delete If Err.Number <> 0 Then Debug.Print "Err.Number:" & Err.Number &" FileName:" & fl.Name Err.Clear End If End If Next fl 0619デフォルトの名無しさん (ブーイモ MMbf-NtqY)2019/11/09(土) 09:04:21.85ID:DhErEMKcM Dim wb as Workbook ...
wbが開いているか閉じられているか確認する方法ありますか? 0620デフォルトの名無しさん (ワッチョイ eff7-jCOF)2019/11/09(土) 09:50:21.72ID:s5KKViGX0 For Each wb in workbooks で名前やパスをチェックするとか 0621デフォルトの名無しさん (アークセー Sx0f-Arvb)2019/11/09(土) 10:39:45.65ID:YT93jrBPx>>620 そのやり方だとNASとかにある共有ファイルを他人が開いてる場合には判定不可能
'サンプルコード Sub Sample() If IsFileOpened("任意のブックのフルパス") Then MsgBox "開かれています" Else MsgBox "開かれていません" End If End Sub
Function IsFileOpened(fliepath as String) As Boolean On Error Resume Next Open filepath For Append As #1 Close #1 If Err.Number > 0 Then IsFileOpened = True Err.Clear Else IsFileOpened = False End If End Function 0622デフォルトの名無しさん (オッペケ Sr0f-I9Tk)2019/11/10(日) 03:17:05.03ID:7c8MD0U8r>>621 ブックを開いているときは~$ファイル名の隠しファイルが作られるからそれを見たら 0623デフォルトの名無しさん (スププ Sdbf-38dS)2019/11/10(日) 16:07:54.61ID:mlZHtGvXd 行番号が1-9まで1ずつ加算されてる中で3ごとにブロックとして処理の始点を1,4,7行にしたいんだけど行番号から式で求められないかな? for i=1to9 if i<4 and i>0 then 処理1 elseif i<7 and i>3then 処理2 else 処理3 next i これを分岐なしでスマートに書きたい 123456789→111444777って変換式が欲しい 0624デフォルトの名無しさん (ワッチョイ 0f8e-8UzB)2019/11/10(日) 16:20:12.48ID:ISabdlL+0>>623 馬鹿は小学生からやり直せ 0625デフォルトの名無しさん (ワッチョイ 5bda-GHlP)2019/11/10(日) 16:45:02.84ID:3pDgk0W90 1引いて3で割った商を3倍して1を足すとか 0626デフォルトの名無しさん (スップ Sdbf-IAD9)2019/11/10(日) 16:54:56.61ID:CxUi7EKzd VBAの時点でスマートじゃないから 0627デフォルトの名無しさん (ワッチョイ 9f2c-E8Ce)2019/11/10(日) 17:03:38.70ID:ER+z1tbi0 Ruby で、
( 1..9 ).each { |i| p ( ( i - 1 ) / 3 ) * 3 + 1 } 0628デフォルトの名無しさん (ワッチョイ ef68-DaD1)2019/11/10(日) 17:13:45.05ID:HO+Z4H690 何でもうすぐ無くなる言語のruby何かで答えるの?アホなの? 0629デフォルトの名無しさん (ワッチョイ dbce-DaD1)2019/11/10(日) 17:46:44.80ID:f9aUABsd0>>623 変換するだけなら i - (i - 1) Mod 3 で111444777になる 3つの処理に分けたいなら Select Case i Case 1, 2, 3 処理1 Case 4, 5, 6 処理2 Case Else 処理3 End Select 0630デフォルトの名無しさん (ワッチョイ 5bda-AXNO)2019/11/10(日) 17:48:13.51ID:3pDgk0W90 式を入れてもできそうだな 0631デフォルトの名無しさん (アークセー Sx0f-Arvb)2019/11/10(日) 17:55:48.55ID:CHmVk7q0x>>623 111777999を割り出す変換式を使うのではなく、行番号を3で割った商が1の場合だけ処理を行うようにするのは駄目なの? 例えばこんな感じ
For i = 1 To 9 If i Mod 3 = 1 Then '処理 End If Next 0632デフォルトの名無しさん (アークセー Sx0f-Arvb)2019/11/10(日) 18:00:46.35ID:CHmVk7q0x>>631 間違えた、3で割った商じゃなくて余りね 0633デフォルトの名無しさん (ワッチョイ ef68-ojrg)2019/11/10(日) 19:14:57.01ID:tOVYZh2e0 数独かな 0634デフォルトの名無しさん (ワッチョイ 5bda-AXNO)2019/11/10(日) 19:46:34.21ID:3pDgk0W90 j = Mid("111444777", i, 1) 0635デフォルトの名無しさん (スププ Sdbf-38dS)2019/11/10(日) 22:03:46.21ID:mlZHtGvXd たくさんレスありがとう >>634のが一番シンプルな気がするのでこれいただきます。