programing

FileDialog를 사용하여 워크북을 열고 Excel VBA에서 조작합니다.

closeapi 2023. 8. 29. 20:38
반응형

FileDialog를 사용하여 워크북을 열고 Excel VBA에서 조작합니다.

Excel 매크로를 사용하는 방법을 배우고 있으며 다음 코드를 찾았습니다.

Dim fd As Office.FileDialog

Set fd = Application.FileDialog(msoFileDialogFilePicker)

With fd

    .AllowMultiSelect = False
    .Title = "Please select the file to kill his non colored cells"
    .Filters.Add "Excel", "*.xls"
    .Filters.Add "All", "*.*"

    If .Show = True Then
        txtFileName = .SelectedItems(1)
    End If

End With

이 코드를 누르면 파일 대화 상자가 열립니다.이전에 열어본 엑셀 파일을 덮어쓰지 않고 어떻게 하면 선택한 엑셀 파일을 열 수 있습니까?

프랭크, 고마워요. 알았어요.여기 작업 코드가 있습니다.

Option Explicit
Private Sub CommandButton1_Click()

  Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
  Dim fd As Office.FileDialog

  Set fd = Application.FileDialog(msoFileDialogFilePicker)

  With fd
    .AllowMultiSelect = False
    .Title = "Please select the file."
    .Filters.Clear
    .Filters.Add "Excel 2003", "*.xls?"

    If .Show = True Then
      fileName = Dir(.SelectedItems(1))

    End If
  End With

  Application.ScreenUpdating = False
  Application.DisplayAlerts = False

  Workbooks.Open (fileName)

  For Each sheet In Workbooks(fileName).Worksheets
    total = Workbooks("import-sheets.xlsm").Worksheets.Count
    Workbooks(fileName).Worksheets(sheet.Name).Copy _
        after:=Workbooks("import-sheets.xlsm").Worksheets(total)
  Next sheet

  Workbooks(fileName).Close

  Application.ScreenUpdating = True
  Application.DisplayAlerts = True

End Sub

제가 당신의 질문을 오해하지 않는 한, 당신은 읽기 전용 파일을 열면 됩니다.여기 어떠한 확인도 없이 간단한 예가 있습니다.

사용자로부터 파일 경로를 가져오려면 다음 기능을 사용합니다.

Private Function get_user_specified_filepath() As String
    'or use the other code example here.
    Dim fd As Office.FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    fd.AllowMultiSelect = False
    fd.Title = "Please select the file."
    get_user_specified_filepath = fd.SelectedItems(1)
End Function

그런 다음 파일 읽기 전용을 열고 변수에 할당합니다.

dim wb as workbook
set wb = Workbooks.Open(get_user_specified_filepath(), ReadOnly:=True)

언급URL : https://stackoverflow.com/questions/25153342/open-a-workbook-using-filedialog-and-manipulate-it-in-excel-vba

반응형