excel 如何在不同的工作簿中声明每个范围的一部分是动态变量的范围?

0x6upsns  于 2023-04-22  发布在  其他
关注(0)|答案(3)|浏览(124)

不知何故,我试图在下面完善的声明有时有效,然后无法与
对象工作表范围失败
留言
下面是最简单形式的代码,以便您可以看到我正在尝试做什么。如果有关系,我的计划是在源工作簿Sheet1 Print代码的末尾调用此宏,从而自动化当前用户的手动过程。

Public Sub CopyExportToTracking()

    Dim kng As Range
 
    Set kng = Sheet4.Range("$A$1:$K$ & Range("M1")")
    
    kng.Copy
    
    Workbooks.Open ("C:\Users\Michelle\Documents\Maple Inventory System\YYYY\YYYY SYRUP MANAGEMENT\test YYYY SYRUP INVENTORY TRACKING.xlsm")
    
    Dim vng As Range
    
    Set vng = Sheet8.Range("$B$" & Range("Y1"))
    
    vng.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
    
End Sub
vxf3dgd4

vxf3dgd41#

我假设vng在你刚刚打开的工作簿中。尝试完全限定范围。我还修复了几个语法错误,并使用了工作表名称引用(你需要更改)。

Public Sub CopyExportToTracking()

    Dim kng As Range
 
    With Sheet4
        Set kng = .Range("$A$1:$K$" & .Range("M1"))
    End With

    kng.Copy
    
    Dim wb As Workbook
    Set wb = Workbooks.Open("C:\Users\Michelle\Documents\Maple Inventory System\YYYY\YYYY SYRUP MANAGEMENT\test YYYY SYRUP INVENTORY TRACKING.xlsm")
    
    Dim vng As Range
    
    
    Set vng = wb.Seets("Sheet8").Range("$B$" & Sheet4.Range("Y1"))
    
    vng.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
    
End Sub

这假定源工作簿中Sheet4上的M1和Y1中有一些数字。

pgky5nke

pgky5nke2#

目前还不清楚您是否尝试使用工作表代号来引用Tracker中的工作表,但如果您尝试使用工作表代号,则可以使用以下方法。

Public Sub CopyExportToTracking()

    Dim wbTracker As Workbook
 
    'You should consider giving your worksheet meaningful
    '  CodeNames such as (eg) "SoldItems"
    Sheet4.Range("$A$1:$K$" & Sheet4.Range("M1").value).copy
    
    Set wbTracker = Workbooks.Open("C:\Users\Michelle\Documents\Maple Inventory System\" & _
                      "YYYY\YYYY SYRUP MANAGEMENT\test YYYY SYRUP INVENTORY TRACKING.xlsm")
    
    'Paste to sheet in tracker identified by its CodeName
    SheetByCodename(wbTracker, "Sheet8").Range("$B$" & Sheet4.Range("Y1").value) _
                           .PasteSpecial Paste:=xlPasteValuesAndNumberFormats
    wbTracker.Save
    
End Sub

'return a worksheet from workbook `wb` whose codeName matches `codeName`
Function SheetByCodename(wb As Workbook, codeName As String) As Worksheet
    Dim ws As Worksheet
    For Each ws In wb.Worksheets
        If ws.codeName = codeName Then
            Set SheetByCodename = ws
            Exit Function 'done
        End If
    Next ws
    'if we got here the function returns `Nothing`
End Function
qlzsbp2j

qlzsbp2j3#

我应该从源代码和跟踪工作簿的默认主工作表开始记录原始宏。我的错误是打开源代码工作表,而不是通常的着陆工作表和其他工作簿工作表,我会写到以前关闭的工作表,所以我没有记录到这些工作表的导航。此外,我已经添加了一个Workbook_Open代码到另一个工作簿中,这样当它打开时,它就有一个“正常”的着陆页。很丑,但其他人永远不会看到它。谢谢大家的帮助。

Sheets("Export Table").Select
Range("$A$1:$K$" & Range("M1")).Select
Application.CutCopyMode = False
Selection.Copy
Workbooks.Open Filename:= _
    "C:\Users\Michelle\Documents\Maple Inventory System\YYYY\YYYY SYRUP 
MANAGEMENT\test YYYY SYRUP INVENTORY TRACKING.xlsm"
ActiveWindow.ScrollWorkbookTabs Sheets:=5
Sheets("Sales").Select
Range("$B$" & (1 + Range("Y1"))).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False

相关问题