2016-08-26 35 views
0

這是代碼:不能把字符串轉換爲整數或雙

Sub imagesize() 
Dim selection As Range 
Dim rng As Range 
Dim objShell As Object 
Dim objFolder As Object 
Dim objFile As Object 
Dim dimen As String 
Dim xmm As Double 
Dim ymm As Integer 
Set objShell = CreateObject("Shell.Application") 
Set selection = Application.selection 

For Each rng In selection.Cells 
    Set objFolder = objShell.Namespace("C:\Users\Desktop\") 
    Set objFile = objFolder.ParseName("try.tif") 
    dimen = objFile.ExtendedProperty("Dimensions") 
    xmm = Val(Left(dimen, InStr(dimen, "x") - 2)) 
    Cells(rng.Row, rng.Column).Value = xmm 
Next rng 

末次

我已經得到的圖片的尺寸,但我不能說字符串轉換成整數,既不與CInt也不Val,但它只包含數字。我在這裏錯過了什麼?感謝您的答案。

+0

http://www.dotnetperls.com/parse-vbnet –

+0

如果在表格中添加原始尺寸的圖片,然後從中讀取尺寸將適合您? – cyboashu

+0

不幸的是,這不會有很長的路要走。這只是一個測試,它會讀取數百個大型圖片(600 dpi,tif),所以這種方式似乎很漫長並且很糟糕。但無論如何,謝謝 – FPeter

回答

1

替換該行xmm = Val(Left(dimen, InStr(dimen, "x") - 2))

與下面的代碼

If dimen <> "" Then 
    dimen = Mid(dimen, 2, Len(dimen) - 2) 
    xmm = CDbl(Split(dimen, "x")(0)) 
    ymm = CDbl(Split(dimen, "x")(1)) 
End If 

或者,你可以插入與原始尺寸圖像,並從那裏讀出的高度和寬度。 https://stackoverflow.com/a/39151519/3961708

+0

謝謝,它的工作。你能告訴我我做錯了什麼嗎? – FPeter

+0

很好。在你的代碼中,在instr之後你得到了一個帶'?'的字符串。當您執行'Val'並且參數字符串包含任何非數字字符時,'Val'失敗。所以例如瓦爾(「?10」)'不起作用。所以我只修剪了維度字符串以從開始和結束中刪除'?'字符。在VBA中,如果字符不可讀,它將轉換爲'?' – cyboashu

相關問題