문제

내가 쓴 Excel VBA 매크로는 수입품에서 데이터 HTML 파일(로컬로 저장됩)기 전에 계산을 수행하는 데이터.

순간에 HTML 파일을 참조하는 절대 경로:

Workbooks.Open FileName:="C:\Documents and Settings\Senior Caterer\My Documents\Endurance Calculation\TRICATEndurance Summary.html"

그러나 내가 원하는 상대 경로를 사용하여 그것을 참조하십시오 반대로 절대적이다(이것은 나 때문에 배포하려 스프레드시트를 동료들지 않을 수도 있를 사용하여 동일한 폴더 구조).Html 파일을 excel 스프레드시트에 앉아 같은 폴더에 나는 생각하지 않을 것이 어려운,그러나 나는 그냥 완전히 할 수 없습니다.내가 있는 웹에서 검색하고 제안된 솔루션에는 모든 나타났 매우 복잡합니다.

내가 사용하고 Excel2000 년과 2002 년에서의 작업,그러나 내가 계획을 배포하고 싶다고 그것은 작업으로 많은 버전의 엑셀로 가능합니다.

어떤 제안이 기꺼이 받았습니다.

도움이 되었습니까?

해결책

yalestar가 말한 것을 명확히하기 위해, 이것은 당신에게 상대적인 경로를 줄 것입니다.

Workbooks.Open FileName:= ThisWorkbook.Path & "\TRICATEndurance Summary.html"

다른 팁

상대 경로 루트에 이들 중 하나를 사용할 수 있습니다.

ActiveWorkbook.Path
ThisWorkbook.Path
App.Path

나는 생각한 문제는 파일을 열어 경로 없이 작동하는 경우"현재 디렉토리"올바르게 설정되어 있습니다.

를 입력해 주십시오"디버그.인쇄 CurDir"에서 즉각적인 창 표시해야 하는 위치에 대한 기본 파일에서 설정된 도구...옵션이 있습니다.

나는 확실하지 않다 나는 완전히 행복과 그것은 아마도 때문에,그것은 약간의 유산 VB 명령하지만,당신이 할 수 있다:

ChDir ThisWorkbook.Path

나는 사용하는 것을 선호하 ThisWorkbook.경로를 구성하는 경로를 HTML 파일을.나의 큰 팬 FileSystemObject 에서 스크립트 런타임(는 항상 있을 것 같 설치),그래서 나는 행복해 다음과 같은 것이 가능합니다(설정 한 후,참조를 스크립트 런타임):

Const HTML_FILE_NAME As String = "my_input.html"

With New FileSystemObject
    With .OpenTextFile(.BuildPath(ThisWorkbook.Path, HTML_FILE_NAME), ForReading)
        ' Now we have a TextStream object that we can use to read the file
    End With
End With

제공하여 사용자에게 더 많은 유연성을 제공 할 수 있습니다. 브라우저 버튼 그들에게

Private Sub btn_browser_file_Click()
Dim xRow As Long
Dim sh1 As Worksheet
Dim xl_app As Excel.Application
Dim xl_wk As Excel.Workbook
Dim WS As Workbook
Dim xDirect$, xFname$, InitialFoldr$
InitialFoldr$ = "C:\"
With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = Application.DefaultFilePath & "\"
    .Title = "Please select a folder to list Files from"
    .InitialFileName = InitialFoldr$
    .Show
    Range("H13").Activate
    If .SelectedItems.Count <> 0 Then
        xDirect$ = .SelectedItems(1) & "\"
         Range("h12").Value = xDirect$
        xFname$ = Dir(xDirect$, 7)
        Do While xFname$ <> ""
         If (Format(FileDateTime(xDirect$ & "\" & xFname$), "MM/DD/YYYY") > Format(Range("H10").Value, "MM/DD/YYYY")) Then
            ActiveCell.Offset(xRow) = xFname$
            xRow = xRow + 1
            xFname$ = Dir
            Else
            xFname$ = Dir
            xRow = xRow
        End If
        Loop
    End If
End With

이 코드를 사용하면 쉽게 달성 할 수 있습니다. 테스트 된 코드

운영 체제의 현재 디렉토리가 사용중인 통합 문서의 경로 인 경우 Workbooks.Open FileName:= "TRICATEndurance Summary.html" 충분할 것입니다. 경로로 계산하는 경우 현재 디렉토리를 다음과 같이 참조 할 수 있습니다. . 그리고 \ 파일이 해당 DIR에 있다고 말하면 OS의 현재 디렉토리를 통합 문서의 경로로 변경 해야하는 경우 사용할 수 있습니다. ChDrive 그리고 ChDir 그렇게하려면.

ChDrive ThisWorkbook.Path
ChDir ThisWorkbook.Path
Workbooks.Open FileName:= ".\TRICATEndurance Summary.html"

나는 이것이 도움이 될 것이라고 생각한다. 매크로 아래에서 폴더가 있는지 확인하면 폴더를 생성하지 않고 해당 폴더에서 XLS 및 PDF 형식을 모두 저장하십시오. 폴더가 관련된 사람들과 공유되므로 모든 사람이 업데이트됩니다.

Sub PDF_laudo_e_Prod_SP_Sem_Ajuste_Preco()
'
' PDF_laudo_e_Prod_SP_Sem_Ajuste_Preco Macro
'

'


Dim MyFolder As String
Dim LaudoName As String
Dim NF1Name As String
Dim OrigFolder As String

MyFolder = ThisWorkbook.path & "\" & Sheets("Laudo").Range("C9")
LaudoName = Sheets("Laudo").Range("K27")
NF1Name = Sheets("PROD SP sem ajuste").Range("Q3")
OrigFolder = ThisWorkbook.path

Sheets("Laudo").Select
Columns("D:P").Select
Selection.EntireColumn.Hidden = True

If Dir(MyFolder, vbDirectory) <> "" Then
Sheets("Laudo").ExportAsFixedFormat Type:=xlTypePDF, filename:=MyFolder & "\" & LaudoName & ".pdf", Quality:=xlQualityMinimum, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

Sheets("PROD SP sem ajuste").ExportAsFixedFormat Type:=xlTypePDF, filename:=MyFolder & "\" & NF1Name & ".pdf", Quality:=xlQualityMinimum, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

ThisWorkbook.SaveAs filename:=MyFolder & "\" & LaudoName

Application.DisplayAlerts = False

ThisWorkbook.SaveAs filename:=OrigFolder & "\" & "Entregas e Instrucao Barter 2015 - beta"

Application.DisplayAlerts = True

Else
MkDir MyFolder
Sheets("Laudo").ExportAsFixedFormat Type:=xlTypePDF, filename:=MyFolder & "\" & LaudoName & ".pdf", Quality:=xlQualityMinimum, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

Sheets("PROD SP sem ajuste").ExportAsFixedFormat Type:=xlTypePDF, filename:=MyFolder & "\" & NF1Name & ".pdf", Quality:=xlQualityMinimum, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

ThisWorkbook.SaveAs filename:=MyFolder & "\" & LaudoName

Application.DisplayAlerts = False

ThisWorkbook.SaveAs filename:=OrigFolder & "\" & "Entregas e Instrucao Barter 2015 - beta"

Application.DisplayAlerts = True

End If

Sheets("Laudo").Select
Columns("C:Q").Select
Selection.EntireColumn.Hidden = False
Range("A1").Select

End Sub
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top