【问题标题】:VBScript that exports filtered information from excel onto a webpage?将过滤后的信息从excel导出到网页的VBScript?
【发布时间】:2013-09-11 01:52:00
【问题描述】:

我对 VBScript 非常陌生,过去几天一直在尝试解决这个问题,搜索了数百个(字面意思)论坛/网站,但找不到满足我需求的解决方案,所以这里是 :P .

例如,我目前有一个包含大量客户详细信息的电子表格;

MPN |经理姓名 |问题?

077 |约翰·史密斯 |是的

077 |简约克 |没有

我正在尝试将信息提取到网页,甚至可能是一个新的 excel 文件,但可以选择仅显示对问题有“否”的单元格并过滤它们,以便管理员分开

到目前为止,我有;

Sub testing123()

    Workbooks.Open Filename:="P:\book.xls"
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 6
    ActiveSheet.Range("$B$4:$K$65536").AutoFilter Field:=10, Criteria1:= _
    "=Question", Operator:=xlOr, Criteria2:="=Yes"
    ActiveWorkbook.SaveAs Filename:="P:\book123.xls", FileFormat:=xlExcel8, _
    Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
    CreateBackup:=False

    ActiveWorkbook.Close

End Sub

上面的代码位于一个单独的 Excel 工作表中,它打开主工作簿,过滤信息(问题=是)并将其保存为不同的名称。 我的目标是能够将信息提取到不同的工作表上,但只直接提取过滤后的信息,并且可以根据经理姓名进行排序。

如果这很难理解,我很抱歉,对于没有显示相关代码,我深表歉意,但如果您需要更多信息,请告诉我

【问题讨论】:

    标签: html vba excel vbscript


    【解决方案1】:

    做这样的事情怎么样?我知道这与您正在做的事情不完全匹配,但这是另一种方法:

    Sub Test()
        Dim intSourceRowNum As Integer
        intSourceRowNum = 2
        Dim intDestRowNum As Integer
        intDestRowNum = 1
        Dim objSourceSheet As Worksheet
        Set objSourceSheet = ActiveWorkbook.Sheets(1)
        Dim objDestSheet As Worksheet
        Set objDestSheet = ActiveWorkbook.Sheets(2)
    
        Do Until IsEmpty(objSourceSheet.Cells(intSourceRowNum, 1))
            If (StrComp(objSourceSheet.Cells(intSourceRowNum, 3).Value, "Yes", vbTextCompare) = 0) Then
                objDestSheet.Cells(intDestRowNum, 1).Value = objSourceSheet.Cells(intSourceRowNum, 1).Value
                objDestSheet.Cells(intDestRowNum, 2).Value = objSourceSheet.Cells(intSourceRowNum, 2).Value
                objDestSheet.Cells(intDestRowNum, 3).Value = objSourceSheet.Cells(intSourceRowNum, 3).Value
                intDestRowNum = intDestRowNum + 1
            End If
    
            intSourceRowNum = intSourceRowNum + 1
        Loop
    End Sub
    

    基本上,它会遍历源工作表中包含数据的所有行,并且仅当源行符合您的条件时,才会将每个源行的值写入目标工作表。

    【讨论】:

    • 这听起来很棒,我回家后会尝试一下!非常感谢您的帮助:)
    • 它实际上什么也没做 :(
    • 什么意思?你能详细说明吗?我在构建代码时对其进行了测试,它确实有效。
    • 好吧,我将它添加为一个模块并将宏分配给一个按钮,按下 ot 并没有任何反应。真的很抱歉,我对此非常陌生
    • 我通过将光标放在 sub 的主体内然后单击“执行”按钮来测试 sub。您可以尝试在子例程内设置一个断点,看看您的宏按钮是否至少进入方法主体,然后从那里开始。
    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多