2016-08-26 26 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 

End Subの

私はすでに絵の大きさを得るが、私は整数にその文字列を変換することはできません、 CIntでもValでも、数字だけが含まれています。私はここで何が欠けていますか?答えをありがとう。

+0

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

+0

シートに元のサイズの画像を追加してそこからサイズを読み取っても問題ありませんか? – cyboashu

+0

残念ながら、それは遠くでは機能しません。これはちょうどテストに過ぎず、何百もの大きな画像(600 dpi、tif)が読み込まれるため、この方法は長くて戸惑っているようです。しかし、とにかく、ありがとうございました – FPeter

答えて

1

コード

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

以下でxmm = Val(Left(dimen, InStr(dimen, "x") - 2))

この行を交換し、あなただけのオリジナルの寸法で画像を挿入し、そこからの高さと幅を読み取ることができます。 https://stackoverflow.com/a/39151519/3961708

+0

ありがとう、それは働いています。私が間違っていたことを教えてくれませんか? – FPeter

+0

素晴らしいあなたのコードでは、instrの後に '?'をつけた文字列を取得していました。 'Val'を実行し、param文字列に数字以外の文字が含まれていると、' Val'は失敗します。だから'Val("?10 ")'は動作しません。だから、私はちょうどdimen文字列をトリミングして '?'文字を始めから終わりまで取り除いていました。文字が読めない場合、VBAでは '?'に変換されます。 – cyboashu

関連する問題