Добавление функции вставки имени файла в макрос - PullRequest
0 голосов
/ 22 февраля 2019

Мне нужна помощь с получением импортированного имени файла, вставленного на лист в Excel.Я получил этот код из какого-то места в сети и просто хочу, чтобы импортированное имя файла было заполнено в ячейке на рабочем листе под названием «Отчет LOGSTAT», который уже существует в книге.

Вот макрос, который у меня есть

Option Explicit

' ************************************************
' Variables For File Open Dialogue Box
' ************************************************
Public strDialogueFileTitle As String
Public strFilt As String
Public intFilterIndex As Integer
Public strCancel As String
Public strWorkbookNameAndPath As String
Public strWorkbookName As String
Public strWorksheetName As String

Public Sub OpenAFileAndCopyData()
Dim wkbMasterWorkbook As Workbook
Dim wksMasterWorksheet As Worksheet
Dim wkbImportedWorkbook As Workbook
Dim wksImportedWorksheet As Worksheet
Dim rngImportCopyRange As Range

Application.ScreenUpdating = False
Set wkbMasterWorkbook = ThisWorkbook
Set wksMasterWorksheet = Sheets("READIsim Output")

' ****************************************************************************
' Set Up Filters For Which Files Should Show In The Open File Dialog Box
' ****************************************************************************
strFilt = "CSV Files (*.csv),*.csv,"

' ****************************************************************************
' Set Up The Prompt In The Dialogue Box
' ****************************************************************************
intFilterIndex = 1
strDialogueFileTitle = "Select The Workbook You Want To Import"

' ****************************************************************************
' Present the Open File Dialogue To The User
' ****************************************************************************
Call OpenFileDialogue

' ****************************************************************************
' Notify The User If No File Was Successfully Opened
' ****************************************************************************
If strCancel = "Y" Then
    MsgBox ("An Open Error Occurred Importing Your File Selection")
    Exit Sub
End If

' ****************************************************************************
' Set Imported Workbook and Worksheet Variables
' ****************************************************************************
Set wkbImportedWorkbook = ActiveWorkbook
Set wksImportedWorksheet = wkbImportedWorkbook.Sheets(1)


' ****************************************************************************
' Choose This Or The Next
' Copy The Data (Paste Special Will Be The Next Example)
' ****************************************************************************
Set rngImportCopyRange = Range(wksImportedWorksheet.Cells(1, 1), Cells(500, 1)).EntireRow
rngImportCopyRange.Copy wksMasterWorksheet.Cells(1, 1)
wkbMasterWorkbook.Activate
Application.DisplayAlerts = False
wkbImportedWorkbook.Close Savechanges:=False
Application.DisplayAlerts = True

wksMasterWorksheet.Activate
wksMasterWorksheet.Cells(1, 1).Select

Application.ScreenUpdating = True
End Sub

Private Sub OpenFileDialogue()

' ************************************************
' Display a File Open Dialogue Box For The User
' ************************************************
strCancel = "N"
strWorkbookNameAndPath = Application.GetOpenFilename _
    (FileFilter:=strFilt, _
     FilterIndex:=intFilterIndex, _
     Title:=strDialogueFileTitle)

' ************************************************
' Exit If No File Selected
' ************************************************
If strWorkbookNameAndPath = "" Then
    MsgBox ("No Filename Selected")
    strCancel = "Y"
    Exit Sub
ElseIf strWorkbookNameAndPath = "False" Then
    MsgBox ("You Clicked The Cancel Button")
    strCancel = "Y"
    Exit Sub
End If

' ******************************************************
' Now That You Have The User Selected File Name, Open It
' ******************************************************
Workbooks.Open strWorkbookNameAndPath

ActiveSheet.Columns("B:AN").NumberFormat = "General"

End Sub

Спасибо за помощь.

1 Ответ

0 голосов
/ 22 февраля 2019

Ваша третья последняя строка кода:

Workbooks.Open strWorkbookNameAndPath

После этой строки вы можете добавить

MsgBox strWorkbookNameAndPath

, чтобы получить msgBox с именем файла, который вы открыли.

Вы можете использовать

Debug.Print strWorkbookNameAndPath

, чтобы увидеть имя открытого файла в ближайшем окне (Ctrl G в VBE).

С командой

Worksheets("LOGSTAT Report").Range("A1").Value = strWorkbookNameAndPath

имя файла вставлено в ячейку «A1» на листе «Отчет LOGSTAT».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...