X



Excel VBA 質問スレ Part67
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ 33da-3+hg)
垢版 |
2020/06/26(金) 02:01:29.56ID:uDfmpksE0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part66
https://mevius.5ch.net/test/read.cgi/tech/1589085825/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0953デフォルトの名無しさん (オッペケ Sr51-cLD7)
垢版 |
2020/08/28(金) 03:17:22.48ID:0Wmy1rK2r
>>951
CSVファイルではなく、CSVの文字列になります
これをファイルに保存することなくパースしたかったのですが、方法が見つかりませんでした。
セル内カンマやセル内改行も含むCSVでしたので、自分でパースするのもちょっと大変でした。
MITライセンスのコードを見つけたのでそれを組み込んで処理しようと思います。
ありがとうございました。
0955デフォルトの名無しさん (ワッチョイ 452c-VQ5f)
垢版 |
2020/08/28(金) 10:58:16.31ID:CzRmvnjE0
Ruby なら標準で、CSV モジュールが付いている。
他にも、JSON, YAML などもパースできる

プログラミングするなら、ちゃんとしたプログラミング言語を使わないと、ダメ!
汎用的な機能を、自作して使うと、バグってばかりで仕事にならない
0958デフォルトの名無しさん (ワッチョイ 6e63-VQ5f)
垢版 |
2020/08/28(金) 23:36:31.47ID:KRJ+x4lY0
エクセル2010を使ってます。
ファイル名の先頭に前月の年と月を付けたいと思い
下のような式を書きました。
本日動かすと「202007」と付きます。
しかし先頭の20を削除し2007としたいです。
式をどのようになおしたら良いか自力ではわかりません。
お恥ずかしいですがご教示いただきたく。
newfilename = Format(Year(DateSerial(Year(Date), Month(Date) - 1, Day(Date))), "00") _
& Format(Month(DateSerial(Year(Date), Month(Date) - 1, Day(Date))), "00") _
& currentfilename
0962デフォルトの名無しさん (ワッチョイ 6e63-VQ5f)
垢版 |
2020/08/29(土) 00:20:59.98ID:M2c3GV/+0
>>959
ヘルプといいますが色々なサイトを見ましたが私の頭では理解できず・・
やむを得ずお伺いしました
>>960
この式で出来ました!本当にありがとうございます!
0964デフォルトの名無しさん (ワッチョイ 118e-WkEz)
垢版 |
2020/08/29(土) 01:26:16.94ID:uG4P+RAn0
>>963
自分の意思で呼吸を30分止めてご覧
それができなければVBAを使う資格なし
0966デフォルトの名無しさん (ラクッペペ MM66-i8JQ)
垢版 |
2020/08/29(土) 04:49:38.60ID:OUCG9mQHM
>>965
はぃ、それで良いです
言葉足らずですみません
0967デフォルトの名無しさん (ブーイモ MMf6-xiBb)
垢版 |
2020/08/29(土) 05:11:12.22ID:nRBZReLEM
>>966
Sub Macro1()
  Dim s1 As String
  Dim s2 As String
  Dim s3 As String
  Dim c As String
  Dim i As Integer
  s1 = "001100-004400-007700" '入力
  s2 = ""
  s3 = ""
  For i = 1 To Len(s1)
    c = Mid(s1, i, 1)
    If "0" <= c And c <= "9" Then
      s2 = s2 & c
    Else
      If s2 <> "" Then
        s3 = s3 & s2 * 1 & c
        s2 = ""
      Else
        s3 = s3 & c
      End If
    End If
  Next
  If s2 <> "" Then
    s3 = s3 & s2 * 1
  End If
  Debug.Print s3 '出力
End Sub
0970デフォルトの名無しさん (ワッチョイ 6101-u5JS)
垢版 |
2020/08/29(土) 06:40:50.33ID:VAMGDei30
そんな難しいことしなくてもこれでよくないか

Sub test()

Dim testStr As String
Dim rtnStr As String
Dim cnvNm As Long

testStr = "000070-00100-01230"

For i = 1 To Len(testStr) + 1

s = Mid(testStr, i, 1)

'数値か判定
If (IsNumeric(s)) Then
strNum = strNum + s
Else
'数値に変換
cnvNm = Val(strNum)
rtnStr = rtnStr + Trim(str(cnvNm)) + s
strNum = ""
End If
Next
End Sub
0972デフォルトの名無しさん (ラクッペペ MM66-i8JQ)
垢版 |
2020/08/29(土) 07:17:10.36ID:OUCG9mQHM
区切りはハイフンだけです
すみません
分けて各々数字扱いすれば良かったですね
書いてみます
0973デフォルトの名無しさん (ワッチョイ 6101-u5JS)
垢版 |
2020/08/29(土) 08:56:00.81ID:VAMGDei30
デリミタが"-"だけならもっと簡単になるね

Sub test2()

