これはこのサイトでの2番目の投稿であり、私はVBAに比較的慣れていません。
今日の質問は、
セルの値をパス文字列に追加して、ブックを保存するフォルダーを指定するにはどうすればよいですか。
Dim Path As String
Dim FileName1 As String
Dim FileName2 As String
Path = "D:\folder1\folder2\Projects\The FILES\theFILES\"FileName1"\
FileName1 = Range("B6")
FileName2 = Range("A1")
ActiveWorkbook.SaveAs Filename:=Path & FileName2 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
前もって感謝します!
述べられた質問への回答
Path = "D:\folder1\folder2\Projects\The FILES\theFILES\" & FileName1 & "\"
追加のフィードバックおよび修正されたコードその他のフィードバック。
回答する長い説明
文字列変数に値を割り当てる場合、最も一般的な方法は次のとおりです。
string = "This is my string value."
ただし、スクロールせずにすべてのテキストを開発画面に収めることができるように、次のコードのように、かなり長い文字列の構文でコードに表示されることがよくあります。
string = "This is my really, really, really long string value. I am making this " _
& "as long as I can, while also having something to write."
_
を削除して、すべてを1行に移動すると、次のようになります。
string = "This is my really, really, really long string value. I am making this " & "as long as I can, while also having something to write."
変数に割り当てられている文字列は、次のような方法で分割できることに注意してください。
string = "This is" & " my " & "string value."
' Returns the same result as:
string = "This is my string value."
さらに、文字列変数str_val = " my "
がある場合、置換を使用して上記のサンプルを次のように記述できます。
string = "This is" & str_val & "string value."
追加のフィードバック
現在、コードの順序(以下の元のコードを参照)は次のとおりです。
残念ながら、この順序に従うことは、ステップ2)では、FileName1
の値がまだ割り当てられていないため、""
の値がnull文字列であることを意味します。
したがって、従うべき順序は次のとおりです。
文字列内の追加の変数
@Davesexcelによって一時的に投稿された回答(その後変更)があり、文字列内のfolder1
およびfolder2
も変数であると想定していました。 代替コードを添付しました。
元のコード
Dim Path As String
Dim FileName1 As String
Dim FileName2 As String
Path = "D:\folder1\folder2\Projects\The FILES\theFILES\"FileName1"\
FileName1 = Range("B6")
FileName2 = Range("A1")
ActiveWorkbook.SaveAs Filename:=Path & FileName2 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
修正されたコード
Dim Path As String
Dim FileName1 As String
Dim FileName2 As String
FileName1 = Range("B6")
FileName2 = Range("A1")
Path = "D:\folder1\folder2\Projects\The FILES\theFILES\" & FileName1 & "\"
ActiveWorkbook.SaveAs Filename:=Path & FileName2 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
代替コード
Dim Path As String
Dim FileName1 As String
Dim FileName2 As String
FileName1 = Range("B6")
FileName2 = Range("A1")
Path = "D:\" & folder1 & "\" & folder2 & "\Projects\The FILES\theFILES\" & FileName1 & "\"
ActiveWorkbook.SaveAs Filename:=Path & FileName2 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
アンパサンド記号をいくつか削除しました。また、使用する前に変数の値を割り当てる必要があります。
Dim Path As String
Dim FileName1 As String
Dim FileName2 As String
FileName1 = Range("B6").Value
FileName2 = Range("A1").Value
Path = "D:\folder1\folder2\Projects\The FILES\theFILES\" & FileName1 & "\"
ActiveWorkbook.SaveAs Filename:=Path & FileName2 & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
コードは行ごとに実行されます。最初に正しい行が必要です。
Dim Path As String
Dim FileName1 As String
Dim FileName2 As String
FileName1 = Range("B6").Value
FileName2 = Range("A1")
Path = "D:\folder1\folder2\Projects\The FILES\theFILES\" & FileName1 & "\"
この行は間違っています:Path = "D:\ folder1\folder2\Projects\The FILES\theFILES \" FileName1 "\
... 3つの "マークが含まれているためです。オペレーティングシステム内のパス名には"文字が含まれていないため、実際のパスが何であるかはわかりません。ただし、VBA文字列の割り当てでは、文字列は2つの "文字だけで囲む必要があります。
"このような"
文字列内に文字「」を含める必要がある場合は、引用符を2重にする必要があります。たとえば、「この文字列には「文字が含まれています」という変数に文字列を割り当てるには、次のように記述する必要があります。
Str = "This string contains a "" character"
倍増に注意してください。
文字列を確認して、もう一度お試しください。
行は次のようになります。
Path = "D:\folder1\folder2\Projects\The FILES\theFILES\" & FileName1 & "\"
これが私の例です:
入力は次のとおりです。
https://i.stack.imgur.com/7TwhP.png
ここにも私が保存しているフォルダがあります:
https://i.stack.imgur.com/y2bOZ.png
Public Sub saveFile()
Dim path As String
Dim nameOfPath As String
Dim nameOfFile As String
nameOfFile = Cells(2, 1)
nameOfPath = Cells(1, 1)
path = "Z:\" & nameOfPath
ActiveWorkbook.SaveAs filename:=path & nameOfFile & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub