簡體   English   中英

如何打開保存在特定位置的 Excel 文件,使用 VBA 從工作表中的最后一個選項卡創建一個新選項卡

[英]How to open Excel file saved at specific location,Create a new tab as of last tab in a sheet using VBA

我不是來自軟件背景並試圖編寫宏以避免導致錯誤的重復工作。 請隨意提出可以使它變得更好的東西。我試圖從這個站點的不同程序中提取片段並使其工作。

先感謝您。

這就是我想要做的。 a)我正在嘗試打開保存在當前文件(比如文件 1)特定位置的 Excel 文件(比如文件 2)。 作品

b) 在文件 2 中創建一個與該文件中的最后一個選項卡相同的新選項卡, Works

c) 使用文件 1 中的 2 個不同單元格重命名創建的選項卡。(基於文件 1 單元格自動重命名會很好,但我只能管理要求我輸入但不重命名文件的彈出窗口)。 不工作/部分工作

d) 彈出以在不同的單元格中輸入名稱和另外 2 個輸入(我只能得到你的名字,我怎樣才能在 3 個不同的單元格中獲得 3 個輸入)不起作用/部分工作

e) 從文件 1 中復制 2 個單元格並復制到文件 2 新創建的選項卡中。 不起作用

這是我嘗試編寫的代碼。

Sub Filling_List()
Dim sPath As String, sFile As String, wb As Workbook, i As Integer

'Application.ScreenUpdating = False

sPath = "C:\Users\aricsonp\Desktop\Filling list macro\"
sFile = sPath & "ArF Filling List.xlsm"

Set wb = Workbooks.Open(sFile)

ActiveSheet.Copy After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = InputBox("New Name:")
If sName = "" Then Exit Sub

ActiveSheet.cell(3, "E") = InputBox("Your Name:")

' With ActiveSheet.Sheets("ArF Filling List (7)")
'.Range("B03").Value = uploader.Sheets("Que & Tsc Cal").Range("B02").Value
' .Range("B05").Value = uploader.Sheets("Que & Tsc Cal").Range("B01").Value
' End With


'Application.ScreenUpdating = True


End Sub

這里有一些提示。

1) 將Option Explicit放在頂部,以便檢查語法和聲明。 這將強制您聲明sNameuploader並設置它們的值。 i也已聲明但未分配。

2)您的代碼按原樣重命名了sheet 您直接從輸入框中分配給新添加的工作表,而不是存儲在變量中。

Worksheets(Worksheets.Count).Name = InputBox("New Name:")

假設變量sName實際上是用來保存這個的,並且你想從包含你正在運行的代碼(即ThisWorkbook )的工作簿中的 2 個單元格中獲取這個值:

sName = ThisWorkbook.Worksheets("Sheet1").Range("A1") & ThisWorkbook.Worksheets("Sheet1").Range("B1")

您可能希望將ThisWorkbook和您在其中引用的工作表聲明和分配為變量。

例如

Dim wb1 as Workbook
Dim ws1 as Worksheet 
Set wb1 = ThisWorkbook 
Set ws1 = ThisWorkbook.Worksheets("Sheet1") 'change as appropriate

3) 避免混合SheetsWorksheets集合。 除非你有圖表表,否則我更喜歡工作表集合。

4) 在大多數情況下,您希望與vbNullstring進行比較,而不是與空字符串文字 ("") 進行比較。 分配速度更快,使用更少的內存等。

If sName = vbNullString Then Exit Sub 

5)為單元格分配更多的值; 添加更多輸入框使用Cells而不是單元格,例如

ActiveSheet.Cells(4, "E") = InputBox("Your Age:")

6) 在新打開的工作簿、新添加的工作表中添加更多單元格的值; 使用wbsName變量來確保正確定位:

With wb.Worksheets(sName)

7) 您可能希望在自己的行的頂部聲明每個變量,即避免在一行上進行多個聲明。 使調試和發現任何隱式變體變得更容易。

因此,您可能會遇到以下情況:

Option Explicit

Public Sub Filling_List()

Dim sPath As String
Dim sFile As String
Dim wb As Workbook
'  Dim i As Integer ''not used
Dim sName As String 'add sName declaration
'Add declaration for uploader variable and set its value
Dim wb1 as Workbook
Dim ws1 as Worksheet 

Set wb1 = ThisWorkbook 
Set ws1 = ThisWorkbook.Worksheets("Sheet1")

Application.ScreenUpdating = False

sPath = "C:\Users\aricsonp\Desktop\Filling list macro\"
sFile = sPath & "ArF Filling List.xlsm"

Set wb = Workbooks.Open(sFile)

ActiveSheet.Copy After:=Worksheets(Worksheets.Count)

'Worksheets(Worksheets.Count).Name = InputBox("New Name:")

sName = ws1.Range("A1") & ws1.Range("B1") 'assign value from two cells

ActiveSheet.Name = sName

If sName = vbNullString Then Exit Sub 'compare against vbNullstring not empty string literal

With wb.Worksheets(sName)

    .Cells(3, "E") = InputBox("Your Name:")
    .Cells(4, "E") = InputBox("Your Age:")
    .Cells(5, "E") = InputBox("Your Occupation:")
    .Range("B03") = uploader.Worksheets("Que & Tsc Cal").Range("B02").Value2
    .Range("B05") = uploader.Worksheets("Que & Tsc Cal").Range("B01").Value2

End With

Application.ScreenUpdating = True

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM