Gizport
1 回答
0
Share (facebook)
91
view
全般

原寸になってしまう不具合を私も解決したいと思いましたので別件で上げさ...

原寸になってしまう不具合を私も解決したいと思いましたので別件で上げさせてもらいます。
まず比較するため、枠を別にしない以前頂いたものを撮影日にしてほしくリクエストさせて下さい。
こちらは使い勝手が良いので Sub AddPicTest6()

Dim FName As Variant
Dim i As Long
Dim MyCell, Cnt
Dim R As Long, C As Integer
Dim Sakuseibi As Date, Sh As Shape

On Error GoTo ErrorInf

FName = Application.GetOpenFilename _
("jpg,*.jpg,jpeg,*.jpeg,bmp,*.bmp,gif,*.gif,png,*.png", , MultiSelect:=True)

If Not IsArray(FName) Then
MsgBox "取り消されました。", vbInformation
Exit Sub
End If

Worksheets(1).Activate
R = ActiveCell.Row: C = 1

Application.ScreenUpdating = False

For i = LBound(FName) To UBound(FName)

Sakuseibi = Left(FileDateTime(FName(i)), 10)

With ActiveSheet.Cells(R, C).MergeArea
L = .Left: T = .Top: W = .Width: H = .Height 'Shapeの位置決め
End With

Set Sh = ActiveSheet.Shapes.AddShape(msoShapeRectangle, L, T, W, H)
Cnt = ActiveSheet.Shapes.Count

ActiveSheet.Shapes(Cnt).Name = "画像_" & Mid(FName(i), InStrRev(FName(i), "") + 1)

Range("B" & R).Value = ActiveSheet.Shapes(Cnt).Name
Range("B" & R).Font.ColorIndex = 2

With Sh
.Fill.UserPicture picturefile:=FName(i) 'Pictureの指定
.TextFrame.Characters.Text = Format(Sakuseibi, "yyyy/mm/dd") ' 画像ファイルの作成日
.TextFrame.Characters.Font.Color = RGB(255, 130, i)
'文字色設定
.TextFrame.Characters.Font.Size = 16 ' 文字サイズ
.TextFrame.Characters.Font.Bold = True '太字
.TextFrame.VerticalAlignment = xlVAlignBottom '垂直方向の位置
.TextFrame.HorizontalAlignment = xlHAlignRight '水平方向の位置
End With

Set Sh = Nothing
Set MyCell = Nothing

R = R + 16

Next i

Application.ScreenUpdating = True

MsgBox UBound(FName) & " 枚の画像を挿入しました", vbInformation

Exit Sub

ErrorInf:
MsgBox "エラー番号:" & Err.Number
MsgBox "エラー内容:" & Err.Description

End Sub

このソースです。日付は貼りついてしまいますが、使い勝手も良く
作成日を撮影日として改良、追加で枠線もできれば取りたいので
宜しくお願い致します。その後どこが不具合か比較してみてみたいので・・・
Yahoo!知恵袋 4629日前
コメントする
お気に入り
1
質問者が選んだベストソリューション
ご質問内でのコ-ドが、

”原寸に戻っていない”

という、ことが前提なら、
下記コ-ドをお試しください。

注意
Excel2007・ トリミング不可
ファイルサイズが膨らむ可能性
◇ Excel2010 ・トリミングは可能 ◇

3行目からの結合セルに対応

追加

☆ 1シ-ト、結合セル3個に対応
☆ ファイル選択で、3個以上選択した場合、次のシ-トに挿入
☆ シ-トが足りない場合は、終了

回答文字数を超えてしまいますので シ-トの自動作成はいたしません w


' 修正版 第8弾 ww

Sub AddPicTest8()

Dim FName As Variant
Dim i As Long
Dim MyCell, Cnt
Dim R As Long, C As Integer
Dim ShtIdx As Integer, ShtCnt As Integer
Dim Sh As Shape
Dim Shell As Object, Folder As Object,Target As String
Dim StrDate As Variant, Fn As String
Dim L As Double, T As Double
Dim W As Double, H As Double

