Excel VBA工作薄 5.3多个工作薄数据汇总2判断文件是否打开

前景提要

今天我们接着上次的分享来继续,上次我们分享了在合并多个工作薄的过程中,将文件夹内Excel文件批量打开的操作,今天我们继续完善昨天的代码,在上节我们留下了一个悬念,如果在合并工作薄的过程中,出现了如下的提示


image.png

要如何处理,很多的人会说可以选择Y,没错这样操作的话,程序是可以继续执行的,但是如果不巧这个文件你刚刚修改了某些数据,如果你这个时候选择了Y,那么不好意思,你之前的所有改动都没有保存,你需要重新做一份新的数据,是不是很烦躁,所以在批量打开工作薄的时候,需要先判断当前工作薄是否已经被打开,如果被打开的话,我们就不要操作再次打开了。听起来似乎是一个判断,没错,今天我们就来看看这个判断要如何来写。

场景模拟

我们还是继续之前模拟的数据来分析,假设我们我们现在已经打开了京东2这个工作薄,并对其中的某些数据进行了修改,我们如果还是继续执行上节的代码的话,就会出现提示文件被打开的提示,如果选择Y会导致我们修改的数据没有报错,如果我们选择N,则会提示程序运行被中断,程序结束

image.png

方法分析

判断文件是否被打开,我们来想想如果是我们自己手工操作的话,我们如何判断工作薄是否被打开呢,当然就是看看当前已经打开的工作薄中是否有我们将要打开的工作薄,那么要如何去判断呢?很简单遍历所有已经打开的工作薄,然后读取已经被打开的工作薄,看看其中是否有我们要打开的那个工作薄,我们要判断天猫1的工作薄是否被打开,那么我们就遍历读取当前被打开的工作薄,看看他们的名字是否有叫做天猫1的,如果有,我们就不能再次执行打开的操作了,需要跳过打开的命令,直接读取数据,反之如果有没有天猫1的工作薄,我们既可以正常的打开操作了,来看下例子。

代码区

假设我们现在已经提前打开了京东2这个工作薄,并且更改了数据,但是还没有保存,我们执行下汇总程序

image.png

有报错,我们在调整下代码

Sub test()

Dim pathn, sth As Workbook

pathn = ThisWorkbook.Path

f = Dir(pathn & "\")

Do While f <> ""

    If f <> "test.xlsm" Then

        For Each sth In Workbooks

            If sth.Name = f Then

                GoTo line

            End If

        Next sth

        Workbooks.Open (pathn & "\" & f)

    End If

line:

    f = Dir()

Loop

End Sub

看看效果,在我们已经提前打开京东2这个工作薄的情况下,程序依然能够正常的运行,并且打开其他的工作薄,这样切好也满足了我们的要求,很完美,这里如果可以上传动画的话,效果应该会更加的明显,可以好像无法上传动画,那么脑海中恶补下这个过程吧

代码分析

For Each sth In Workbooks

            If sth.Name = f Then

                GoTo line

            End If

        Next sth

这里是遍历所有已经被打开的工作薄的意思,For Each sth In Workbooks就是这个目的

然后读取每个工作薄的名字,如果发现这个工作薄的名字正好和我们将要打开的工作薄的名字是相同的,那么就跳转去执行其他的代码,这里的goto line就是这样的意思,调准到line这一行


image.png

继续从这一行开始执行新的命令,新的命令就是继续准备打开下一个工作薄,当前已经被我们提前打开的工作薄京东2将会被关闭,也不会被再次打开,所以我们所作的数据操作也不会丢失了。我们来调试下,方便大家理解下程序执行的过程


image.png

当循环遍历的时候,如果碰到工作薄的名字等于我们要打开的工作薄的时候,我们看,程序不会执行打开的命令, 反而去执行调准的命令了。

image.png

大家领悟到了嘛?

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容