0

Excelマクロに次のコードがあります。私がする必要があるのは、文字列とフォーマットから出てくる日付文字列の間にスペースを入れることだけですが、文字列を削除すると文字列部分だけが得られ、明らかに日付だけが得られます。

filenamestring = "CMC_Rates " & Format(Now(), "yyyymmdd")

何か案は?

ここにもっとコードがあります

Dim filenamestring As String
Dim location As String
Dim passparam As String


location = Year(DateTime.Now) & "/" & Month(DateTime.Now)


filenamestring = "CMC_Rates " & Format(Now(), "yyyymmdd ") & Format(Range("EffTime").Value, "hhmm AMPM") & ".pdf"




passparam = location & "/" & filenamestring

Call Shell(Environ$("COMSPEC") & " /c \\atlanta2-0\MKTG\Rates\SaveFile.bat " & filenamestring, vbNormalFocus)

SaveFile.bat にはこれが含まれています

pscp -batch -pw password filename.xlsx admin@172.17.1.5:/Path/%1

バットを開くと、パラメーターは CMC_Rates だけであると表示されますが、スペースを取り出してすべてまとめると機能します。

4

1 に答える 1

2

問題は次の行にあります: (読みやすくするために分割)

Call Shell(Environ$("COMSPEC") _
  & " /c \\atlanta2-0\MKTG\Rates\SaveFile.bat " _
  & filenamestring, vbNormalFocus)

Excel がバッチ ファイルを呼び出すと、COMSPECインタープリターはファイル名を複数の引数として扱います。これは、スペースが区切り記号として使用されるためです。ファイル名が 1 つの引数であり、多数ではないことを示すには、引用符で囲む必要があります"

これにより、行が次のように変更されます。

Call Shell(Environ$("COMSPEC") _
  & " /c \\atlanta2-0\MKTG\Rates\SaveFile.bat " _
  & chr(34) & filenamestring & chr(34), vbNormalFocus)
于 2013-01-17T15:48:43.593 に答える