Excel vba 도구 모음에서 버튼을 누른 파일의 이름을 가져옵니다.

Lalachka

personal.xlsb 파일에 저장된 매크로가 있으며 현재 시트의 형식을 지정합니다. 그 매크로는 두 가지 방식으로 사용됩니다.

  1. 열려있는 파일의 도구 모음에있는 버튼을 눌러
  2. 다른 하위 / 프로 시저에서 호출 됨으로써

SELECT, ACTIVATE, PASTE 등을 사용하지 않고 (따라서 모든 통합 문서와 시트를 선언하고 WITH ...를 사용하여) 적절한 방식으로 매크로를 작성하려고했지만 그렇게하려면 다음을 알아야합니다. 매크로를 호출 한 파일의 이름이며 버튼과 프로 시저 모두에서 호출 될 때 작동해야합니다.

아래 코드를 게시하고 있지만 두 통합 문서간에 전환하지 않기 때문에 완전히 작동하지 않아서 설계된대로 작동하지 않습니다. 그리고 파일과 시트 이름을 얻는 방법을 모른다는 것을 깨달았 기 때문에 적절한 방식으로 코딩을 끝내지 않았습니다.

Option Explicit

    Public Sub FormatTheBasics()
    
        Dim CurLastColumn As Long, CurLastRow As Long
        
        Dim CurRowNum As Long, LastRow As Long, FirstRowOfSection As Long, LastRowOfSection As Long
        Dim CurCell As Variant, CurRange As Range
        Dim wbkM  As Workbook, wbkC  As Workbook
        Dim wksReplaceWords As Worksheet, wksFilesToExportEMail  As Worksheet, wksCopyFrom   As Worksheet, wksCopyTo   As Worksheet
        Dim rngCopyFrom As Range, rngCopyTo As Range
        Dim x     As Long
        Dim CurColumnLetter As String, CurColumnName As String, ReplaceFrom As String, ReplaceTo As String
    
        Application.EnableCancelKey = xlDisabled
     
        Set wbkM = Workbooks("Personal.xlsb")
        Set wksReplaceWords = wbkM.Sheets("ReplaceWords")
    
    
        Cells.Select
        With Selection.Font
            .Name = "Calibri"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = 1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
        
        Range("A1:" & MyColumnLetter(xlLastCol) & "1").Select
        
        Selection.Font.Bold = True
        
        With Selection.Interior
            .PatternColorIndex = 2
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = -0.149998474074526
            .PatternTintAndShade = 0
        End With
        
        Selection.AutoFilter
        
        Rows("2:2").Select
        ActiveWindow.FreezePanes = True
        
             
        For x = 1 To xlLastCol
             
            CurColumnLetter = MyColumnLetter(x)
            CurColumnName = StrConv(Range(CurColumnLetter & "1").Value, vbLowerCase)
            Range(CurColumnLetter & "1").Value = StrConv(CurColumnName, vbProperCase)
        
            CurRowNum = 2
        
        With wksReplaceWords
                LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    
                Set CurRange = .Range("C" & CurRowNum & ":C" & LastRow)
                For Each CurCell In CurRange
                    If CurCell <> "" Then
                    
                        ReplaceFrom = .Range("B" & CurRowNum).Value
                        ReplaceTo = CurCell
     
                        If InStr(1, CurColumnName, ReplaceFrom, vbTextCompare) > 0 Then
    Range(CurColumnLetter & "1").Replace what:=ReplaceFrom, replacement:=ReplaceTo, MatchCase:=True
    
                        End If
        
                    End If
                Next CurCell
            End With
                  
        Next x
        
        Cells.Select
        Cells.EntireColumn.AutoFit
    
        Columns("A:" & MyColumnLetter(xlLastCol)).Sort key1:=Range("A2"), order1:=xlAscending, Header:=xlYes
    
        Range("A2").Select
    
    End Sub
토르 벤 클라인

VBA 함수 내에서는 실행이 시작된 위치와 이유를 찾을 수있는 방법이 없습니다. 프로그래머의 입장에서는 호출 스택과 실행 컨텍스트를 조사 할 방법이 없습니다.

그래서 이것을 해결하는 방법? 가장 좋은 방법은 함수가 트리거 될 때 대상 통합 문서의 창이 앞에 있다고 가정 하여 ActiveSheet또는 ActiveWorkbook 한 번만 사용 하는 것입니다. 변수에 저장하고 이후에는 변수를 사용하십시오.

Public Sub DoStuff():
    Dim ws as Worksheet
    Set ws = ActiveSheet
    ws.Range("A1").value = "Hello World"
    ' ...
End Sub

이렇게하면 시트 감지 로직에서 결함을 발견 한 경우 맨 위에있는 코드를 개선하기 만하면됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Excel 파일의 모든 시트 이름을 순서대로 가져옵니다.

분류에서Dev

django에서 제출 버튼을 누른 후 입력 텍스트 요소의 값을 가져옵니다.

분류에서Dev

FileNotFoundException에서 파일의 파일 이름을 가져옵니다.

분류에서Dev

VBA는 Excel에서 Word 문서의 모든 스타일 항목을 가져옵니다.

분류에서Dev

파일로 구성된 파일 디렉토리를 가져 와서 모든 파일을 다른 폴더의 다른 이름을 가진 폴더에 씁니다.

분류에서Dev

VBA Excel은 GetFolder.Files에서 반환 된 파일 컬렉션에서 첫 번째 파일 이름을 가져옵니다.

분류에서Dev

C #에서 파일 이름과 파일 형식을 별도의 문자열로 가져옵니다.

분류에서Dev

지정된 폴더 이름을 사용하여 폴더 구조에서 파일 이름을 가져옵니다.

분류에서Dev