On Error GoTo Err

FName = Application.GetOpenFilename _
("jpg,*.jpg,jpeg,*.jpeg,bmp,*.bmp,gif,*.gif,png,*.png", , MultiSelect:=True)

If Not IsArray(FName) Then
MsgBox "取り消されました。", vbInformation
Exit Sub
End If

ShtIdx = ActiveSheet.Index
R = ActiveCell.Row: C = 1

Call BubbleSort_Str(FName, True, vbTextCompare)

Application.ScreenUpdating = False

For i = LBound(FName) To UBound(FName)

ShtCnt = ThisWorkbook.Worksheets.Count
If ShtCnt < ShtIdx Then
MsgBox "画像挿入のためのワ-クシ-トが足りません。", vbCritical
Exit Sub
End If

Worksheets(ShtIdx).Activate

Pth = Left(FName(i), InStrRev(FName(i), ""))
Fn = Mid(FName(i), InStrRev(FName(i), "") + 1)

Set Shell = CreateObject("Shell.Application")
Set Folder = Shell.Namespace(Pth)
Target = Dir(Pth & Fn)
' ↓ 撮影日取得::Xp等の場合は、項目番号は "25" で ↓
StrDate = Folder.GetDetailsOf(Folder.ParseName(Target), 12)

With ActiveSheet.Cells(R, C).MergeArea
L = .Left: T = .Top: W = .Width: H = .Height 'Shapeの位置決め
End With

Set Sh = ActiveSheet.Shapes.AddShape(msoShapeRectangle, L, T, W, H)
Cnt = ActiveSheet.Shapes.Count

ActiveSheet.Shapes(Cnt).Name = R & "行_画像_" & Mid(FName(i), InStrRev(FName(i), "") + 1)

Range("B" & R).Value = ActiveSheet.Shapes(Cnt).Name
Range("B" & R).Font.ColorIndex = 2

With Sh
.Fill.UserPicture picturefile:=FName(i) 'Pictureの指定
.TextFrame.Characters.Text = StrDate '撮影日
.TextFrame.Characters.Font.Color = RGB(204, 0, 1) '文字色設定
.TextFrame.Characters.Font.Size = 16 '文字サイズ
.TextFrame.Characters.Font.Bold = True '太字
.TextFrame.VerticalAlignment = xlVAlignBottom '垂直方向の位置
.TextFrame.HorizontalAlignment = xlHAlignRight '水平方向の位置
End With

If R = 35 Then
ShtIdx = ShtIdx + 1
R = 3
Else
R = R + 16
End If

Set Sh = Nothing
Set MyCell = Nothing

Next i

Application.ScreenUpdating = True

MsgBox UBound(FName) & " 枚の画像を挿入しました", vbInformation

Exit Sub

Err:
MsgBox "エラー番号:" & Err.Number
MsgBox "エラー内容:" & Err.Description

End Sub

Private Sub BubbleSort_Str( _
ByRef Source As Variant, _
Optional ByVal SortAsc As Boolean = True, _
Optional ByVal Compare As VbCompareMethod = vbTextCompare)

If Not IsArray(Source) Then Exit Sub

Dim i As Long, j As Long
Dim vntTmp As Variant
For i = LBound(Source) To UBound(Source) - 1
For j = LBound(Source) To LBound(Source) + UBound(Source) - i - 1
If StrComp(Source(IIf(SortAsc, j, j + 1)), _
Source(IIf(SortAsc, j + 1, j)), Compare) = 1 Then
vntTmp = Source(j)
Source(j) = Source(j + 1)
Source(j + 1) = vntTmp
End If
Next j
Next i

End Sub



' 画像削除用1
' 例 A3セルが最上部の画像削除の場合は、B3セルを選択して実行
' 例 A19セルが最上部の画像削除の場合は、B19セルを選択して実行で

