2017-12-19 17 views
0

Visual Basicで非常に新しいですVisual Basicを使用してExcelでフォルダディレクトリを作成する

現在Excel内で電卓を作成しようとしていますが、Excel内でデータをPDFにエクスポートできます。私はexcel文書をエクスポートすることができましたが、それは私の "D:\"にしか行きません。

D:\内にフォルダを作成するにはどうすればExcel_Calculatorのように呼び出されますか?作成されたすべてのPDFをそのフォルダに直接保存することができます&上書きする代わりにそのフォルダを使用するには、既存のフォルダ

Sub GetFilenameForPDF() 
Dim strFileName As String, strB1 As String, strWorksheet As String 


strB1 = Range("B1").Value 
strWorksheet = ActiveSheet.Name 
strFileName = strB1 & " " & strWorksheet & " " & Format(Date, "DD-MM-YYYY") 




Sub SaveToPDF() 

Dim strFileName As String, strC3 As String, strWorksheet As String 
strB1 = Range("B1").Value 
strWorksheet = ActiveSheet.Name 
strFileName = strB1 & " " & strWorksheet & " " & Format(Date, "DD-MM-YYYY") 

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
    "D:\" & strFileName & ".pdf", _ 
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ 
    :=False, OpenAfterPublish:=True 
    End Sub 

** EDIT:

PDFを保存するための私が持っているコードは以下のとおりですまたはフォルダがないように、私は一時的な場所にファイルを作成したり、リダイレクトすることができる方法があります詰まっし、ユーザーは必要なときにPDFを保存/印刷することができますか?**

+1

'MkDir(" D:\ afolder ")' –

+0

@JeremyThompson私はそれを試みました - それを動作させることができませんでした。私はそのコード行をどこに置くのですか?私が最初、最後、そしてその間で試したので... – sam

+1

これを試して失敗した場合は、エラーを説明し、問題を再現するのに必要な最小限のコードを示してください。 [mcve]を参照してください。 –

答えて

0

私はあなたのVBAプロジェクトでは、FileSystemObjectオブジェクト

を使用して好む、Toos->参照設定]をクリックし、「Microsoftスクリプトランタイム」を追加します。あなたは、単一のフォルダやサブフォルダのツリーを作成するには、以下の機能を使用することができます

Dim fso as FileSystemObject 
Dim folderName as String 

Set fso = new FileSystemObject 
folderName = "D:\MyFolder" 
If fso.FolderExists(folderName) = false then 
    fso.CreateFolder folderName 
End If 

Dim strFileName As String, strC3 As String, strWorksheet As String 
strB1 = Range("B1").Value 
strWorksheet = ActiveSheet.Name 
strFileName = folderName + "\" + strB1 & " " & strWorksheet & " " & Format(Date, "DD-MM-YYYY") 

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
"D:\" & strFileName & ".pdf", _ 
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _ 
:=False, OpenAfterPublish:=True 
+0

こんにちは、 ご返信ありがとうございます! コードをコピーして試しましたが、今度はボタンを押してPDFにエクスポートすると「コンパイルエラー:外部プロシージャが無効です」というVBAエラーが表示され、4回目に「set」という単語が強調表示されますライン。何か案は? – sam

+0

私はまた、コードの周りにサブブラケットを追加して、PDFファイルのエクスポートボタンにそのサブクラスをリンクしようとしました しかし、今回は "コンパイルエラー:メソッドまたはデータメンバーが見つかりませんでした"と強調表示 ".exists" sub save()in yellow [img] – sam

+0

「外部プロシージャが無効です」というエラーの問題は、前のサブGetFilenameForPdf()から発生します。 End Subを使用して、そのSub、つまりSub SaveToPdf()の前に閉じていることを確認します。私はあなたの元の質問にそれを見ません。 – cbasah

0

次に、あなたのコードでは、ような何かを行います。この関数は、(VBA.FileSystem)MkDir関数を使用します。

Sub T() 
    Dim path_ As String 
     path_ = CreateFolderTree("C:\My folder", "Subfolder 1", "Subfolder 2") 

    Debug.Print path_ 

    'C:\My folder\Subfolder 1\Subfolder 2\ 
End Sub 
0

私は通常これを使用します:パスは、すでに複数の層があっても、それはそれを作成し、存在しない場合は

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long 

Public Sub MakeFullDir(strPath As String) 
    If Right(strPath, 1) <> "\" Then strPath = strPath & "\" 'Optional depending upon intent 
    MakeSureDirectoryPathExists strPath 
End Sub 

を、それを呼び出すために

Public Function CreateFolderTree(ByVal mainFolder As String, ParamArray args() As Variant) As String 
    On Error GoTo ErrProc 

    Dim path As String 
     path = mainFolder & IIf(Right(mainFolder, 1) <> "\", "\", vbNullString) 

    Dim idx As Long 
    For idx = LBound(args) To UBound(args) 
     If Len(Dir(path & args(idx), vbDirectory)) = 0 Then MkDir path & args(idx) 
     path = path & args(idx) & "\" 
    Next idx 

    CreateFolderTree = path 

Leave: 
    On Error GoTo 0 
    Exit Function 

ErrProc: 
    MsgBox Err.Description, vbCritical 
    Resume Leave 
End Function 

存在しないフォルダ。

例えば:C:\ aFolder \ bFolder \ cFolder \のみ aFolderこれはbFoldercFolderを行います(存在する場合)。

関連する問題