VBA는 폴더의 모든 파일을 Access로 가져옵니다.

분류에서Dev

다른 파일에없는 한 파일의 줄을 가져 오는 도구가 있습니까?

분류에서Dev

VBA는 CommandButton_Click () 이외의 버튼 클릭을 가져옵니다.

분류에서Dev

Excel vba 버튼을 사용하여 파일에 텍스트 추가

분류에서Dev

bash, 파일 이름의 시작 부분에서 처음 3 개의 동일한 문자가있는 마지막 파일을 모두 가져옵니다.

분류에서Dev

Excel에서 다른 열의 데이터로 그룹화 된 열의 비율을 가져옵니다.

분류에서Dev

Angular는 특정 폴더 내의 모든 파일 이름을 가져옵니다.

분류에서Dev

Parse.com-PFUser 객체의 이메일은 값이 있음에도 불구하고 nil을 가져옵니다.

분류에서Dev

find -name 후에 파일 이름을 가져옵니다. xargs

분류에서Dev

csv 파일 파이썬에서 한 열의 값을 다른 열로 가져옵니다.

분류에서Dev

Vue-test-utils 모의는 다른 구성 요소에서 응답을 가져옵니다.

분류에서Dev

Excel의 셀에 요일 이름을 어떻게 가져 옵니까?

분류에서Dev

Excel VBA-파일을 열려면 파일 이름에 .xls 추가

분류에서Dev

Excel : 다른 컴퓨터에서 동일한 파일을 열 때 VBA가 다른 모양 너비를보고 함

분류에서Dev

Whitch가 더 좋습니다 : 모든 것을 모든 파일로 가져 오거나 다른 파일에서 모든 것을 가져옵니다.

분류에서Dev

Excel에서 주어진 헤더 이름 열의 마지막 값을 가져옵니다.

분류에서Dev

중첩 된 XML 파일을 구문 분석하고 Python에서 이전 태그의 값을 가져옵니다.

분류에서Dev

Discord PY가 서버의 모든 구성원을 가져옵니다.

분류에서Dev

Excel 빠른 액세스 도구 모음에서 아이콘을 변경하는 방법은 무엇입니까?

분류에서Dev

MySQL에서 다음 열거 형 필드 값의 이름을 가져옵니다.

분류에서Dev

Laravel보기에서 해시 된 이름의 원래 경로와 파일 이름을 가져옵니다.

Related 관련 기사

  1. 1

    Excel 파일의 모든 시트 이름을 순서대로 가져옵니다.

  2. 2

    django에서 제출 버튼을 누른 후 입력 텍스트 요소의 값을 가져옵니다.

  3. 3

    FileNotFoundException에서 파일의 파일 이름을 가져옵니다.

  4. 4

    VBA는 Excel에서 Word 문서의 모든 스타일 항목을 가져옵니다.

  5. 5

    파일로 구성된 파일 디렉토리를 가져 와서 모든 파일을 다른 폴더의 다른 이름을 가진 폴더에 씁니다.

  6. 6

    VBA Excel은 GetFolder.Files에서 반환 된 파일 컬렉션에서 첫 번째 파일 이름을 가져옵니다.

  7. 7

    C #에서 파일 이름과 파일 형식을 별도의 문자열로 가져옵니다.

  8. 8

    지정된 폴더 이름을 사용하여 폴더 구조에서 파일 이름을 가져옵니다.

  9. 9

    VBA는 폴더의 모든 파일을 Access로 가져옵니다.

  10. 10

    다른 파일에없는 한 파일의 줄을 가져 오는 도구가 있습니까?

  11. 11

    VBA는 CommandButton_Click () 이외의 버튼 클릭을 가져옵니다.

  12. 12

    Excel vba 버튼을 사용하여 파일에 텍스트 추가

  13. 13

    bash, 파일 이름의 시작 부분에서 처음 3 개의 동일한 문자가있는 마지막 파일을 모두 가져옵니다.

  14. 14

    Excel에서 다른 열의 데이터로 그룹화 된 열의 비율을 가져옵니다.

  15. 15

    Angular는 특정 폴더 내의 모든 파일 이름을 가져옵니다.

  16. 16

    Parse.com-PFUser 객체의 이메일은 값이 있음에도 불구하고 nil을 가져옵니다.

  17. 17

    find -name 후에 파일 이름을 가져옵니다. xargs

  18. 18

    csv 파일 파이썬에서 한 열의 값을 다른 열로 가져옵니다.

  19. 19

    Vue-test-utils 모의는 다른 구성 요소에서 응답을 가져옵니다.

  20. 20

    Excel의 셀에 요일 이름을 어떻게 가져 옵니까?

  21. 21

    Excel VBA-파일을 열려면 파일 이름에 .xls 추가

  22. 22

    Excel : 다른 컴퓨터에서 동일한 파일을 열 때 VBA가 다른 모양 너비를보고 함

  23. 23

    Whitch가 더 좋습니다 : 모든 것을 모든 파일로 가져 오거나 다른 파일에서 모든 것을 가져옵니다.

  24. 24

    Excel에서 주어진 헤더 이름 열의 마지막 값을 가져옵니다.

  25. 25

    중첩 된 XML 파일을 구문 분석하고 Python에서 이전 태그의 값을 가져옵니다.

  26. 26

    Discord PY가 서버의 모든 구성원을 가져옵니다.

  27. 27

    Excel 빠른 액세스 도구 모음에서 아이콘을 변경하는 방법은 무엇입니까?

  28. 28

    MySQL에서 다음 열거 형 필드 값의 이름을 가져옵니다.

  29. 29

    Laravel보기에서 해시 된 이름의 원래 경로와 파일 이름을 가져옵니다.

뜨겁다태그

보관