Sub ShpDel()
Dim Sh As Shape, R As Long

On Error GoTo Err

Application.ScreenUpdating = False

R = ActiveCell.Row

ActiveSheet.Shapes(ActiveCell.Value).Delete

Range("B" & R).ClearContents

Application.ScreenUpdating = True

Exit Sub

Err:

Application.ScreenUpdating = True
MsgBox "エラー番号:" & Err.Number
MsgBox "エラー内容:" & Err.Description

End Sub


' 画像削除用2
' シ-ト単位でアクテイブシ-トの全画像

Sub SheetShpAllDel()
Dim Sh As Shape

On Error GoTo Err

Application.ScreenUpdating = False

For Each Sh In ActiveSheet.Shapes
Sh.Delete
Next

Range("B1:B49").ClearContents

Application.ScreenUpdating = True

Exit Sub

Err:

Application.ScreenUpdating = True

MsgBox "エラー番号:" & Err.Number
MsgBox "エラー内容:" & Err.Description

End Sub
Yahoo!知恵袋 4629日前
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
その他の解決方法を知っていますか?
回答する
全般
44
Views
質問者が納得こんにちわ。 なるほど、 「Offsetを使うことに違和感がある。もっとシンプルに出来るのではないか。」 ということですね。 ご想像の通り、コードの書き方にはいくつかのやり方があります。 このような方法のほうが腑に落ちるのではないでしょうか。 うまくいくといいですね。 (手元にサンプルがないためデバッグしておりませんがご容赦ください。) For i = 3 To Sh1Row '検索値設定 Sh1Det = Sh1.Cells(i, "C").Value For h = 2 To...
3758日前view44
全般
49
Views
質問者が納得adb shell とコマンドを送ってやると 通常shell@android:/ $ と表示される所、shell@android:/ # と表示されればroot権限がとれてます。 そのあとはsuperuserのサイトあたりからsuバイナリを落として shell@android:/ # mount -o rw,remount /system /system shell@android:/ # dd if=/data/local/tmp/su of=/system/bin/su shell@android:/...
3953日前view49
全般
53
Views
質問者が納得機種選びの参考に http://www.nttdocomo.co.jp/product/search/detail/index.html スマートフォンのシムカードは別物です。使いやすいかどうかは人により違うので店頭の実機を触って自分で確認するのが良いでしょう。
4288日前view53
全般
61
Views
質問者が納得若干制約も有りますが・・・ 携帯をXi対応のスマホに機種変してみてはどうでしょうか? SH-10Bの方は、Xi端末のテザリング接続を使い、パケット0で 運用できます。(SH-10Bの月々サポートの条件が分かりませんが・・・) ちなみに、テザリング使用を前提とした場合は、Xiエリアであろうが なかろうが、Xiの方が得です。 3G専用のスマホだと、テザリングをすると料金が高くなりますので。 ちなみに、Xiは基本プランが専用のちょっと3Gのプラントは異なる ものなので、その点は注意が必要です。 後、蛇...
4469日前view61
全般
126
Views
質問者が納得BB9ならできるはずですよ。 ただ、使えない機能(カメラ&ビデオ/FMトランスミッターなど)が あったりするので実用的にどうなのか考える必要があるかと… 元々のDonutはそのままに、リカバリー領域にFroyoを 入れてしまうことでデュアルブートを実現しているので、 万が一の時にリカバリーが使えないという危険が伴いますので、 それなりの覚悟を持って臨む必要があると思います。 =追記= ↓こちらのサイトを参考にされると、PCなしでもデュアルブート化できるっぽいです。 もちろん万一の...
4477日前view126

取扱説明書・マニュアル

1127view
http://www.nttdocomo.co.jp/.../SH-10B_J_All.pdf
322 ページ14.99 MB
もっと見る

関連製品のQ&A