2009-07-26 100 views
2

我從.xls文件導出.bas文件,如此處所述:Exporting A VBComponent Code Module To A Text File將其檢入SVN回購。Excel VBE不一致導出

我遇到了以下問題,這些問題導致文件中變量名稱的外殼變化實際上不是真實的(或者至少不相關)。

之類的語句,這些得到重新格式化/ recased:

rngTenors.Cells(i, 1) 
changes into 
rngTenors.cells(i, 1) 

(微妙的,但仍然是不同的,它被用diff工具,我用撿到並隱藏在這個產生的噪聲對文件的實際變化)

任何想法,以防止這種情況發生,將不勝感激。

回答

1

我正在做類似的事情,但沒有看到你正在經歷什麼。我沒有使用相同的導出例程,但乍一看看起來很相似。

有幾個問題。

1)您是否使用option explicit,並 你有一個名爲cell 隨時隨地變量?

2)如果您提交,然後進行一些更改,導出.bas文件並再次提交,diff是什麼樣的?

3)您是否在可能正在改變大小寫的代碼識別編輯器(例如:Ultraedit)中打開和區分.bas文件?

我只是猜測......但如果您將變量的名稱命名爲方法或屬性,VB編輯器的大寫字母可能會很奇怪。另外我不明白爲什麼你的出口將不一致地出口.Cell我猜如果它出口到.cell那麼它應該總是出口到.cell而不是一個問題。

這些都只是一些想法,好運:)

+0

感謝您的反饋Mark,我正在使用選項顯式。我將在明天搜索我的代碼以獲取名爲cell的變量。關於2),差異一般看起來像他們應該(除了引入這個額外的不需要的差異時)。 3)我使用winmerge作爲我的差異工具(我認爲它不是代碼感知的) 我認爲用'衝突'變量名的解釋聽起來很可能,將會跟進,非常感謝您的幫助! – 2009-07-26 20:05:11

0

事實上,我發現一些代碼如上建議。

dim cell 

我現在已經改名爲這個變量,因爲沒有重新格式化時有發生。我期望並希望這已經解決了這個問題。非常感謝您的幫助!

1

的VBE保持變量名稱的內部緩存,包括的外殼,所以即使你找到了一個叫cell變量,並將其更名爲別的東西,VBA仍認爲這是一個有效的名稱,所以它在所有文本的所有用法中保留套管。

你就可以欺騙的VBE到重置變量外殼(這也適用於對方法外殼問題太)暫時聲明一個變量與正確的外殼:

Public Cell as String 

,然後刪除該變量。然後你應該發現所有的外殼在你的項目中(以及任何引用它的項目)都是固定的。