2016-12-28 64 views
1

私はVBAを初めて使用し、wsからwscsvへのコピーを作成し、後者を.csvファイルとして保存しようとしています。以下は私のサブルーチンです。VBA ActiveWorkbook.Saveasランタイムエラー1004

私が遭遇しています:

実行時エラー1004:アプリケーションこのラインで

未定義:

ActiveWorkbook.SaveAs Filename:=savedirectory, FileFormat:=xlCSV, ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges 

csvworkbook = ActiveWorkbook.Name 

マイコード

Sub AddNewWorkbook1(ws As Worksheet) 

    ws.Activate 
    MsgBox ("adding new workbook for" & ws.Name) 
    Dim wscsv As Excel.Workbook 
    Dim savedirectory As String 
    Dim currentworkbook As String 
    Dim csvworkbook As String 
    currentworkbook = ws.Name 

    savedirectory = '/Users/Desktop/Magnum/' & currentworkbook 

    Dim lrow As Long 
    lrow = Columns("A").End(xlDown).Row 

    Workbooks.Add 
    DisplayAlerts = False 
    ActiveWorkbook.SaveAs (Filename:=savedirectory, FileFormat:=xlCSV, ConflictResolution:=Excel.XlSaveConflictResolution.xlLocalSessionChanges) 

    csvworkbook = ActiveWorkbook.Name 

    Set wscsv = ActiveWorkbook 
    MsgBox ("Entering copying") 

    ws.Range(ws.Cells(2, 1), ws.Cells(lrow, 4)).Copy 
    wscsv.Sheets(1).Range("A1").PasteSpecial xlPasteValues 
    ws.Range(ws.Cells(2, "H"), ws.Cells(lrow, "H")).Copy 
    wscsv.Sheets(1).Range("E1").PasteSpecial xlPasteValues 
    ws.Range(ws.Cells(2, "E"), ws.Cells(lrow, "E")).Copy 
    wscsv.Sheets(1).Range("F1").PasteSpecial xlPasteValues 
    ws.Range(ws.Cells(2, "I"), ws.Cells(lrow, "I")).Copy 
    wscsv.Sheets(1).Range("G1").PasteSpecial xlPasteValues 
    lrow = wscsv.Sheets(1).Columns("A").End(xlDown).Row 
    wscsv.Sheets(1).Range(wscsv.Sheets(1).Cells(2, 1), wscsv.Sheets(1).Cells(lrow, 1)).NumberFormat = "mm/dd/yyyy" 
    wscsv.Sheets(1).Range("A1").Value = "Date" 
    wscsv.Sheets(1).Range("B1").Value = "open" 
    wscsv.Sheets(1).Range("C1").Value = "high" 
    wscsv.Sheets(1).Range("D1").Value = "low" 
    wscsv.Sheets(1).Range("E1").Value = "close" 
    wscsv.Sheets(1).Range("F1").Value = "volume" 
    wscsv.Sheets(1).Range("G1").Value = "cap" 
    wscsv.Save 
    wscsv.Close 

    MsgBox ("Copying complete") 

    End Sub 
+0

は '' CSV'をcurrentworkbook'されますか? http://stackoverflow.com/questions/17173898/how-to-do-a-save-as-in-vba-code-saving-my-current-excel-workbook-with-datesta – scorpion

+0

いいえ、そうではありません。その.xlsx。 –

答えて

0
ActiveWorkbook.SaveAs Filename:=savedirectory, FileFormat:=xlCSV, ConflictResolution:=xlLocalSessionChanges 

このようにお試しいただけますか?それは私のために働いた。あなたのエラー行の解決

+0

これを実行するためにMacを使用しているため、まだ動作しません。 –

1

、ちょうど使用:

ActiveWorkbook.SaveAs Filename:=savedirectory, FileFormat:=xlCSV, ConflictResolution:=2 

ConflictResolution = 2xlLocalSessionChangesに等しく、ここで読む:https://msdn.microsoft.com/en-us/library/office/ff194803.aspx

をしかし、あなたはws.ActivateActiveWorkbookcsvworkbook = ActiveWorkbook.Nameを使用しないことで、あなたのコードを向上させることができますが。新しいワークブックにwscsv(ワークブックとして定義)を直接割り当てることができます。以下のコードを参考にして、すべてのオブジェクトを参照してください。

コード

Option Explicit 

Sub AddNewWorkbook1(ws As Worksheet) 

MsgBox ("adding new workbook for " & ws.Name) 

Dim wscsv As Workbook 
Dim savedirectory As String 
Dim currentworkbook As String 
Dim csvworkbook As String 

currentworkbook = ws.Name 
savedirectory = "Your Path" & "\" & ws.Name 

Dim lrow As Long 
lrow = ws.Columns("A").End(xlDown).Row 

Set wscsv = Workbooks.Add 
DisplayAlerts = False 

wscsv.SaveAs Filename:=savedirectory, FileFormat:=xlCSV, ConflictResolution:=2 
csvworkbook = wscsv.Name 

MsgBox ("Entering copying") 

' do the rest of your copy >> paste 

End Sub 
+0

ありがとう!しかし、それはまだ仕事をして、同じエラーを与える。私はMacBook Airでこれを実行しています。それは原因である可能性がありますか? –

+0

です。私はPCを持っているかもしれないので、私はデバッグに手伝ってはいけません –

関連する問題