teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

追記

2021/10/21 06:02

投稿

退会済みユーザー
answer CHANGED
@@ -30,4 +30,5 @@
30
30
  MkDirUnicodeAPI "C:\test\" & c & "_API"
31
31
  MkDirUnicodeFSO "C:\test\" & c & "_FSO"
32
32
  End Sub
33
- ```
33
+ ```
34
+ 他関数も対応していないものがありそうな気がしますし、別アプリでもUnicode非対応のものは割とあるので、本当にそういった文字をファイルパスに含めていいのかどうかは良く考えてください。

4

修正

2021/10/21 06:02

投稿

退会済みユーザー
answer CHANGED
@@ -1,5 +1,5 @@
1
1
  これでどうでしょう。
2
- VBAのエディタ・デバッガはUnicode非対応なので、Shift_JISで表示出来ない文字は?に化けます。
2
+ VBAのエディタ・デバッガはUnicode非対応なので、Shift_JISで表示出来ない文字は"?"に化けます。
3
3
  ```vba
4
4
  Option Explicit
5
5
 

3

追記

2021/10/21 05:56

投稿

退会済みユーザー
answer CHANGED
@@ -1,4 +1,5 @@
1
1
  これでどうでしょう。
2
+ VBAのエディタ・デバッガはUnicode非対応なので、Shift_JISで表示出来ない文字は?に化けます。
2
3
  ```vba
3
4
  Option Explicit
4
5
 

2

修正

2021/10/21 05:56

投稿

退会済みユーザー
answer CHANGED
@@ -12,7 +12,7 @@
12
12
  End Sub
13
13
 
14
14
  'FileSystemObjectを使う方法
15
- Private Sub MkDirUnicodeFS(ByVal path As String)
15
+ Private Sub MkDirUnicodeFSO(ByVal path As String)
16
16
  On Error Resume Next
17
17
  Dim fs As Object
18
18
  Set fs = CreateObject("Scripting.FileSystemObject")
@@ -26,7 +26,7 @@
26
26
 
27
27
  c = Range("A1").Value
28
28
 
29
- MkDirUnicodeFS "C:\test\" & c & "_API"
29
+ MkDirUnicodeAPI "C:\test\" & c & "_API"
30
- MkDirUnicodeFS "C:\test\" & c & "_FS"
30
+ MkDirUnicodeFSO "C:\test\" & c & "_FSO"
31
31
  End Sub
32
32
  ```

1

追記

2021/10/21 05:52

投稿

退会済みユーザー
answer CHANGED
@@ -6,16 +6,27 @@
6
6
  ByVal stringlpPathName As LongPtr, _
7
7
  ByVal lpSecurityAttributes As LongPtr) As Integer
8
8
 
9
+ 'CreateDirectoryWを使う方法
9
- Private Sub MkDirUnicode(ByVal path As String)
10
+ Private Sub MkDirUnicodeAPI(ByVal path As String)
10
11
  Call CreateDirectoryW(StrPtr(path), 0)
11
12
  End Sub
12
13
 
14
+ 'FileSystemObjectを使う方法
15
+ Private Sub MkDirUnicodeFS(ByVal path As String)
16
+ On Error Resume Next
17
+ Dim fs As Object
18
+ Set fs = CreateObject("Scripting.FileSystemObject")
19
+ Call fs.CreateFolder(path)
20
+ Set fs = Nothing
21
+ End Sub
22
+
13
23
  Private Sub CommandButton1_Click()
14
24
  Dim c As String
15
25
  Dim d As String
16
26
 
17
27
  c = Range("A1").Value
18
28
 
29
+ MkDirUnicodeFS "C:\test\" & c & "_API"
19
- MkDirUnicode "C:\test\" & c
30
+ MkDirUnicodeFS "C:\test\" & c & "_FS"
20
31
  End Sub
21
32
  ```