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

回答編集履歴

4

修正

2020/12/18 09:26

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -37,7 +37,7 @@
37
37
  ```
38
38
  フォルダ選択だったようなので、自作のFunctionを提供しておきます。
39
39
  ```VBA
40
- Public Function MyFileDialog(pType, pTitle, Optional pFileterTitle, Optional pFileter, Optional pPath) As String
40
+ Public Function MyFileDialog(pType, pTitle, Optional pFileterTitle, Optional pFileter, Optional pPath="") As String
41
41
  Dim wGetFileName
42
42
  wGetFileName = ""
43
43
  With Application.FileDialog(pType)

3

追記

2020/12/18 09:26

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -34,4 +34,42 @@
34
34
  DoCmd.OutputTo acOutputReport, "R_レポート名", acFormatPDF, FileName
35
35
  End If
36
36
  End Sub
37
+ ```
38
+ フォルダ選択だったようなので、自作のFunctionを提供しておきます。
39
+ ```VBA
40
+ Public Function MyFileDialog(pType, pTitle, Optional pFileterTitle, Optional pFileter, Optional pPath) As String
41
+ Dim wGetFileName
42
+ wGetFileName = ""
43
+ With Application.FileDialog(pType)
44
+ 'ダイアログのタイトルを設定
45
+ .title = pTitle
46
+ If pType = 3 Then
47
+ 'ファイルの種類を設定
48
+ .Filters.Clear
49
+ .Filters.Add pFileterTitle, pFileter
50
+ .FilterIndex = 1
51
+ '複数ファイル選択を許可しない
52
+ .AllowMultiSelect = False
53
+ End If
54
+ '初期パスを設定
55
+ If Nz(pPath) <> "" Then
56
+ .InitialFileName = pPath
57
+ Else
58
+ .InitialFileName = CurrentProject.path
59
+ End If
60
+ 'ダイアログを表示
61
+ If .Show <> 0 Then
62
+ 'ファイルが選択されたとき
63
+ 'そのフルパスを返り値に設定
64
+ wGetFileName = Trim(.SelectedItems.Item(1))
65
+ End If
66
+ End With
67
+ MyFileDialog = wGetFileName
68
+ End Function
69
+ Sub PDF化コード()
70
+ Dim FldName As String
71
+ FldName = MyFileDialog(4, "PDF保存先を選択")
72
+ If FldName <> "" Then
73
+ DoCmd.OutputTo acOutputReport, "R_レポート名", acFormatPDF, FldName & "\保存するPDF.pdf"
74
+ End If
37
75
  ```

2

推敲

2020/12/18 09:18

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -11,7 +11,6 @@
11
11
 
12
12
  ```VBA
13
13
  Function SaveAsFileDialog()
14
- Dim strFiles As String
15
14
  With Application.FileDialog(msoFileDialogSaveAs)
16
15
  'FileDialogオブジェクトの各種プロパティを設定
17
16
  .Title = "別名保存"

1

追記

2020/12/18 08:45

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -3,4 +3,36 @@
3
3
  DoCmd.OutputTo acOutputReport, "R_レポート名", acFormatPDF, "C:保存先パス\保存するPDF名.pdf"
4
4
  ➞名前はこちらで決められるが、保存先を事前にコードで指定しなくてはならず、都度保存ダイアログを開けない。
5
5
  ```
6
- [VBA:AccessのFileDialogを使用して[名前を付けて保存]ダイアログボックスを表示するサンプルプログラム](https://selifelog.com/blog-entry-249.html)
6
+ [VBA:AccessのFileDialogを使用して[名前を付けて保存]ダイアログボックスを表示するサンプルプログラム](https://selifelog.com/blog-entry-249.html)
7
+ 追記
8
+ ---
9
+ こんな感じ。
10
+ ※msoFileDialogSaveAsの場合は、フィルター出来ないのが難点ですけどね。
11
+
12
+ ```VBA
13
+ Function SaveAsFileDialog()
14
+ Dim strFiles As String
15
+ With Application.FileDialog(msoFileDialogSaveAs)
16
+ 'FileDialogオブジェクトの各種プロパティを設定
17
+ .Title = "別名保存"
18
+ .ButtonName = "保存実行" 'デフォルトは[保存(&S)]
19
+ .InitialFileName = CurrentProject.Path
20
+ '複数ファイル選択を許可しない
21
+ .AllowMultiSelect = False
22
+
23
+ '[名前を付けて保存]ダイアログボックスを表示する
24
+ If .Show Then
25
+ SaveAsFileDialog = .SelectedItems(1)
26
+ Else
27
+ SaveAsFileDialog = ""
28
+ End If
29
+ End With
30
+ End Function
31
+ Sub PDF化コード()
32
+ Dim FileName As String
33
+ FileName = SaveAsFileDialog
34
+ If FileName <> "" Then
35
+ DoCmd.OutputTo acOutputReport, "R_レポート名", acFormatPDF, FileName
36
+ End If
37
+ End Sub
38
+ ```