Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 从其他工作簿调用个人宏_Vba_Excel - Fatal编程技术网

Vba 从其他工作簿调用个人宏

Vba 从其他工作簿调用个人宏,vba,excel,Vba,Excel,我正在处理一个宏,它将从其他文件接收数据到共享模板。用户在共享工作簿中运行宏后,将更新另一个工作簿。我只是想让它尽可能容易访问 我不希望用户打开此模板并手动更新它。这不是重点。一切正常。当我从Developer->Macros->Run调用宏时,复制到模板的数据是正确的,并且更新也可以工作 但是,当我在代码中设置快捷方式>开发者->宏->选项,我用其他个人工作簿中的快捷方式调用宏,宏在打开共享工作簿后停止在中间。而且它不会使用其他工作簿中的数据进行更新 伙计们,我错过什么了吗?有什么想法吗 编辑

我正在处理一个宏,它将从其他文件接收数据到共享模板。用户在共享工作簿中运行宏后,将更新另一个工作簿。我只是想让它尽可能容易访问

我不希望用户打开此模板并手动更新它。这不是重点。一切正常。当我从
Developer->Macros->Run
调用宏时,复制到模板的数据是正确的,并且更新也可以工作

<>但是,当我在代码中设置快捷方式>开发者->宏->选项,我用其他个人工作簿中的快捷方式调用宏,宏在打开共享工作簿后停止在中间。而且它不会使用其他工作簿中的数据进行更新

伙计们,我错过什么了吗?有什么想法吗

编辑:

我的代码:

    Public Sub KPI()

    Application.ScreenUpdating = False

    KPI = "C:\KPI Template.xlsx"

    Workbooks.Open (KPI)

    '****** <--- macro stops here - no error

    pathT = "C:\"
    fileNN = "KPI"
    filePath = Dir(pathT)

    While True

        If InStr(1, filePath, fileNN) > 0 Then

            GoTo resume1
        End If

        filePath = Dir

    Wend
    resume1:

    Workbooks.Open (pathT & filePath), ReadOnly:=True

    KPI_FileName = Dir(KPI)

    r = 8
    k = 2
    LDay = Day(Date)

    Sh_Name = Workbooks(KPI_FileName).Sheets("Check").Cells(r, 2)

    Do While Workbooks(KPI_FileName).Sheets("Check").Cells(r, 2) <> ""

        Do While Workbooks(filePath).Sheets(Sh_Name).Cells(LDay + 7, k) <> ""

            Workbooks(KPI_FileName).Sheets("Check").Cells(r, k + 1) = Workbooks(filePath).Sheets(Sh_Name).Cells(LDay + 7, k)

        k = k + 1
        Loop

    r = r + 2
    k = 2
    Sh_Name = Workbooks(KPI_FileName).Sheets("Check").Cells(r, 2)
    Loop
公共子KPI()
Application.ScreenUpdating=False
KPI=“C:\KPI Template.xlsx”
工作簿。打开(KPI)
“*******0那么
转到简历1
如果结束
filePath=Dir
温德
简历1:
工作簿.Open(路径和文件路径),只读:=True
KPI_FileName=Dir(KPI)
r=8
k=2
LDay=天(日期)
Sh_Name=工作簿(KPI_文件名).工作表(“检查”).单元格(r,2)
Do While工作簿(KPI_文件名).Sheets(“Check”).Cells(r,2)”
Do While工作簿(文件路径).Sheets(Sh_名称).Cells(LDay+7,k)”“
工作簿(KPI_文件名).Sheets(“Check”).Cells(r,k+1)=工作簿(filePath).Sheets(Sh_名称).Cells(LDay+7,k)
k=k+1
环
r=r+2
k=2
Sh_Name=工作簿(KPI_文件名).工作表(“检查”).单元格(r,2)
环

结尾部分

问题标题的可能重复是重复的,但问题的主体不清楚。如果它不是一个复制品,请澄清。我使用了你的评论链接,我把宏在<代码>个人< /代码>作为代码>公共子< /代码>,但是当我通过按下快捷键EX.Cudit> Ctrl + Shift +K<代码>宏调用时,仍然在另一个工作簿中调用宏。在打开2个所需文件中的1个之后,宏停止在代码的中间。我想完成的是只需按快捷键即可从任何工作簿运行
PERSONAL
宏。我的意思是,当我从
Developer->Macros->run
手动运行宏时,所有代码都可以正常工作。没有错误,但每次我在任何其他工作簿中按快捷键时。代码在完成所有工作之前停止。我想知道为什么,也许我错过了一件简单的事情。你需要澄清一下。提供足够的信息,以便其他人能够重现问题。请阅读。实际上,您正在请求帮助调试不可见代码。问题标题的可能重复是重复的,但问题的主体不清楚。如果它不是一个复制品,请澄清。我使用了你的评论链接,我把宏在<代码>个人< /代码>作为代码>公共子< /代码>,但是当我通过按下快捷键EX.Cudit> Ctrl + Shift +K<代码>宏调用时,仍然在另一个工作簿中调用宏。在打开2个所需文件中的1个之后,宏停止在代码的中间。我想完成的是只需按快捷键即可从任何工作簿运行
PERSONAL
宏。我的意思是,当我从
Developer->Macros->run
手动运行宏时,所有代码都可以正常工作。没有错误,但每次我在任何其他工作簿中按快捷键时。代码在完成所有工作之前停止。我想知道为什么,也许我错过了一件简单的事情。你需要澄清一下。提供足够的信息,以便其他人能够重现问题。请阅读。实际上,您正在请求帮助调试不可见代码。