2017-12-29 6 views
-1

私はstackoverflowとmrexcelとこれに付随するいくつかの他のサイトで素晴らしいことを研究しました。要するに、情報をコピーしていくつかの変数と結合して、「エクスポート」という名前の範囲に入るテキスト文字列を作成するテンプレートがあります。この範囲を新しいブックにコピーして.txtファイルとして保存したいと思います。しかし、私はVBAに名前を付けて、ファイルを所定の場所[t:\ downloads]に保存したい。ファイル名は、ソースシート上の2つのセル(セルc1に格納されている)と(セルb3に格納されている)月/年の組み合わせである必要があります。たとえば、セルc1のアカウント番号が123456、b3の日付が12/25/2017の場合、ファイル名はt:\ downloads \ 123456.2017.12.txtと表示されます。VBAのコピー範囲をデバッグし、ファイル名としてセル参照を使用して保存する

これは、これまで私が持っているコードです:

Sub Foo_Tab() 
    Dim wbSource As Workbook 
    Dim wssource As Worksheet 
    Dim wbdest As Workbook 


'References 
    Set wbSource = ActiveWorkbook 
    Set wssource = ActiveSheet 
    Set wbdest = Workbooks.Add 
    acct = Cells("c1") 
    yr = Year(Cells("b3")) 
    mnth = Month(Cells("b3")) 


'Copy range on original sheet 
    wssource.Range("Export").Copy 

'Save in new workbook 
    wbdest.Worksheets(1).Cells(1, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats 
    Application.CutCopyMode = False 

'get file name from cells 
    Dim path As String 
    Dim full As String 
    Dim acct As String 
    Dim yr As String 
    Dim mnth As String 
    path = "Z:\Downloads\" 
    full = path + acct + "." + yr + "." + mnth + ".txt" 
    ActiveWorkbook.SaveAs filename:=full 
    wbdest.Close savechanges:=True 

End Sub 
+0

あなたは実際の問題が何であるかは言わないが、私はそれがここにあると思う。まず、 'Cells'内で範囲参照を呼び出すことはできません。 'Cells'は、(行、列の)引数を数値形式で...と期待しています。 '細胞(1,3)'。 'Range'を使用してセルアドレス:Range(" C1 ")'を使用します。次に、親ブックで「Cells」または「Range」への参照をすべて修飾します。たとえば、 'wbSource.Cells(1,3)'などです。書かれているように、コードは、明らかに空白になる、セルからデータを収集するために新しく追加されたブックを見ています。 –

+0

'.SaveAs'関数に' FileFormat:= xlTextWindows'を含めてください。 – Maldred

答えて

0

は(私はwbdestがアクティブworbookであることを前提とし、-4158は、.txt形式のためである)、これと

ActiveWorbook.SaveAs filename:=full 
wbdest.Close savechanges:=True 

を交換してみてください。

With wbdest 
     .SaveAs full, FileFormat:=-4158 
     .Close SaveChanges:=True 
End With 
関連する問題