Dim strArray() As String
Dim rtnStr As String

testStr = "000070-00100-01230"

strArray = Split(testStr, "-", , vbTextCompare)

For i = 0 To UBound(strArray)

rtnStr = rtnStr + Trim(str(Val(strArray(i))))

If(i <> UBound(strArray)) Then rtnStr = rtnStr + "-"
Next

End Sub

文字列で連結して返す必要なければsplitして数値変換でおわり
0976デフォルトの名無しさん (ワッチョイ 45cc-pyQU)
垢版 |
2020/08/29(土) 10:00:53.07ID:pUlaC/XX0
For r = 1 To 12000
処理
PDF出力

という処理をしているのですが、これだとPDFが12000ファイルになって、全て出力した後で結合するのですが
これを12000枚程度をPDF1ファイルで出力する方法をおしえてください
0977デフォルトの名無しさん (ブーイモ MMf6-xiBb)
垢版 |
2020/08/29(土) 10:07:03.64ID:m9X9gCs/M
Sub test2()
  Dim strArray() As String
  Dim testStr As String
  Dim rtnStr As String
  testStr = "000070-00100-01230"
  strArray = Split(testStr, "-")
  For i = 0 To UBound(strArray)
    strArray(i) = strArray(i) * 1
  Next
  rtnStr = Join(strArray, "-")
  Debug.Print rtnStr
End Sub
0980デフォルトの名無しさん (ワッチョイ 0201-YRmH)
垢版 |
2020/08/29(土) 10:47:46.31ID:lHm5nrxO0
>>973
Split使うならJoinも使おうよ…
Sub test2()

Dim strArray() As String
Dim rtnStr As String

testStr = "000070-00100-01230"

strArray = Split(testStr, "-", , vbTextCompare)

For i = 0 To UBound(strArray)
strArray(i) = Cstr(Val(strArray(i)))
Next

rtnStr = Join(strArray, "-")

End Sub
0983デフォルトの名無しさん (ワッチョイ 21d2-vZRt)
垢版 |
2020/08/29(土) 11:18:02.61ID:ebvcDddx0
ある言語だと
"00-001-02"split("-")map(asNumber)join("-")println
0985976 (ワッチョイ 45cc-pyQU)
垢版 |
2020/08/29(土) 13:57:00.39ID:pUlaC/XX0
>>978
1シートにはまとめられません。

>>979
日々の取引をデータベースに入力していて、そのデータベースから出力されたデータを取引伝票としてPDF化したいのですが
データベースソフトに取引伝票の書式が設定されていないので、エクセルで作ろうと思います。
1ページごと出力してフリーソフトで結合すると、12時間くらいかかっていたので、エクセルのPDF結合だとAcrobatPro
が必要になるそうなので、この方法もできません。

>>984
シート上に帳票を作り、その帳票をページごとに書き換えています。試していませんが、1シートだと行数が足りないです。
それと、ページごとに罫線とかの書式を作るのはつらいです。
0989デフォルトの名無しさん (ワッチョイ 822f-8BP0)
垢版 |
2020/08/29(土) 14:42:09.88ID:1Tm3n33G0
伝票とかだと保存義務とかあったりして、出力しておいておかないとダメな時もある

1シートで収まらないならある程度で分割してやるしかないし
罫線とか決まったフォーマットならコピーするだけ

が、EXCELでやるのが間違ってるな
ちゃんとした帳票ツール買って対応する言語使えよ
0994デフォルトの名無しさん (テテンテンテン MM66-nUCc)
垢版 |
2020/08/30(日) 00:09:48.26ID:HNjVBgM5M
>>985
Accessでやって下さい
0995デフォルトの名無しさん (ワッチョイ 6e63-8BP0)
垢版 |
2020/08/30(日) 07:04:48.97ID:ZpZWI99c0
IE制御で作る
てどういう意味です?
0996デフォルトの名無しさん (アウアウエー Sa0a-ifKp)
垢版 |
2020/08/30(日) 08:58:33.06ID:IZ41nY3ca
テキストファイルを読み込もうとしているのですが、ファイルがないとエラーが出ます。なにが原因でしょうか?
Sub func()
Dim folderPath As String: folderPath = "G:\Test"
Dim textLine, fileName As String
Dim fileToOpen As Integer
Dim i As Integer
fileName = folderPath & "01.txt"
fileToOpen = FreeFile()

Open fileName For Input As fileToOpen

i = 1

While Not EOF(fileToOpen)
Line Input #fileToOpen, textLine
Cells(i, "A").Value = textLine
i = i + 1
Wend
End Sub
1000デフォルトの名無しさん (アウアウエー Sa0a-ifKp)
垢版 |
2020/08/30(日) 09:13:38.94ID:IZ41nY3ca
フォルダパスに"\"が入っていませんでした。
ありがとうございます!
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 65日 7時間 12分 10秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況