2013-08-25 2 views
1

VBA 응용 프로그램을 실행하는 동안이 오류가 발생했습니다. 나는이 오류가 내 코드의 다음 줄과 관련이 있다고 생각한다.런타임 오류 '1004'메서드 '_Workbook'개체의 '저장'에 실패했습니다.

이것은 전체 코드이다.

LDate = Date 
LDate = Mid(LDate, 4, 2) 
If LDate > 8 Then 
Sheets("a").Cells(13, "H").Value = Sheets("a").Cells(13, "H").Value + 1000 
Else 
Sheets("a").Cells(13, "H").Value = Sheets("a").Cells(13, "H").Value + 1 
End If 
ActiveWorkbook.Save 

누군가이 오류의 원인과 해결 방법을 설명해 줄 수 있습니까?

아래의 의견을 읽으십시오.

첫 번째 버튼을 클릭하면 실행되는 서브 루틴입니다.

Sub import() 
Dim Filt As String 
Dim FilterIndex As Integer 
Dim Title As String 
Dim FileName As Variant 
Dim finalrow As Integer 
Dim alldata As String 
Dim temp As String 
Dim oFSO As New FileSystemObject 
Dim oFS As TextStream 

'Filt = "Cst Files (*.txt),*.txt" 
'Title = "Select a cst File to Import" 
'FileName = Application.GetOpenFilename(FileFilter:=Filt, Title:=Title) 
'If FileName = False Then 
'MsgBox "No File Was Selected" 
'Exit Sub 
'End If 

'Call TestReference 

' Open the file dialog 
Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker) 
diaFolder.AllowMultiSelect = False 
diaFolder.Show 
If diaFolder.SelectedItems.Count <> 0 Then 
folderpath = diaFolder.SelectedItems(1) 
folderpath = folderpath & "\" 
'MsgBox diaFolder.SelectedItems(1) 

Set diaFolder = Nothing 

'RefreshSheet 
On Error Resume Next 
temp = folderpath & "*.txt" 
sFile = Dir(temp) 

Do Until sFile = "" 
inputRow = Sheets("RawData").Range("A" & Rows.Count).End(xlUp).Row + 1 
FileName = folderpath & sFile 
Set oFS = oFSO.OpenTextFile(FileName) 
Dim content As String 
    content = oFS.ReadAll 
content = Mid(content, 4, Len(content) - 3) 
With Sheets("RawData").Range("A" & inputRow) 
     .NumberFormat = "@" 
     .Value = content 
End With 

oFS.Close 
Set oFS = Nothing 

alldata = "" 
finalrow = Sheets("RawData").Cells(Rows.Count, 1).End(xlUp).Row 
Sheets("RawData").Activate 
For i = inputRow To finalrow 
alldata = alldata & Cells(i, "A").Value & " " 
Cells(i, "A").Value = "" 
Next i 
Cells(inputRow, "B").Value = alldata 

temp = StrReverse(FileName) 
temp = Left(temp, InStr(1, temp, "\") - 1) 
temp = StrReverse(temp) 
temp = Left(temp, InStr(1, temp, ".") - 1) 
Cells(inputRow, "A").Value = temp 
Sheets("RawData").Cells(inputRow, "A").NumberFormat = "@" 
sFile = Dir() 
Loop 
Else 
MsgBox ("No Folder Selected") 
End If 
End Sub 

이 매크로를 실행 한 후이 코드의 워크 시트 액세스를 중단하는 방법은 무엇입니까?

+1

이전에 저장 한 파일 (예 : myMacro.xlsm)을 여는 중이거나 Excel을 시작하고이 코드를 팝업 파일에 쓰는 중입니까? – varocarbas

+0

통합 문서에서 저장 아이콘을 수동으로 클릭하면 어떻게됩니까? –

+0

@varocarbas 이전에 저장 한 파일을 열려고합니다. – Foreever

답변

4

은 코드을 리팩터링해야한다고 생각하지만, .Save() 메서드로 호출 된 올바른 통합 문서를 참조해야합니다.

Workbooks("Insert_Workbook_Name_Here.xlsm").Save 

통합 문서 이름과 확장자 (.xlsm, .XLS, .XLSX) 당신이 실제로 저장하고자하는 파일과 일치하는지 확인하십시오.

+0

코딩하는 동안 이것을 고려할 것입니다. 감사합니다. – Foreever

+0

아니 upvote ... ?? –

+0

이것은 실제로 나쁜 코드입니다 ... 통합 문서 파일 이름을 코드로 하드 ​​코딩하는 것은 나쁜 습관입니다. 가능하면 코드 명을 사용하십시오. WorkbookCodeName.Save가 더 좋습니다. – jDave1984

-1

이 오류는 내가 작성한 매크로에서도 발생했습니다. 대화 상자를 닫을 코드가 있습니다. 로드 된 통합 문서가 "마지막으로 저장"복사에서 이었기 때문에

Private Sub CancelButton_Click() 
    Unload Me 
ThisWorkbook.Save 
    End 
End Sub 

나는 때문에 원래이 열려있는 동안 무슨 일이 있었 업데이트 재부팅 같은 오류가 발생했습니다. 미래에 그것을 피하는 방법을 모르지만 누군가에게 도움이 될 것이라고 생각했습니다.

관련 문제