Win10에서 작동하도록하기 위해 아래의 VBA 코드를 어떻게 수정할 수 있습니까? 그것은 Win8.1에서 잘 작동합니다. 내 Win10 컴퓨터에서 디렉토리를 생성하지만 CSV를 저장할 수 없습니다.Excel 매크로가 Win8.1에서 csv를 저장할 수 있지만 Win10에서 저장/작업을 중단 함
이 코드는 나 자신이 데이터 가져 오기 코드 (소스 : http://investexcel.net)에 CSV 저장 기능을 추가하여 작성한 추가 부분입니다.
Run-time error 1004: Application defined or object defined error
누르면 디버그가 나를 취 아래
이 오류가있어 취소 누르면 전체 매크로를 실행하는 동안 내가받은 오류 메시지 (Application.DisplayAlerts를 한 후 = 참)'16.csdv' cannot be accessed. The file may be corrupted, located on a server that is not responding, or read-only. (Options - Retry/Cancel)
입니다 이 부분의 코드 (노란색으로 강조 표시)
전체 코드 본문은 CSV를 저장합니다.
Dim strName As String
Dim strDirname, Path, strDefpath As String
Dim FName As String
On Error Resume Next ' If directory exist goto next line
'Now we check if export folder exists. If not then it gets created here
If Len(Dir("Z:\MyBackfill\Extracts\", vbDirectory)) = 0 Then
MkDir "Z:\MyBackfill\Extracts\"
End If
strDirname = Format(CStr(Now), "DDMMMYY") ' New directory name
strDefpath = "Z:\MyBackfill\Extracts\"
MkDir strDefpath & strDirname
Path = strDefpath & strDirname & "\" 'create total string
dt = Format(CStr(Now), "DDMMMYY HHMMSS")
Worksheets("Data").Activate
Range("G8").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.NumberFormat = "dd-MM-yy HH:mm:ss"
Columns("G:G").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("G:G").Select
Application.CutCopyMode = False
With ActiveSheet
lLastRow = .Columns("G:G").Cells(.Rows.Count, 1).End(xlUp).Row
ReDim arrDate(1 To lLastRow) As Long
ReDim arrTime(1 To lLastRow) As Double
arrDateTimes = .Range("G1:G" & lLastRow).Value
For lRow = LBound(arrDateTimes) To UBound(arrDateTimes)
arrDate(lRow) = Int(arrDateTimes(lRow, 1))
arrTime(lRow) = arrDateTimes(lRow, 1) - arrDate(lRow)
Next
.Range("H1:H" & lLastRow).Value = WorksheetFunction.Transpose(arrDate)
.Range("I1:I" & lLastRow).Value = WorksheetFunction.Transpose(arrTime)
.Range("H1:H" & lLastRow).NumberFormat = "dd-mm-yy"
.Range("I1:I" & lLastRow).NumberFormat = "hh:mm:ss"
End With
' Selection.TextToColumns Destination:=Range("G1"), DataType:=xlDelimited, _
' TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
' Semicolon:=False, Comma:=True, Space:=True, Other:=False, FieldInfo:= _
' Array(1, 2), TrailingMinusNumbers:=True
Range("G8").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.NumberFormat = "dd-MM-yy"
Range("H8").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.NumberFormat = "HH:mm:ss"
Columns("H:I").Select
Selection.Cut
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Columns("Z:I").Select
Selection.Delete Shift:=xlToLeft
Range("B8").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.NumberFormat = "dd-MM-yy"
Range("C8").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.NumberFormat = "HH:mm:ss"
Range("A8").Select
ActiveCell.FormulaR1C1 = "=Parameters!R[5]C[1]"
Range("A8").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A8").Select
Application.CutCopyMode = False
'Selection.AutoFill Destination:=Range("A8:A4520")
Selection.AutoFill Destination:=Range("A8:A" & Range("B" & Rows.Count).End(xlUp).Row)
'Range("A8:A4520").Select
Columns("G:G").Select
Selection.Cut
Columns("E:E").Select
Selection.Insert Shift:=xlToRight
Columns("D:D").Select
Selection.Cut
Columns("H:H").Select
Selection.Insert Shift:=xlToRight
Rows("1:7").Select
Range("A7").Activate
Selection.Delete Shift:=xlUp
'ADDING 59 to Seconds for correct backfill//////////////////////////////////////////
Dim cell As Range
For Each cell In Range("C1", Range("C1").End(xlDown))
cell.Value = Left$(cell.Value, 6) & "59"
Next
'Filename = "GFill" & " " & DataSheet.Range("A1").Value & " " & dt & " " & "FROM" & "_" & DataSheet.Range("B1").Value & ".csv"
Filename = "GFill" & " " & "NIFTY" & " " & dt & " " & "FROM" & "_" & DataSheet.Range("B1").Value & ".csv"
FName = Path & Filename
Cells.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
'ChDir "C:\Users\Vaibhav\Desktop"
ActiveSheet.SaveAs Filename:=FName, _
FileFormat:=xlCSV, CreateBackup:=False
ActiveWorkbook.Save
ActiveWindow.Close
Selection.QueryTable.Delete
Selection.ClearContents
Range("A1").Select
ActiveWorkbook.Save
오류 메시지가 있습니까? 그렇다면 어디에서? –
죄송합니다. 본문 본문에 오류 줄을 추가하십시오. 잠시 후에 수표를 찍어주세요. – Vaibhav
글쎄, 선택 및 선택 방법과 활성 객체를 사용하여 아무 일도 일어나지 않을 수 있습니다. 당신이 신뢰할 수있는 엑셀을 원한다면 VBA 매크로는이 목발의 사용을 멈추고 범위 객체와 메소드, 그리고 객체 변수를 대신 사용하기 시작합니다. – RBarryYoung